読者です 読者をやめる 読者になる 読者になる

Guetzli検証(その3) - シングルボードコンピュータ編

 引き続きJPEGエンコーダGuetzliについての話です。
 前回までは長辺1920pxにリサイズした画像を、普通のUltrabookでエンコードしていました。これまでの検証で、メモリ大量消費&シングルスレッド動作であることも相まって、超絶に悲惨なパフォーマンスであることが判っていますが、非力なシングルボードコンピュータの場合はどうなのか検証してみます。
 

測定条件

  • シングルボードコンピュータとしてOrange Pi Oneを使います。Orange Pi OneへのGuetzliの導入については、以下の投稿に記載しています。
    guetzliをOrangePi One (Armbian環境)に導入する - 記憶は人なり
  • 入力画像データについてはこれまでと同様に、Cloud, Plum, ST, TTの4パターンを利用していますが、メモリが枯渇するため解像度を長辺1280pxまで落としています。
  • 圧縮率は出力JPEGファイルサイズを元PNGファイルサイズで除した値(CompressionRatio = OutputFileSize / OriginalFileSize)と定義します。
  • いい加減なスクリプトで測定しているため、処理時間は最大1秒の誤差が含まれる可能性が有ります。

 

Orange Pi One スペック
CPU
Allwinner H3 (Quad-core Cortex-A7)
Memory
512MB
OS
ARMBIAN 5.25 stable Ubuntu 16.04.2 LTS 3.4.113-sun8i

 詳細は以下の投稿に記載していますが、一言で表すと中華版Raspberry Piといった感じのシングルボードコンピュータです。
Orange Pi Oneが届いた - 記憶は人なり
 

Data Pattern: Cloud

空と雲

Input File Spec
Resolution
1280x853
Bit Depth
8bit
Color Space
sRGB
File Format
PNG (internally ZIP compression)

 

Result
Quality OutputSize [Bytes] CompressionRatio ProcessingTime [sec]
guetzli_84 74162 6.56% 662
guetzli_85 81401 7.20% 770
guetzli_86 84612 7.48% 764
guetzli_87 86836 7.68% 740
guetzli_88 94167 8.32% 936
guetzli_89 99178 8.77% 874
guetzli_90 105476 9.32% 864
guetzli_91 123150 10.89% 965
guetzli_92 143115 12.65% 1012
guetzli_93 164145 14.51% 1300
guetzli_94 193832 17.13% 1290
guetzli_95 227724 20.13% 1593
guetzli_96 294433 26.03% 2125
guetzli_97 409454 36.19% 3106
guetzli_98 569443 50.33% 8299
guetzli_99 #N/A #N/A 2937
guetzli_100 887081 78.41% 1002
libjpeg_10 36775 3.25% 0
libjpeg_20 44125 3.90% 0
libjpeg_30 51466 4.55% 1
libjpeg_40 58074 5.13% 0
libjpeg_50 64661 5.72% 0
libjpeg_60 71320 6.30% 0
libjpeg_70 82753 7.31% 1
libjpeg_80 102663 9.07% 0
libjpeg_84 117094 10.35% 0
libjpeg_85 120289 10.63% 1
libjpeg_86 126413 11.17% 1
libjpeg_87 129916 11.48% 0
libjpeg_88 137630 12.17% 0
libjpeg_89 142059 12.56% 1
libjpeg_90 191897 16.96% 1
libjpeg_91 204643 18.09% 1
libjpeg_92 212923 18.82% 0
libjpeg_93 234967 20.77% 0
libjpeg_94 262153 23.17% 1
libjpeg_95 293281 25.92% 1
libjpeg_96 341433 30.18% 0
libjpeg_97 394283 34.85% 1
libjpeg_98 458633 40.54% 1
libjpeg_99 629620 55.65% 0
libjpeg_100 879146 77.71% 1

※guetzliのQ=99時(恐らく)メモリ枯渇によりOSにkillされたため所要時間はkillされるまでの時間を意味する。出力ファイルは得られていない。
処理時間と圧縮率グラフ(データパターン:空と雲)
 

Data Pattern: Plum

梅の花

