画質比較 (2020.03) 実写編

11 0
念願のIceLakeを入手したので、画質比較を行ってみた。あと3200Gも入手したのでついでにVCEもテスト。

IceLakeは前世代から比べるとかなり飛躍したいて、ちょっとびっくりするぐらい。一方VCEは…


環境・条件



テスト用の環境はこんな感じ。前の環境からソフトウェアやドライバのバージョンをアップデートしている。

>
x264
x265
nvenc
(1060)
nvenc
(2070)
qsv
(HSW)
qsv
(KBL)
qsv
(ICL)
vce
(Vega)
CPUi9 7980xe i3
4170
i7
7700K
i5
1035G7
R3
3200G
GPU - GTX
1060
RTX
2070
HDG
4400
HDG
630
Iris
Plus
Vega8
ドライバ 442.19 5058 7870764120.2.1
OS Win10 x64


使用ソフト

x264 r2988 x64
x265 3.3+2 x64
NVEncC 4.68 x64
QSVEncC 3.33 x64
VCEEncC 5.04 x64

入力
sample_movie_1080p.mpg
MPEG2 1920x1080 29.97fps 5203frame

使用コマンド
QSVEnc/NVEncについては、おそらく画質が一番高くなるであろうオプションを試した。x264/x265はきりがないのでpresetをそのまま使用している。

なお、x264/x265では、今回入れてない--tune ssimを入れてssimに最適化したエンコをすることでさらにssim的には改善の余地があることに注意。

x264 medium
--crf <x>

x264 veryslow
--crf <x> --preset veryslow

x265 medium
--crf <x>

x265 veryslow
--crf <x> --preset veryslow

x265 medium 10bit
--crf <x> --input-depth 10 --output-depth 10

x265 veryslow 10bit
--crf <x> --input-depth 10 --output-depth 10 --preset veryslow

nvenc H.264
--vbrhq 0 --vbr-quality <x> --preset quality --weightp --bref-mode each --lookahead 32 --level 5.2

nvenc HEVC
--vbrhq 0 --vbr-quality <x> --preset quality --weightp --bref-mode each --lookahead 32 -c hevc --level 6

nvenc HEVC 10bit
--vbrhq 0 --vbr-quality <x> --preset quality --weightp --bref-mode each --lookahead 32 -c hevc --level 6 --output-depth 10

nvenc HEVC + Bframes
--vbrhq 0 --vbr-quality <x> --preset quality --weightp --bref-mode each --lookahead 32 -c hevc --level 6 -b 3

nvenc HEVC 10bit + Bframes
--vbrhq 0 --vbr-quality <x> --preset quality --weightp --bref-mode each --lookahead 32 -c hevc --level 6 --output-depth 10 -b 3

qsv H.264
--la-icq <x> --la-depth 60 -u 1

qsv HEVC
--icq <x> -u 1 -c hevc

qsv HEVC 10bit
--icq <x> -u 1 -c hevc --profile main10 --output-depth 10

vce H.264
--cqp <x>:<x>+2:<x>+5 -u slow
--vbr <x> -u slow

vce HEVC
--cqp <x>:<x>+2:> -u slow -c hevc
--vbr <x> -u slow -c hevc



結果



縦軸SSIM:Allが高いほど画質がよく、横軸ビットレートが小さいほど圧縮できているので、左上にいればいるほど良いことになる。

全データ (クリックで拡大)


まあ、正直線が多すぎてよくわかんない…。まあ、この数のデータとるの大変だったのが伝われば…というグラフ。


で、少しずつ見ていく。

まず、CPUエンコの比較。なお、--tune ssimを入れてないので、さらにssim的には改善の余地があることに注意。

特に低ビットレートではx265のほうが優位。ただまあ、もちろんその分エンコ時間がかかる。

やはりSSIM比較では10bitは明確に優位。正直もう8bitでバンディングとか気になるなら、HEVCの10bit使っとけばいいのではと思う。

ssim2_202003_table_x264_x265.png


本題のQSVの世代別比較。
HSW…Haswell
KBL…Kabylakeだが、CoffelakeもCometlakeも同じ。
ICL…Icelake

IcelakeのH.264はKabylakeのH.264とほぼ重なっている。つまり、IcelakeではH.264については手が入っていないみたい。

一方、HEVCは圧倒的だ…!もうなんか全く違うものが入っているとしか思えない。Kabylakeが2017年に登場してから3年もたっているとはいえ、大きな飛躍だと思う。(正直なんか間違ったんじゃないかと測りなおしたりした)

ssim2_202003_table_qsv.png


Icelakeでのpreset fast/normal/slowの比較。(さっきのグラフはslow)

HEVCのほうは、normalとslowの差がやや大きめ。H.264のほうはfastとnormalの差が大きめ。
ssim2_202003_table_qsv_icelake.png



一応ドライバ更新とかもしたので、NVENCのほうも再確認。てはいえ、前回(2018.11)とほぼ変わっていない。やはりBフレームが入ったHEVCは強い。
ssim2_202003_table_nvenc.png



QSV(Icelake)、NVENC(Turing)、VCE(Navi)の比較。

TuringのNVENCはKabylakeのQSVを超えるなかなかのものだったが、Icelakeはそれをもう一度ひっくり返した感じ。まあ、QSVのHEVCエンコードはNVENCのように爆速という感じではなくそれなりに時間がかかるし、QSVの実装はエンコード用の専用回路(ASIC)とGPUの演算器の併用方式なのに対して、NVENCとVCEは専用回路(ASIC)のみでの実装なので、QSVのほうが画質面では有利というのはあると思う。

VCEはまあ…。固定品質系のレート制御がない時点でこの比較は不利なのだが、それにしても…。うーん。

ssim2_202003_table_hwenc.png



最後にx264/x265とQSV(Icelake)の比較。

うーん、びっくりだ。もちろんx265で"--ssim"等のオプションを入れれば、x265のssimは上がるはず、というのを割り引いてもなかなかの結果だと思う(そもそもこんなに近くなると思ってなかったので、わざわざ普通やらない--tune ssimをx265エンコ時に入れるという発想がなかった)

ssim2_202003_table_qsvicl_x264_x265.png



というわけでざっくり画質比較をしてみた。なかなか出てこなかったIntel 10nmのCPU/GPUだけど、そのぶん(?)しっかり進化してKabylake世代からは大きく飛躍していた。いわゆるHWエンコとしてはなかなかの高画質(高圧縮)になっていると思う。

一方で、i5 1035G7に搭載されている64EUをぶん回しても、1080pのHEVC 10bitエンコ速度は50fps弱という感じで、エンコードがそこまで速いわけではない。なので、i5 1035G1とかのよりEU数が少ないGPUだともしかすると速度がもっと落ちてしまうかもしれない。
ページトップ