Jyrki Alakuijala, Ph.D., Google, Inc.
Vincent Rabaud, Ph.D., Google, Inc.
Zuletzt aktualisiert: 01.08.2017
Zusammenfassung: Wir vergleichen die Ressourcennutzung des WebP-Encoders/-Decoders mit der von PNGs im verlustfreien und verlustfreien Modus. Wir nutzen einen Korpus von 12.000 zufälligen durchscheinenden PNG-Bildern aus dem Web und einfachere Messungen, um Leistungsschwankungen zu erkennen. Wir haben die PNGs in unserem Korpus komprimiert, um WebP-Bilder mit größenoptimierten PNGs zu vergleichen. In unseren Ergebnissen zeigen wir, dass WebP im Hinblick auf Größe und Verarbeitungsgeschwindigkeit gut zur Verwendung im Web geeignet ist.
Einführung
WebP unterstützt verlustfreie und durchscheinende Bilder und ist damit eine Alternative zum PNG-Format. Viele der für die PNG-Komprimierung verwendeten grundlegenden Verfahren wie die Wörterbuchcodierung, die Huffman-Codierung und die Transformation zur Farbindexierung werden auch in WebP unterstützt. Dies führt im schlimmsten Fall zu einer ähnlichen Geschwindigkeit und Komprimierungsdichte. Gleichzeitig ermöglichen eine Reihe neuer Funktionen wie separate Entropiecodes für verschiedene Farbkanäle, ein 2D-Ort der umgekehrten Referenzabstände und ein Farb-Cache mit kürzlich verwendeten Farben bei den meisten Bildern eine verbesserte Komprimierungsdichte.
Dabei vergleichen wir die Leistung von WebP mit PNGs, die mit pngcrush und ZopfliPNG stark komprimiert wurden. Wir haben unseren Referenzkorpus von Webbildern anhand von Best Practices komprimiert und die verlustfreie und verlustbehaftete WebP-Komprimierung mit diesem Korpus verglichen. Zusätzlich zum Referenzkorpus haben wir für das Benchmarking von Geschwindigkeit und Arbeitsspeicher zwei größere Bilder – ein fotografisches und eines mit grafischer Darstellung – ausgewählt.
Die Decodierungsgeschwindigkeiten, die schneller als PNG sind, haben eine Komprimierung von 23 % erwiesen, die mit dem heutigen PNG-Format erreicht werden kann. Wir sind zu dem Schluss gekommen, dass WebP das aktuelle PNG-Bildformat effizienter ersetzt. Außerdem bietet die verlustbehaftete Bildkomprimierung mit verlustfreier Alphaunterstützung weitere Möglichkeiten zur Beschleunigung von Websites.
Methoden
Befehlszeilentools
Wir verwenden die folgenden Befehlszeilentools, um die Leistung zu messen:
cwebp und dwebp. Diese Tools sind Teil der libwebp-Bibliothek (kompiliert über den Header).
Conversion ausführen. Dies ist ein Befehlszeilentool, das Teil der ImageMagick-Software ist (6.7.7-10 2017-07-21).
pngcrush 1.8.12 (30. Juli 2017)
ZopfliPNG (17. Juli 2017)
Wir verwenden die Befehlszeilentools mit den entsprechenden Steuerungs-Flags. Wenn wir zum Beispiel auf cwebp -q 1 -m 0 verweisen, bedeutet dies, dass das cwebp-Tool mit den Flags -q 1 und -m 0 aufgerufen wurde.
Bild Corpora
Drei Corpora wurden ausgewählt:
Ein einzelnes fotografisches Bild (Abbildung 1),
Ein einzelnes grafisches Bild mit Durchscheinung (Abbildung 2)
Webkorpus: 12.000 nach dem Zufallsprinzip ausgewählte PNG-Bilder mit durchscheinendem oder nicht durchscheinendem, aus dem Internet gecrawlten Inhalt Diese PNG-Bilder werden durch Konvertieren, PNG, ZopfliPNG optimiert und die kleinste Version eines Bildes wird für die Studie berücksichtigt.
Abbildung 1. Fotografie, 1024 x 752 Pixel. Feueratmung Jaipur Maharaja Brass Band Die Website des Autors findest du hier.
Abbildung 2. Grafik, 1024 x 752 Pixel. Collagenbilder aus den Google Diagramm-Tools
Um die volle Leistung des vorhandenen Formats (PNG) zu messen, haben wir alle diese ursprünglichen PNG-Bilder mithilfe mehrerer Methoden komprimiert:
Klemme auf 8 Bits pro Komponente befüllen: konvertieren Input.png -depth 8output.png
ImageMagick(1) ohne Prädiktoren: input.png -quality 90 output-candidate.png
ImageMagick mit adaptiven Prädiktoren: conversioninput.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
ZopfliPNG(3): zopflipng --lossy_transparent input.png output-candidate.png
ZopfliPNG mit allen Filtern: zopflipng --escalations=500 --filters=01234mepb --lossy_8bit --lossy_transparentinput.pngoutput-candidate.png
Ergebnisse
Wir haben die Komprimierungsdichte für jedes Bild im Web bezogen auf die optimierten PNG-Bildgrößen für drei Methoden berechnet:
WebP-verlustfrei (Standardeinstellungen)
WebP-verlustfrei mit der geringsten Größe (-m 6 -q 100)
Best of WebP Lossless und WebP Lossy mit Alpha (Standardeinstellungen).
Wir haben diese Komprimierungsfaktoren sortiert und in Abbildung 3 dargestellt.
Abbildung 3. Die PNG-Komprimierungsdichte wird als Referenz bei 1, 0 verwendet. Dieselben Bilder werden sowohl mit verlust- als auch verlustbehafteten Methoden komprimiert. Für jedes Bild wird das Größenverhältnis zu komprimierter PNG berechnet und die Größenverhältnisse sortiert und für die verlustfreie und verlustbehaftete Komprimierung angezeigt. Für die verlustbehaftete Komprimierungskurve wird die verlustfreie Komprimierung in Fällen ausgewählt, in denen ein kleineres WebP-Bild erzeugt wird.
WebP geht über die PNG-Komprimierungsdichte für sowohl libpng bei maximaler Qualität (Konvertierung) als auch ZopfliPNG (Tabelle 1) hinaus. Die Codierungen (Tabelle 2) und Decodierungsgeschwindigkeiten (Tabelle 3) sind mit denen von PNG vergleichbar.
Tabelle 1. Durchschnittliche Bits pro Pixel für die drei Korpora mit den verschiedenen Komprimierungsmethoden.
Bildsatz | Konvertieren -Qualität 95 | ZopfliPNG | WebP verlustfrei -q 0 -m 1 | WebP-verlustfrei (Standardeinstellungen) | Verlustfrei WebP -m 6 -q 100 | WebP-Verlust mit Alpha |
---|---|---|---|---|---|---|
foto | 12.3 | 12.2 | 10.5 | 10.1 | 9,83 | 0,81 |
grausam [if not including sexual activity], nicht jugendfrei [if including sexual activity] | 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 |
Tabelle 2: Durchschnittliche Codierungszeit für die Komprimierungskorpora und für verschiedene Komprimierungsmethoden.
Bildsatz | Konvertieren -Qualität 95 | ZopfliPNG | WebP verlustfrei -q 0 -m 1 | WebP-verlustfrei (Standardeinstellungen) | Verlustfrei WebP -m 6 -q 100 | WebP-Verlust mit Alpha |
---|---|---|---|---|---|---|
foto | 0,500 s | 8,7 s | 0,293 s | 0,780 s | 8.440 s | 0,111 s |
grausam [if not including sexual activity], nicht jugendfrei [if including sexual activity] | 0,179 s | 14,0 s | 0,065 s | 0,140 s | 3.510 s | 0,184 s |
web | 0,040 s | 1,55 s | 0,017 s | 0,072 s | 2,454 s | 0,020 s |
Tabelle 3: Durchschnittliche Decodierungszeit für die drei Korpora für Bilddateien, die mit verschiedenen Methoden und Einstellungen komprimiert sind.
Bildsatz | Konvertieren -Qualität 95 | ZopfliPNG | WebP verlustfrei -q 0 -m 1 | WebP-verlustfrei (Standardeinstellungen) | Verlustfrei WebP -m 6 -q 100 | WebP-Verlust mit Alpha |
---|---|---|---|---|---|---|
foto | 0,027 s | 0,026 s | 0,027 s | 0,026 s | 0,027 | 0,012 s |
Grafik | 0,049 s | 0,015 s | 0,005 s | 0,005 s | 0,003 | 0,010 s |
web | 0,007 s | 0,005 s | 0,003 s | 0,003 s | 0,003 | 0,003 s |
Speicherprofil
Für die Arbeitsspeicherprofilerstellung wurde die maximale Größe des residenten Satzes erfasst, wie von /usr/bin/time -v gemeldet
Für den Web-Korpus definiert die Größe des größten Bildes allein die maximale Arbeitsspeichernutzung. Damit die Speichermessung besser definiert ist, verwenden wir ein einzelnes fotografisches Bild (Abbildung 1), um Ihnen einen Überblick über die Arbeitsspeichernutzung zu geben. Das grafische Bild liefert ähnliche Ergebnisse.
Wir haben 10 bis 19 MiB für libpng und ZopfliPNG und 25 MiB und 32 MiB für die verlustfreie Codierung für WebP bei den Einstellungen -q 0–m 1 und -q 95 (mit dem Standardwert -m) gemessen.
Für einen Dekodierungstest konvertiert -xp 1x1 10 MiB für PNG- und ZopfliPNG-Dateien, die von libpng generiert wurden. Bei Verwendung von cwebp verwendet die verlustfreie Decodierung von WebP 7 MiB und eine verlustbehaftete Decodierung 3 MiB.
Zusammenfassung
Wir haben gezeigt, dass sich die Geschwindigkeiten für Codierung und Decodierung in derselben Domain befinden wie die von PNG. Während der Codierungsphase steigt die Speichernutzung, aber die Decodierungsphase zeigt eine gesunde Verringerung an, zumindest, wenn das Verhalten von cwebp mit dem von ImageMagick-Konvertierungen verglichen wird.
Die Komprimierungsdichte ist für mehr als 99% der Webbilder besser, was darauf hindeutet, dass sich diese relativ leicht von PNG zu WebP ändern lässt.
Wenn WebP mit den Standardeinstellungen ausgeführt wird, komprimiert es 42% besser als libpng und 23% besser als ZopfliPNG. Dies deutet darauf hin, dass WebP die Beschleunigung von bildintensiven Websites verspricht.
Referenzen
Externe Links
Die folgenden unabhängigen Studien werden nicht von Google gesponsert und Google steht nicht zwangsläufig für die Richtigkeit aller Inhalte.