Guetzli
Guetzli is a freely licensed JPEG encoder developed at Google Research Europe in Zürich, Switzerland by Jyrki Alakujala, Robert Obryk, and Zoltán Szabadka. It specializes in high-end image quality where it is claimed to produce significantly smaller files than prior encoders at equivalent quality, albeit at very low speed. It is named after the Swiss German expression for Biscuits,[1] in line with the names of other compression technology from Google.[2][3]
Original author(s) | Google Research |
---|---|
Initial release | March 15, 2017 |
Stable release | 1.0.1
/ March 21, 2017 |
Repository | github |
Written in | C++ |
Standard(s) | JPEG |
License | Apache License |
Properties
Guetzli is known to be very resource intensive, requiring several orders of magnitude more processing time than other JPEG encoders, and a lot of memory.[4] Guetzli supports only the top of JPEG's quality range (quantizer settings 84–100)[5][6] and supports only sequential (non-"progressive") encoding. The performance of the Butteraugli quality metric it optimizes for breaks down below that range and starves some areas too much. Guetzli is more effective with bigger files.[6]
It is often placed in line with other bits of Google technology that are used to cut down web page load times, while Google itself describes it also as a demonstration of the potential of psychovisual optimizations to motivate further research to benefit future JPEG encoders,[2] and acknowledges the often impractically low speed of their code.[7]
Two tests found that Guetzli is very slow (it's about 4 magnitudes slower than normal JPEG encoder) and not necessarily better than mozjpeg.[5][8]
Availability
It is implemented as a command-line tool in C++[9] and the source code published on GitHub as free software under the terms of version 2 of the Apache license. Several important Linux distributions have packages available in their official repositories.[10][11][12] For Arch Linux there are user repositories available.[13][14] There is a macOS version packaged in the Homebrew repository.[15] There are graphical user interfaces and prebuilt Windows binaries available elsewhere on the Internet.[4][16][17] For web development with node.js, there is a Guetzli package available in the Node Package Manager (npm).[18]
The first public version was released on October 21, 2016, without any speed optimizations,[15] and only announced on a specialist forum.[19][20] Version 1.0 followed five months later on March 15, 2017,[21] accompanied by an announcement to a broader public and two scientific papers.[22][23][24]
Technology
Guetzli uses methods to optimize compression efficiency that target mainly the quantization step. It constructs custom quantization tables for each file, decides on color subsampling,[25] and quantizes some adjacent DCT coefficients to zero, balancing benefits in the run-length encoding of coefficients and preservation of perceived image fidelity. Zeroing the right coefficients is the most effective tool in Guetzli, which is used as a makeshift means of spatially adaptive quantization. The optimizations are guided by Butteraugli.[26]
Butteraugli
Butteraugli is a newly introduced objective image quality assessment metric. It assigns a differential mean opinion score (DMOS) value to the difference between an original image and a degraded version. It is significantly more complex than traditional metrics like PSNR and SSIM, but claimed to perform better with high-end quality, where degradations are not or barely noticeable.[27] It models color perception and visual masking in the human visual system, taking into account that the eye is imaging different colors with different precision.[28] It uses a heat map of changes.[26] How the hundreds of parameters that model the properties of the human visual system were derived remains unexplained.[1] An in-house performance evaluation with 614 ratings from 23 people on their own test set of 31 images yielded 75% of ratings favouring of JPEGs encoded for Butteraugli scores over libjpeg-turbo encodes,[23] which usually score higher on SSIM and PSNRHVS-M.[20][29]
Translating to "butter eye", the Swiss-German name originally signifies a dimple on top of some sweet pastry that has been filled with butter and sugar before baking.[30]
References
- Anthony, Sebastian (2017-03-17). "Google reduces JPEG file size by 35%". Ars Technica. Retrieved 2017-12-02.
- "Neues Google-Tool verkleinert JPEGs massiv und heisst Guetzli 😍". watson.ch (in German). 2017-03-17. Retrieved 2017-12-02.
- Crush (2015-09-22). "Brotli". Encode's Forum. Retrieved 2017-12-04.
- Humpa, Michael. "Guetzli". CHIP Online. Retrieved 2017-12-02.
- Jeremy Wagner (2017-03-29). "JPEG Compression with Guetzli". David Walsh Blog.
- Osmani, Addy (2017). "Essential Image Optimization". images.guide. Retrieved 2017-12-03.
- Sharwood, Simon (2017-03-17). "Be our Guetzli, says Google, to make beastly JPEGs beautifully small". The Register. Retrieved 2017-12-04.
- Dave Kensell (2017-04-17). "Google Guetzli vs MozJPEG". pixelz.
- Guetzli at Open Hub
- "software.opensuse.org". software.opensuse.org.
- "Debian Package Tracker - guetzli". tracker.debian.org.
- "Debian Package Tracker - butteraugli". tracker.debian.org.
- "AUR (en) - guetzli-git". aur.archlinux.org.
- "AUR (en) - butteraugli-git". aur.archlinux.org.
- Furno, Nicolas (2017-03-17). "Google réduit la taille des JPEG avec Guetzli". MacGeneration. Retrieved 2017-12-02.
- "Guetzli Converter GUI". homepage. Retrieved 2017-12-03.
- Kyladitis, Petros (2017-06-29). "Introducing Guietzli - The Guetzli graphical front-end - Petros Kyladitis". multipetros.gr. Retrieved 2017-12-02.
- "imagemin-guetzli". npm.
- Grüner, Sebastian (2017-03-17). "Guetzli: Neuer Jpeg-Encoder von Google". Linux-Magazin (in German). Retrieved 2017-12-04.
- "Guetzli - a new more psychovisual JPEG encoder". Encode's Forum. Retrieved 2017-12-04.
- "guetzli: Perceptual JPEG encoder". 12 December 2017 – via GitHub.
- Alakuijala, Jyrki; Obryk, Robert (March 16, 2017). "Announcing Guetzli: A New Open Source JPEG Encoder". Research Blog. Google Research Europe. Retrieved 2017-03-26.
- Alakuijala, Jyrki; Obryk, Robert; Szabadka, Zoltan; Wassenberg, Jan (2017). "Users prefer Guetzli JPEG over same-sized libjpeg". arXiv:1703.04416 [cs.CV].
- Alakuijala, Jyrki; Obryk, Robert; Stoliarchuk, Ostap; Szabadka, Zoltan; Vandevenne, Lode; Wassenberg, Jan (2017). "Guetzli: Perceptually Guided JPEG Encoder". arXiv:1703.04421 [cs.CV].
- Hermann, Vincent (2017-03-17). "Guetzli, l'algorithme de Google pour réduire le poids des fichiers JPG de 35 %". nextinpact.com (in French). INpact Mediagroup. Retrieved 2017-12-04.
- Hopkins, Max; Mitzenmacher, Michael; Wagner-Carena, Sebastian (2017-09-02). "Simulated Annealing for JPEG Quantization". arXiv:1709.00649 [cs.MM].
- Colt McAnlis (2016-05-18), "Image compression for Android developers", Google I/O 2016, retrieved 2017-12-03
- Ciobanu, Doru (2017-03-18). "Guetzli – JPEG Encoder Promises a Faster Web, by Google". Designmodo. Retrieved 2017-12-03.
- @fg118942 (2017-01-16). "Guetzliはbutteraugliという新しい指標向けに調整されているので従来のSSIMなどの指標では低めの数値が出るようだ。pic.twitter.com/DAwp1xDS3B". twitter.com (in Japanese). Retrieved 2017-12-04.
- Pippig, Susanna (2015-08-26). "Es wird wieder kardamomig – Finnische Pulla". Mehlstaub und Ofenduft (in German). Retrieved 2017-12-03.
External links
- Guetzli on GitHub
- Butteraugli on GitHub