Input File Spec
Resolution
1280x961
Bit Depth
8bit
Color Space
sRGB
File Format
PNG (internally ZIP compression)

 

Result
Quality OutputSize [Bytes] CompressionRatio ProcessingTime [sec]
guetzli_84 97614 6.72% 866
guetzli_85 99226 6.83% 899
guetzli_86 105367 7.25% 808
guetzli_87 108190 7.45% 955
guetzli_88 113589 7.82% 947
guetzli_89 119097 8.20% 933
guetzli_90 131471 9.05% 913
guetzli_91 141347 9.73% 1021
guetzli_92 151238 10.41% 1078
guetzli_93 168160 11.58% 1177
guetzli_94 218603 15.05% 1312
guetzli_95 253366 17.44% 1413
guetzli_96 314340 21.64% 1840
guetzli_97 403307 27.77% 2316
guetzli_98 531716 36.61% 3378
guetzli_99 #N/A #N/A 9767
guetzli_100 998122 68.72% 1371
libjpeg_10 46810 3.22% 1
libjpeg_20 58868 4.05% 1
libjpeg_30 69295 4.77% 0
libjpeg_40 77345 5.33% 1
libjpeg_50 85080 5.86% 1
libjpeg_60 93335 6.43% 0
libjpeg_70 106570 7.34% 0
libjpeg_80 129395 8.91% 1
libjpeg_84 145770 10.04% 1
libjpeg_85 149649 10.30% 0
libjpeg_86 156702 10.79% 0
libjpeg_87 161086 11.09% 1
libjpeg_88 170370 11.73% 1
libjpeg_89 175960 12.12% 0
libjpeg_90 236379 16.27% 0
libjpeg_91 250694 17.26% 1
libjpeg_92 260963 17.97% 1
libjpeg_93 286149 19.70% 1
libjpeg_94 317138 21.84% 0
libjpeg_95 352415 24.26% 1
libjpeg_96 410387 28.26% 1
libjpeg_97 477767 32.89% 0
libjpeg_98 564811 38.89% 0
libjpeg_99 744996 51.29% 1
libjpeg_100 993681 68.42% 0

※guetzliのQ=99時(恐らく)メモリ枯渇によりOSにkillされたため所要時間はkillされるまでの時間を意味する。出力ファイルは得られていない。
処理時間と圧縮率グラフ(データパターン:梅の花)
 

Data Pattern: ST

東京スカイツリーと東武スカイツリーライン

Input File Spec
Resolution
960x1280
Bit Depth
8bit
Color Space
sRGB
File Format
PNG (internally ZIP compression)

 

Result
Quality OutputSize [Bytes] CompressionRatio ProcessingTime [sec]
guetzli_84 149535 10.79% 1007
guetzli_85 154671 11.16% 951
guetzli_86 172547 12.45% 1066
guetzli_87 179627 12.97% 1179
guetzli_88 190907 13.78% 1126
guetzli_89 201281 14.53% 1138
guetzli_90 222521 16.06% 1269
guetzli_91 241030 17.40% 1220
guetzli_92 273054 19.71% 1533
guetzli_93 305376 22.04% 1796
guetzli_94 349828 25.25% 2613
guetzli_95 1000920 72.25% 3396
guetzli_96 1000920 72.25% 5630
guetzli_97 563463 40.67% 7116
guetzli_98 640192 46.21% 6547
guetzli_99 #N/A #N/A 1922
guetzli_100 1000920 72.25% 3378
libjpeg_10 49933 3.60% 0
libjpeg_20 65809 4.75% 0
libjpeg_30 78656 5.68% 1
libjpeg_40 89208 6.44% 0
libjpeg_50 99266 7.16% 0
libjpeg_60 109669 7.92% 1
libjpeg_70 125058 9.03% 1
libjpeg_80 149758 10.81% 0
libjpeg_84 166401 12.01% 0
libjpeg_85 170677 12.32% 1
libjpeg_86 177723 12.83% 1
libjpeg_87 182479 13.17% 0
libjpeg_88 191039 13.79% 0
libjpeg_89 197472 14.25% 1
libjpeg_90 253220 18.28% 1
libjpeg_91 266341 19.22% 0
libjpeg_92 279623 20.18% 0
libjpeg_93 304535 21.98% 1
libjpeg_94 334901 24.17% 1
libjpeg_95 373172 26.94% 0
libjpeg_96 428833 30.95% 0
libjpeg_97 494866 35.72% 1
libjpeg_98 573413 41.39% 1
libjpeg_99 765021 55.22% 0
libjpeg_100 994901 71.81% 1

