Jyrki Alakuijala, Ph.D. Google, Inc.
Vincent Rabaud, Ph.D., Google, Inc.
Terakhir diperbarui: 01-08-2017
Abstrak -- Kami membandingkan penggunaan resourceencoder/decoder WebP dengan PNG dalam mode lossy dan lossy. Kami menggunakan korpus yang berisi 12.000 gambar PNG transparan yang dipilih secara acak dari web, dan pengukuran yang lebih sederhana untuk menunjukkan variasi performa. Kami telah mengompresi PNG dalam korpus kami untuk membandingkan gambar WebP dengan PNG yang dioptimalkan ukuran. Dalam hasil penelusuran, kami menunjukkan bahwa WebP adalah pengganti PNG yang baik untuk digunakan di web terkait ukuran dan kecepatan pemrosesan.
Pengantar
WebP mendukung gambar stateless dan transparan, yang menjadikannya alternatif untuk format PNG. Banyak teknik dasar yang digunakan dalam kompresi PNG, seperti coding kamus, coding Huffman, dan transformasi pengindeksan warna juga didukung di WebP, yang menghasilkan kecepatan dan kepadatan kompresi serupa dalam kasus terburuk. Pada saat yang sama, sejumlah fitur baru -- seperti kode entropi terpisah untuk saluran warna yang berbeda, lokalitas 2D jarak referensi ke belakang, dan cache warna dari warna yang baru-baru ini digunakan -- memungkinkan peningkatan kepadatan kompresi pada sebagian besar gambar.
Dalam pekerjaan ini, kami membandingkan performa WebP dengan PNG yang sangat dikompresi menggunakan pngcrush dan ZopfliPNG. Kami mengompresi korpus referensi gambar web kami menggunakan praktik terbaik, dan membandingkan kompresi WebP tanpa pengurangan dan lossy dengan korpus ini. Selain korpus referensi, kami memilih dua gambar yang lebih besar, satu fotografi dan gambar lainnya, untuk benchmark penggunaan kecepatan dan memori.
Kecepatan decoding lebih cepat dari PNG telah ditunjukkan, serta kompresi denser 23% daripada yang dapat dicapai menggunakan format PNG hari ini. Kami menyimpulkan bahwa WebP adalah pengganti yang lebih efisien untuk format gambar PNG hari ini. Selanjutnya, kompresi gambar lossy dengan dukungan alfa lossy memberikan kemungkinan lebih lanjut dalam mempercepat situs web.
Metode
Alat command line
Kami menggunakan alat command line berikut untuk mengukur performa:
cwebp dan dwebp. Alat ini merupakan bagian dari library libwebp (dikompilasi dari head).
melakukan konversi. Ini adalah bagian alat command line dari software ImageMagick (6.7.7-10 2017-07-21).
pngcrush 1.8.12 (30 Juli 2017)
ZopfliPNG (17 Juli 2017)
Kita menggunakan alat command line dengan tanda kontrol masing-masing. Misalnya, jika kita merujuk ke cwebp -q 1 -m 0, itu berarti alat cwebp telah dipicu dengan tanda -q 1 dan -m 0.
Corpora Gambar
Tiga korpora dipilih:
Satu gambar fotografi (Gambar 1),
Satu gambar grafis dengan tembus pandang (Gambar 2), dan
Korpus web: 12.000 gambar PNG yang dipilih secara acak dengan transparansi atau tidak, di-crawl dari Internet. Gambar PNG ini dioptimalkan melalui konversi, pngcrush, ZopfliPNG, dan versi terkecil setiap gambar dipertimbangkan untuk studi ini.
Gambar 1. Gambar fotografi, 1024 x 752 piksel. Berapi api "Jaipur Maharaja Brass Band" Chassepierre Belgia, Penulis: Luc Viatur, Foto dilisensikan berdasarkan lisensi Creative Commons Attribution-Share Alike 3.0 Unported. Situs penulis ada di sini.
Gambar 2. Gambar grafis, 1024 x 752 piksel. Gambar kolase dari Alat Diagram Google
Untuk mengukur kemampuan penuh format yang ada, PNG, kami telah mengompresi semua gambar PNG asli ini menggunakan beberapa metode:
Clamp ke 8 bit per komponen: konversi input.png -depth 8 output.png
ImageMagick(1) tanpa prediktor: konversi input.png -quality 90 output-candidate.png
ImageMagick dengan prediktor adaptif: mengonversi input.png -quality 95 output-candidate.png
Pngcrush(2): pngcrush -brute -rem tEXt -rem tIME -rem iTXt -rem zTXt -rem gAMA -rem cHRM -rem iCCP -rem sRGB -rem alla -rem text input.png output-candidate.
ZopfliPNG(3): zopflipng --lossy_transparan input.png output-candidate.png
ZopfliPNG dengan semua filter: zopflipng --iterations=500 --filter=01234mepb --lossy_8bit --lossy_transparan input.png output-candidate.png
Hasil
Kami menghitung kepadatan kompresi untuk setiap gambar dalam korpus web, relatif terhadap ukuran gambar PNG yang dioptimalkan untuk tiga metode:
WebP WebP (setelan default)
WebP WebP dengan ukuran terkecil (-m 6 -q 100)
WebP terbaik dan WebP lossy dengan alfa (setelan default).
Kami mengurutkan faktor kompresi ini, dan memplotnya pada Gambar 3.
Gambar 3. Kepadatan kompresi PNG digunakan sebagai referensi, pada 1.0. Gambar yang sama dikompresi menggunakan metode lossy dan lossy. Untuk setiap gambar, rasio ukuran terhadap PNG terkompresi akan dihitung, dan rasio ukuran diurutkan, serta ditampilkan untuk kompresi lossy dan lossy. Untuk kurva kompresi lossy, kompresi lossy dipilih dalam kasus yang menghasilkan gambar WebP yang lebih kecil.
WebP melampaui kepadatan kompresi PNG untuk libpng dengan kualitas maksimum (konversi) serta ZopfliPNG (Tabel 1), dengan kecepatan encoding (Tabel 2), dan decoding (Tabel 3) yang kira-kira sebanding dengan kecepatan PNG.
Tabel 1. Rata-rata bit per piksel untuk ketiga korpora menggunakan metode kompresi yang berbeda.
Kumpulan Gambar | konversi -kualitas 95 | ZopfPNG | WebP lossy -q 0 -m 1 | WebP WebP (setelan default) | WebP lossy -m 6 -q 100 | WebP lossy dengan alfa |
---|---|---|---|---|---|---|
foto | 12,3 | 12,2 | 10.5 | 10.1 | 9,83 | 0,81 |
vulgar | 1,36 | 1,05 | 0,88 | 0,71 | 0,70 | 0,51 |
web | 6,85 | 5,05 | 4,42 | 4,04 | 3,96 | 1,92 |
Tabel 2. Rata-rata waktu encoding untuk korpora kompresi dan untuk metode kompresi yang berbeda.
Kumpulan Gambar | konversi -kualitas 95 | ZopfPNG | WebP lossy -q 0 -m 1 | WebP WebP (setelan default) | WebP lossy -m 6 -q 100 | WebP lossy dengan alfa |
---|---|---|---|---|---|---|
foto | 0,500 d | 8,7 d | 0,293 d | 0,780 d | 8,440 d | 0,111 d |
vulgar | 0,179 d | 14,0 d | 0,065 d | 0,140 d | 3,510 d | 0,184 d |
web | 0,040 d | 1,55 d | 0,017 d | 0,072 d | 2,454 d | 0,020 d |
Tabel 3. Waktu decoding rata-rata untuk ketiga korpora untuk file gambar yang dikompresi dengan metode dan setelan yang berbeda.
Kumpulan Gambar | konversi -kualitas 95 | ZopfPNG | WebP lossy -q 0 -m 1 | WebP WebP (setelan default) | WebP lossy -m 6 -q 100 | WebP lossy dengan alfa |
---|---|---|---|---|---|---|
foto | 0,027 d | 0,026 d | 0,027 d | 0,026 d | 0,027 | 0,012 d |
grafis | 0,049 d | 0,015 d | 0,005 d | 0,005 d | 0,003 | 0,010 d |
web | 0,007 d | 0,005 d | 0,003 d | 0,003 d | 0,003 | 0,003 d |
Pembuatan Profil Memori
Untuk pembuatan profil memori, kami mencatat ukuran kumpulan penghuni maksimum seperti yang dilaporkan oleh /usr/bin/time -v
Untuk korpus web, ukuran gambar terbesar saja akan menentukan penggunaan memori maksimal. Agar pengukuran memori lebih baik, kami menggunakan satu gambar fotografi (Gambar 1) untuk memberikan ringkasan penggunaan memori. Gambar grafis memberikan hasil yang serupa.
Kami mengukur 10 hingga 19 MiB untuk libpng dan ZopfliPNG, serta 25 MiB dan 32 MiB untuk encoding lossy WebP di setelan -q 0 -m 1, dan -q 95 (dengan nilai default -m), masing-masing.
Dalam eksperimen decoding, konversi -ubah ukuran 1x1 menggunakan 10 MiB untuk file PNG yang dihasilkan libpng dan ZopfliPNG. Dengan menggunakan cwebp, decoding lossy WebP menggunakan 7 MiB, dan decoding lossy 3 MiB.
Kesimpulan
Kami telah menunjukkan bahwa kecepatan encoding dan decoding berada di domain yang sama dengan domain PNG. Terjadi peningkatan penggunaan memori selama fase encoding, tetapi fase decoding menunjukkan penurunan yang sehat, setidaknya saat membandingkan perilaku cwebp dengan konversi ImageMagick.
Kepadatan kompresi lebih baik untuk lebih dari 99% gambar web, yang menunjukkan bahwa relatif mudah untuk berubah dari PNG ke WebP.
Saat dijalankan dengan setelan default, WebP akan mengompresi 42% lebih baik daripada libpng, dan 23% lebih baik daripada ZopfliPNG. Hasil ini menunjukkan bahwa WebP menjanjikan untuk mempercepat situs yang berisi gambar berat.
Referensi
Tautan Eksternal
Berikut adalah studi independen yang tidak disponsori oleh Google, dan Google belum tentu mendukung kebenaran semua kontennya.