Guetzli検証(その6) - 最終まとめ

 複数回に分けてGoogleJPEGエンコーダGuetzliの検証を行ってきましたが今回で最後です。
 

 先に結論から記載します。

結論

 Guetzliがlibjpegに対して特段優れていると判断できる用途(データパターン)は無い。

Performance Quality (in 100) Quality (in 84)
libjpeg Excellent Good mostly within an allowance
guetzli Nightmare Good mostly within an allowance

 

 これは、その1~その6までの各検証結果を踏まえた結論ですが、これまでは画像を目視した定性評価が多かったため、定量的な評価も以下に記載します。

定量評価

 その4で行った約13MPの画像エンコード時の結果をもとに、以下の項目について評価を行う。

  • 所要時間
    単純に速い方が優れています。
  • 圧縮率
    一連の検証では圧縮率をエンコード後ファイルサイズをオリジナルファイルサイズで除した値と定義していますので、小さい値の方が優れています。
  • 元画像とエンコード後画像の差分画像のエントロピー
    (ヒトの知覚モデルを表しているわけではなく、やや拡大解釈気味ですが)多くの場合においてエントロピーが小さいほど知覚できる差分が少ないと判断し、小さい値の方が優れていると判断します。
  • 元画像とエンコード後画像の差分画像の平均値
    差分が全く無ければ、差分画像は真っ黒な画像で平均値は当然0です。差分が大きい、或いは差分のある画素が多いほど平均値は増加しますので、小さい値の方が優れていると判断できます。

 

所要時間と圧縮率

Test Data: Cloud

Cloud
↑Q=94以上はlibjpegの方が高圧縮率。

Test Data: Plum

Plum
↑Q=99以上はlibjpegの方が高圧縮率。

Test Data: ST

ST
↑Q=86以上はlibjpegの方が高圧縮率。

Test Data: TT

TT
↑Q=97以上はlibjpegの方が高圧縮率。

  • 所要時間についてはいずれのデータパターンでもグラフの下限値に張り付いているlibjpegの圧勝。
    guetzliはQuality設定値が大きくなるほど所要時間が長くなるが、Q=97~99付近に所要時間のピークが現れ、100が最遅なわけではない。
  • Qualityパラメータが高い内はlibjpegの方が高圧縮率を達成しており、常にQ=100でエンコードするユーザが使うならlibjpegが優位。
    一方、Qualityパラメータを低下させると徐々にguetzliの圧縮率が優れてくる。但し、同一Qualityパラメータなら同一画像品質というわけではないため、どちらが優れているとは評価し難い。

 

差分のエントロピーと平均値

Test Data: Cloud

Cloud
↑guetzliはQ=98で差分のエントロピーが最小化する。Q=99~96のみguetzliの方がlibjpegより差分の平均値が小さい。

Test Data: Plum

Plum
↑guetzliはQ=99で差分のエントロピーが最小化する。常にguetzliの方がlibjpegより差分の平均値が大きい。

Test Data: ST

ST
↑guetzliはQ=98で差分のエントロピーが最小化する。Q=99,96~94のみguetzliの方がlibjpegより差分の平均値が小さい。

Test Data: TT

TT
↑guetzliはQ=98で差分のエントロピーが最小化する。Q=99,97のみguetzliの方がlibjpegより差分の平均値が小さい。

  • guetzliはQ=98~99付近で差分のエントロピーが最小化するが、libjpegには規則性が見られない。
  • 差分の平均値は多くの場合において、libjpegの方が小さいが、Q=99~94付近ではguetzliの方が少ない。
    エントロピー最小化ポイントも踏まえると、Q=94~99付近にguetzliのスイートスポットが存在しそうである。

 

Guetzliの可能性を追求するなら

 これまでに記載した通り、Q=100なら常にlibjpegが優れています。それ以外のQ値でも敢えてguetzliを使用する合理的な理由は見当たりませんが、それでも使いたいという場合はQ=94~99付近でエンコードを繰り返せば膨大な処理時間(とシステムリソースと電力)を犠牲にして、libjpegに勝る品質かつ圧縮率の画像が得られるかもしれません。
 仮に94,95,96,97,98,99と6通りのQualityパラメータでエンコードすると(3GHz程度で駆動するCore i7搭載機で)10時間程度は掛かるはずです。入力画像によって最適なQualityパラメータは異なります。毎回ベストなエンコード結果を得るために10時間消費しますか?私はそんなのお断りです。
 



以上。