※guetzliのQ=99時(恐らく)メモリ枯渇によりOSにkillされたため所要時間はkillされるまでの時間を意味する。出力ファイルは得られていない。
処理時間と圧縮率グラフ(データパターン:東京スカイツリーと東武スカイツリーライン)
 

Data Pattern: TT

東京タワーと赤羽橋交差点

Input File Spec
Resolution
1280x853
Bit Depth
8bit
Color Space
sRGB
File Format
PNG (internally ZIP compression)

 

Result
Quality OutputSize [Bytes] CompressionRatio ProcessingTime [sec]
guetzli_84 140276 10.27% 862
guetzli_85 142514 10.43% 891
guetzli_86 147738 10.81% 948
guetzli_87 151917 11.12% 923
guetzli_88 160205 11.72% 981
guetzli_89 168046 12.30% 1031
guetzli_90 177333 12.98% 957
guetzli_91 188429 13.79% 951
guetzli_92 213015 15.59% 1026
guetzli_93 237694 17.40% 1191
guetzli_94 273493 20.02% 1409
guetzli_95 313902 22.97% 1603
guetzli_96 389090 28.47% 2093
guetzli_97 492023 36.01% 2488
guetzli_98 #N/A #N/A 2882
guetzli_99 #N/A #N/A 1232
guetzli_100 1055583 77.25% 2803
libjpeg_10 50777 3.72% 1
libjpeg_20 65733 4.81% 0
libjpeg_30 77741 5.69% 0
libjpeg_40 87845 6.43% 1
libjpeg_50 97300 7.12% 1
libjpeg_60 107364 7.86% 0
libjpeg_70 122566 8.97% 0
libjpeg_80 148103 10.84% 1
libjpeg_84 166795 12.21% 0
libjpeg_85 171440 12.55% 0
libjpeg_86 179257 13.12% 0
libjpeg_87 184679 13.52% 1
libjpeg_88 195090 14.28% 0
libjpeg_89 201887 14.77% 0
libjpeg_90 274507 20.09% 0
libjpeg_91 291756 21.35% 1
libjpeg_92 306423 22.43% 1
libjpeg_93 335662 24.56% 0
libjpeg_94 368727 26.98% 0
libjpeg_95 410511 30.04% 1
libjpeg_96 471052 34.47% 1
libjpeg_97 542070 39.67% 0
libjpeg_98 634336 46.42% 1
libjpeg_99 833589 61.00% 1
libjpeg_100 1080673 79.09% 1

※guetzliのQ=98,99時(恐らく)メモリ枯渇によりOSにkillされたため所要時間はkillされるまでの時間を意味する。出力ファイルは得られていない。
処理時間と圧縮率グラフ(データパターン:東京タワーと赤羽橋交差点)
 

まとめ

 非力なシングルボードコンピュータでもlibjpegは優れた動作パフォーマンスを示すことが確認できた。
 一方で、これまでに行ったWindows環境でのUltrabookでの検証同様に、guetzliは劣悪な動作パフォーマンスを示しており、実用性に対する疑問がより一層深まった。
 なお、4coreプロセッサのArmbian環境においてもユーザモードで喰われるCPU使用率は25%に留まることから、Windows版バイナリと同様にguetzliのマルチスレッド対応は行われていないことが解る。

 これまでの検証では、「同一ファイルサイズならlibjpegより高画質」というのがかなり誇張表現に感じられ、「libjpegより100倍から1000倍以上遅く、同一Qualityパラメータ指定時には必ずしもファイルサイズが小さくならず、メモリを湯水の如く消費し、CPUを1thred食い潰す激烈に遅いJPEGエンコーダ」というのが正直な感想です。
 処理時間はバカみたいにかかるけど、必ず高画質な結果が得られるという類の処理でもないですし、guetzliの使いどころが相変わらず謎なままです。
 



以上。