Guetzli
https://github.com/google/guetzli
Guetzli [guɛtsli] とはスイスドイツ語でクッキーの意味。1
Google が2016年10月22日に GitHub で Initial Release を公開した JPEG エンコーダー。2017年1月13日に GIGAZINE で紹介される。
2017年3月15日に 1.0 がリリースされ、Google Research Blog でアナウンスされたため、同17日頃より国内メディアで紹介され始めた。
Mozilla の JPEG エンコーダー mozjpeg と画像処理を比較した結果、200倍の処理時間がかかった上に圧縮率が拮抗してて(しかも負けてる)、品質も大差ない(しかも quality 90 以下では負けてる)ので、正直使えないかもしれない。ナニコレ。
- Research Blog: Announcing Guetzli: A New Open Source JPEG Encoder
- GoogleがJPEGエンコーダー「Guetzli」をオープンソースで公開 - GIGAZINE
- Google、より高画質で小サイズを実現するJPEGエンコーダをオープンソースで公開 - PC Watch
- Google、JPEGエンコーダ「Guetzli」公開、同じ画質で35%小さく圧縮 | マイナビニュース
インストール
curl -L https://github.com/google/guetzli/releases/download/v1.0/guetzli_linux_x86-64 -o guetzli
chmod a+x guetzli && mv $_ /usr/local/bin
CentOS 7.3.1611 (minimal) で動作確認。
コンパイル手順では libpng (extras) と gflags (epel) のインストールが記載されているが、バイナリ版には含まれているのかインストールしなくても動作した。(インストールしてもエンコードサイズは変わらなかった)
使い方
基本
guetzli bees.png bees_compressed.jpg
品質指定
guetzli -quality 90 bees.png bees_90.jpg
詳細表示
guetzli -verbose bees.png bees_compressed.jpg
Original Out[ 148444] BA[100.00%] D[0.4312] Score[148444.0000] (*)
Iter 1: f111111 quantization matrix:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Iter 1: f111111 GQ[ 0.00] Out[ 148314] BA[100.00%] D[0.4312] Score[148314.0000] (*)
(snip)
Iter 9: f111111 quantization matrix:
3 3 3 3 3 3 5 5 3 3 3 3 3 3 5 5 3 3 3 3 3 3 5 5
3 3 3 3 3 5 5 5 3 3 3 3 3 5 5 5 3 3 3 3 3 5 5 5
3 3 3 3 5 5 5 5 3 3 3 3 5 5 5 5 3 3 3 3 5 5 5 5
3 3 5 5 5 5 5 5 3 3 5 5 5 5 5 5 3 3 5 5 5 5 5 5
3 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
Iter 9: f111111 GQ[29.82] Out[ 58432] BA[100.00%] D[0.9286] Score[58432.0000]
YUV444 selected quantization matrix:
3 3 3 3 3 3 5 5 3 3 3 3 3 3 5 5 3 3 3 3 3 3 5 5
3 3 3 3 3 5 5 5 3 3 3 3 3 5 5 5 3 3 3 3 3 5 5 5
3 3 3 3 5 5 5 5 3 3 3 3 5 5 5 5 3 3 3 3 5 5 5 5
3 3 5 5 5 5 5 5 3 3 5 5 5 5 5 5 3 3 5 5 5 5 5 5
3 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5 3 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
Iter 10: f111111(7) up Coeffs[24885/45016] Blocks[1287/1797/1848] ValThres[0.7288] Out[ 46401] EstErr[0.10%] BA[100.00%] D[1.0452] Score[1820309.3844]
Iter 11: f111111(7) up Coeffs[3563/19983] Blocks[861/1781/1848] ValThres[0.0294] Out[ 44501] EstErr[0.07%] BA[100.00%] D[1.0487] Score[2088126.7296]
Iter 12: f111111(7) up Coeffs[3543/16420] Blocks[944/1771/1848] ValThres[0.0332] Out[ 42585] EstErr[0.08%] BA[100.00%] D[1.0651] Score[4521058.0405]
(snip)
Iter 33: f111111(7) down Coeffs[49/3569] Blocks[27/136/1848] ValThres[0.0173] Out[ 37860] EstErr[0.08%] BA[100.00%] D[0.9947] Score[119150.1578]
Iter 34: f111111(7) down Coeffs[47/1717] Blocks[23/73/1848] ValThres[0.0259] Out[ 37897] EstErr[0.10%] BA[100.00%] D[0.9796] Score[56045.0362]
Iter 35: f111111(7) down Coeffs[44/285] Blocks[10/21/1848] ValThres[0.0265] Out[ 37910] EstErr[0.06%] BA[100.00%] D[0.9717] Score[37910.0000] (*)
バグ?
guetzli -version
とやっても guetzli
としか出力されない。
スピードとサイズ
quality | 時間 | サイズ | 圧縮率 |
---|---|---|---|
84 | 9.474s | 19881 | 11.2% |
90 | 10.960s | 25783 | 14.5% |
95 | 13.667s | 37910 | 21.4% |
100 | 23.489s | 148444 | 83.7% |
未指定 | 13.530s | 37910 | 21.4% |
公式のサンプル画像を元にした数値。オリジナル画像のサイズは 177424 バイト。
-quality
は 84 からしか指定できない。
変換サイズから推測して未指定の場合は -quality 95
になるようだ。
その他の JPEG エンコーダー
- Lepton
- mozjpeg
- libjpeg-turbo
- jpegoptim
mozjpeg との比較
画像
画像処理界隈で有名な Lena の画像 2 で比較。
時間
quality | Guetzli | mozjpeg (cjpeg) |
---|---|---|
84 | 19.498s | 0.073s |
90 | 22.506s | 0.079s |
95 | 29.476s | 0.111s |
100 | 44.614s | 0.214s |
Guetzli 時間かかりすぎワロタ。
ファイルサイズ
quality | Guetzli | mozjpeg (cjpeg) |
---|---|---|
84 | 50071 17.7% |
49451 17.5% |
90 | 60965 21.6% |
60599 21.5% |
95 | 91629 32.5% |
80572 28.6% |
100 | 223908 79.3% |
173504 61.5% |
Guetzli 軒並み負けてて草。
品質
quality | Guetzli | mozjpeg (cjpeg) |
---|---|---|
84 | 248724 | 246865 |
90 | 244907 | 242166 |
95 | 234535 | 235457 |
100 | 120435 | 179307 |
ImageMagick の compare で AE で比較。異なるピクセル数。少ない方が品質が高い。
quality 90 以下で200倍時間かけてる Guetzli が負けてて草も生えない。