Help us understand the problem. What is going on with this article?

GuetzliとMozjpegは、どっちが高性能か。

More than 3 years have passed since last update.

始めに

GoogleがJPEGエンコーダー「Guetzli」をオープンソースで公開というネットニュースを見て、HDDを圧迫している画像ファイルを小さくできたらいいなと思い調べてみました。
検索してみると次世代jpegエンコーダのGoogle製「guetzli」とMozilla製「mozjpeg」を比較してみるというブログを発見しました。
googleの作ったguetzliだけではなく、Mozillaの作ったmozjpegというツールがあるみたいです。
ブログでは、現時点のバージョンでは、mozjpegの方が優れているという結果になっています。
ブログで比較に使われたバージョンは、
Google/guetzli v0.1
mozilla/mozjpeg v3.1
ですが、guetzliはv0.2になっており、使ってみると驚くほど縮小されるので、もしかすると大幅に改善された可能性もあるなと思い比較してみました。

Mozjpegの準備

How to Install mozjpegを参考にしてインストールします。

bash
$ sudo apt-get install git
$ git clone https://github.com/mozilla/mozjpeg.git
$ sudo apt-get install autoconf automake libtool nasm make
$ cd mozjpeg
$ autoreconf -fiv
$ mkdir build && cd build
$ sh ../configure
$ sudo make install

シンボリックリンクを貼って使いやすくします。
:bash
$ sudo ln -s /opt/mozjpeg/bin/jpegtran /usr/local/bin/mozjpeg

使い方は、こんな感じです。
:bash
$ mozjpeg -optimize -copy none image.jpg > compressed.jpg

Guetzliの準備

guetzliは、ビルド済みの実行プログラムが用意されているので、guetzli_linux_x86-64をダウンロードします。
ダウンロードしたファイルに、シンボリックリンクを貼って使いやすくします。

bash
$ sudo ln -s /opt/guetali/guetzli_linux_x86-64 /usr/local/bin/guetzli

使い方は、こんな感じです。
:bash
$ guetzli -quality 84 image.jpg compressed.jpg

比較

次世代jpegエンコーダのGoogle製「guetzli」とMozilla製「mozjpeg」を比較してみるブログと同じ条件で比較しようかと思ったのですが、何故かmozcjpegに、qualityオプションが見つからない(?)
なので、同じ画質オプションでの比較はやめて、デフォルト設定での比較にしました。

オリジナル画像

IMG_ORIGIN.jpg
サイズ:305.9 kB (305,919 bytes)

Mozjpeg画像

mozjpeg.none.jpg
サイズ:289.5 kB (289,477 bytes)

Guetzli画像

guetzli.95.jpg
サイズ:273.1 kB (273,145 bytes)

結果

どちらも目視で分かる劣化は認められませんでした。
変換速度は、Guetzliが比較にならないほど遅く画像によってはエラーになるようです。
しかしながら圧縮能力は、Guetzliの方が優れています。
osamu1203さんの比較とは逆の結果となりました。
まだ、v0.2ですし変換速度と安定度が改善されたらGuetzliが、オススメです。

再検証

osamu1203さんからmozjpegには、可逆版コマンド(jpegtran)と不可逆版コマンド(cjpeg)が分かれているとの指摘がありましたので、再検証してみました。
バージョンは、guetzli(v0.2)/mozjpeg(v3.1)です。

蜂の画像(bees.png)

まずguetzliの蜂のサンプル画像を使って検証しました。

-quality guetzli mozjpeg
100 148.4kB 75.3kB
95 37.9kB 34.9kB
90 25.8kB 25.2kB
85 20.3kB 20.0kB

osamu1203さんの実験結果と同じで、mozjpegの方が優秀という結果になりました。
バージョンの違いによる性能アップは、今のところ無さそうですね。

猫稲荷の画像

ついでなので、前回使った猫稲荷の画像も試してみました。
オリジナル画像のサイズは、3.4MBです。

-quality guetzli mozjpeg
100 3.3MB 5.2MB
95 3.1MB 3.9MB
90 2.6MB 3.3MB
85 2.3MB 2.8MB

こちらの画像では、guetzliの方が優秀という結果になりました。
画像によって、得意不得意がでてくるのかも知れません。
guetzliの速度はとても実用に耐えないのですが、改善されたらもう少し色々な画像で試して見たいと思います。

takanemu
ASP.Netでお仕事してます。少し前まで、WPF/C#の仕事してました。 現在は、ASP.Net Core + Vue.jsでのシステム構築を行っています。 会社では、Windows、家ではUbuntuを使ってます。 家族は、嫁とミニピンが一匹。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away