dr Jyrki Alakuijala, Google LLC
Vincent Rabaud, dr Vincent Rabaud, Google, Inc.
Ostatnia aktualizacja: 1.08.2017
Streszczenie – porównujemy wykorzystanie zasobów przez koder/dekoder WebP z wykorzystaniem zasobów PNG w trybie bezstratnym i stratnym. Używamy korpusu zawierającego 12 tys. losowo wybranych, półprzezroczystych obrazów PNG z internetu. Stosujemy też prostsze pomiary w celu uwidocznienia zmian skuteczności. Ponownie skompresowaliśmy pliki PNG w naszym korpusie, aby porównać obrazy WebP z plikami PNG o zoptymalizowanym rozmiarze. W naszych wynikach pokazujemy, że WebP dobrze nadaje się do pliku PNG, jeśli chodzi o rozmiar i szybkość przetwarzania.
Wstęp
WebP obsługuje obrazy bezstratne i przezroczyste, dlatego stanowi alternatywę dla formatu PNG. Wiele podstawowych technik stosowanych przy kompresji PNG, takich jak kodowanie słownikowe, kodowanie Huffmana i transformacja indeksowania kolorów, jest również obsługiwanych w WebP, co w najgorszym razie skutkuje podobną szybkością i gęstością kompresji. Jednocześnie szereg nowych funkcji – takich jak oddzielne kody entropii dla różnych kanałów kolorów, lokalizacja 2D odległości odniesień oraz pamięć podręczna ostatnio używanych kolorów – pozwalają na większą gęstość kompresji większości obrazów.
W tym projekcie porównujemy wydajność plików WebP z plikami PNG, które są mocno skompresowane za pomocą programów pngcrush i ZopfliPNG. Ponownie skompresowaliśmy referencyjny korpus obrazów internetowych, korzystając ze sprawdzonych metod, i porównaliśmy z korpusem zarówno bezstratną, jak i stratną kompresję WebP. Oprócz korpusu referencyjnego wybraliśmy 2 większe obrazy – fotograficzny, a drugie graficzne – do porównania szybkości i pamięci.
Szybkość dekodowania jest większa niż w przypadku PNG, a także o 23% gęstsza w porównaniu z dostępnym obecnie formatem PNG. Uznaliśmy, że WebP to wydajniejszy zamiennik obecnego formatu obrazów PNG. Poza tym stratna kompresja obrazu z bezstratną obsługą wersji alfa daje większe możliwości przyspieszania stron internetowych.
Metody
Narzędzia wiersza poleceń
Do pomiaru wydajności używamy tych narzędzi wiersza poleceń:
cwebp i dwebp. Te narzędzia, które są częścią biblioteki libwebp (skompilowanej na podstawie nagłówka).
dokonać konwersji. Jest to narzędzie wiersza poleceń będące częścią oprogramowania ImageMagick (6.7.7-10 2017-07-21).
pngcrush 1.8.12 (30 lipca 2017 r.)
ZopfliPNG (17 lipca 2017 r.)
Używamy narzędzi wiersza poleceń wraz z odpowiadającymi im flagami sterującymi. Na przykład odwołanie do cwebp -q 1 -m 0 oznacza, że narzędzie cwebp zostało wywołane z flagami -q 1 i -m 0.
Korpusy obrazów
Wybrano trzy korpusy:
Pojedyncze zdjęcie (ilustracja 1)
Pojedynczy obraz graficzny z przezroczystością (Rys. 2) oraz
Korpus internetowy: 12 000 losowo wybranych obrazów PNG z przezroczystością lub nie, zindeksowanych z internetu. Te obrazy PNG są optymalizowane przy użyciu konwersji, pngcrush, ZopfliPNG. W badaniu brana jest pod uwagę najmniejsza wersja każdego obrazu.
Rysunek 1. Obraz fotograficzny o wymiarach 1024 x 752 piksele. Oddychanie ogniem „Jaipur Maharaja Brass Band” Chassepierre Belgium, Autor: Luc Viatour, zdjęcie na licencji Creative Commons Uznanie autorstwa–Na tych samych warunkach 3.0 Unported. Witryna autora znajduje się tutaj.
Rysunek 2. Obraz graficzny o wymiarach 1024 x 752 piksele. Kolaż obrazów z Narzędzi Google do tworzenia wykresów
Aby zmierzyć wszystkie możliwości istniejącego formatu, PNG, ponownie skompresowaliśmy wszystkie oryginalne obrazy PNG za pomocą kilku metod:
Ogranicz do 8 bitów na komponent: przekonwertuj plikinput.png – głębokość 8.png
ObrazMagick(1) bez funkcji prognozowania: przekonwertuj plikinput.png -quality 90 output-candidate.png
ObrazMagick z prognozami adaptacyjnymi: przekonwertuj plikinput.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 tekst insert.png wyjściowy-candi
ZopfliPNG(3): zopflipng --lossy_transparent input.png wyjściowy-candidate.png
ZopfliPNG ze wszystkimi filtrami: zopflipng --iterations=500 --filters=01234mepb --lossy_8bit --lossy_transparent input.png wyjściowy-candidate.png
Wyniki
Obliczyliśmy gęstość kompresji każdego obrazu w korpusie internetowym w odniesieniu do zoptymalizowanych rozmiarów obrazów PNG na 3 sposoby:
Bezstratny WebP (ustawienia domyślne)
Bezstratny WebP o najmniejszym rozmiarze (-M 6–q 100)
najlepsze są funkcje bezstratne WebP i WebP Losy z wersją alfa (ustawienia domyślne).
Posortowaliśmy współczynniki kompresji i umieściliśmy je na Rysunku 3.
Rysunek 3. Gęstość kompresji PNG jest używana jako wartość referencyjna na poziomie 1, 0. Te same obrazy są kompresowane zarówno przy użyciu metod bezstratnych, jak i stratnych. W przypadku każdego obrazu obliczany jest stosunek rozmiaru do skompresowanego pliku PNG, a współczynniki rozmiaru są sortowane i wyświetlane zarówno w przypadku kompresji bezstratnej, jak i stratnej. W przypadku krzywej stratnej kompresji kompresja bezstratna jest wybierana w tych przypadkach, gdy obraz WebP jest mniejszy.
WebP wykracza poza gęstość kompresji PNG w przypadku plików libpng zarówno w przypadku maksymalnej jakości (konwersji), jak i ZopfliPNG (tabela 1), przy czym szybkości kodowania (tabela 2) i dekodowania (Tabela 3) są mniej więcej porównywalne do szybkości kodowania PNG.
Tabela 1. Średnia liczba bitów na piksel dla 3 korpusów z zastosowaniem różnych metod kompresji.
Zestaw obrazów | jakość - przekonwertuj 95 | ZopfliPNG | Bezstratny WebP – kw. 0 – m 1 | Bezstratny WebP (ustawienia domyślne) | Bezstratny WebP – M 6 – 100 | Stratna WebP z wersją alfa |
---|---|---|---|---|---|---|
zdjęcie | 12.3 | 12.2 | 10.5 | 10.1 | 9.83 | 0.81 |
treści drastyczne | 1.36 | 1,05 | 0.88 | 0.71 | 0,70 | 0,51 |
internet | 6.85 | 5.05 | 4.42 | 4.04 | 3.96 | 1.92 |
Tabela 2. Średni czas kodowania korpusów kompresji i różnych metod kompresji.
Zestaw obrazów | jakość - przekonwertuj 95 | ZopfliPNG | Bezstratny WebP – kw. 0 – m 1 | Bezstratny WebP (ustawienia domyślne) | Bezstratny WebP – M 6 – 100 | Stratna WebP z wersją alfa |
---|---|---|---|---|---|---|
zdjęcie | 0,500 s | 8,7 s | 0,293 s | 0,780 s | 8,440 s | 0,111 s |
treści drastyczne | 0,179 s | 14,0 s | 0,065 s | 0,140 s | 3,510 s | 0,184 s |
internet | 0,040 s | 1,55 s | 0,017 s | 0,072 s | 2,454 s | 0,020 s |
Tabela 3. Średni czas dekodowania 3 korpusów w przypadku plików graficznych skompresowanych za pomocą różnych metod i ustawień.
Zestaw obrazów | jakość - przekonwertuj 95 | ZopfliPNG | Bezstratny WebP – kw. 0 – m 1 | Bezstratny WebP (ustawienia domyślne) | Bezstratny WebP – M 6 – 100 | Stratna WebP z wersją alfa |
---|---|---|---|---|---|---|
zdjęcie | 0,027 s | 0,026 s | 0,027 s | 0,026 s | 0,027 | 0,012 s |
grafika | 0,049 s | 0,015 s | 0,005 s | 0,005 s | 0.003 | 0,010 s |
internet | 0,007 s | 0,005 s | 0,003 s | 0,003 s | 0.003 | 0,003 s |
Profilowanie pamięci
Na potrzeby profilowania pamięci zarejestrowaliśmy maksymalny rozmiar zbioru rezydentnego podany przez /usr/bin/time -v
W przypadku korpusu internetowego rozmiar największego obrazu określa maksymalne wykorzystanie pamięci. Aby dokładniej określić pomiar pamięci, używamy pojedynczego obrazu (ilustracja 1) w celu opisania użycia pamięci. Obraz graficzny daje podobne wyniki.
Zmierzyliśmy 10–19 MiB w przypadku libpng i ZopfliPNG oraz 25 MiB i 32 MiB w przypadku bezstratnego kodowania WebP przy ustawieniach -q 0–m 1 i -q 95 (przy wartości domyślnej -m).
W eksperymencie z dekodowaniem funkcja konwertuj na zmianę rozmiaru 1 x 1 wykorzystuje 10 MiB zarówno w przypadku plików PNG wygenerowanych przez libpng, jak i ZopfliPNG. W przypadku cwebp bezstratne dekodowanie WebP wykorzystuje 7 MiB, a dekodowanie stratne 3 MiB.
Podsumowanie
Wykazaliśmy, że szybkość kodowania i dekodowania znajduje się w tej samej domenie co w przypadku formatu PNG. Podczas fazy kodowania zauważa się wzrost wykorzystania pamięci, ale faza dekodowania wykazuje znaczący spadek, przynajmniej w przypadku porównania zachowania cwebp z konwersją ImageMagick.
Gęstość kompresji jest lepsza w przypadku ponad 99% obrazów internetowych, co oznacza, że można stosunkowo łatwo przejść z formatu PNG na WebP.
Gdy WebP działa z ustawieniami domyślnymi, kompresuje o 42% lepiej niż libpng i o 23% lepiej niż ZopfliPNG. To sugeruje, że WebP przyspiesza działanie witryn z dużą ilością obrazów.
Odniesienia
Połączenia zewnętrzne
Poniżej znajdziesz niezależne badania, które nie są sponsorowane przez Google. Niekoniecznie to Google twierdzi, że wszystkie zawarte w nich treści są prawidłowe.