画質比較 (2020.03) アニメ編
この前実写版をやったので、今度はアニメ系の映像での結果。
ここでもIceLakeのQSVの画質の良さが確認できたけど、低ビットレートではソフトウェアエンコの強さが際立つなど、すこしだけ実写版とは傾向が違う感じかも。
環境・条件
テスト用の環境はこんな感じ。前の環境からソフトウェアやドライバのバージョンをアップデートしている。
使用ソフト
x264 r2988 x64
x265 3.3+2 x64
NVEncC 4.68 x64
QSVEncC 3.33 x64
VCEEncC 5.04 x64
入力
sakura_op.mpg
MPEG1 1280x720 30fps 3501frame
使用コマンド
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使っとけばいいのではと思う。

本題のQSVの世代別比較。
HSW…Haswell
KBL…Kabylakeだが、CoffelakeもCometlakeも同じ。
ICL…Icelake
IcelakeのH.264はKabylakeのH.264とほぼ重なっている。やはり、IcelakeではH.264については手が入っていないみたい。
やっぱりIcelakeでの飛躍は大きい。Kabylakeから3年たったとはいえ、これだけの画質向上は凄いと思う。

Icelakeでのpreset fast/normal/slowの比較。(さっきのグラフはslow)
HEVCのほうは、normalとslowの差がやや大きめ。H.264のほうはfastとnormalの差が大きめ。

今度はNVENCの再確認。まあドライバ更新しただけなので、前回(2018.11)とほぼ変わっていない。やはりBフレームが入ったHEVCは強い。

QSV(Icelake)、NVENC(Turing)、VCE(Navi)の比較。
高ビットレートのほうではTuringとIcelakeの差は大きくないが、低ビットレートになるほどIcelakeのほうがよくなっている印象。GPUを使っているのでこうした傾向になるのだろうか。
VCEはちょっと…。Vegaとかはどうなのだろうか。そちらもあまりよい話は聞こえてこないが…。

最後にx264/x265とQSV(Icelake)の比較。
そもそもx264/x265に近い水準までQSVがきたというのが驚き。ただ、低ビットレート側では、ややQSVは苦手としているようだ。

というわけでざっくり画質比較をしてみて、実写の時と同様、IcelakeのQSVは大きく進化していることがわかった。
問題はIcelakeは入手が難しいことで、デスクトップに来る気配はないし、搭載されているノートPCも少ない(第10世代といっても14nmのCommetlakeだったりする)。ノートPCはあまりエンコードに適した環境ではないので、なんとかデスクトップなIcelakeが早く手に入るようになるとよいのだが…。
ここでもIceLakeのQSVの画質の良さが確認できたけど、低ビットレートではソフトウェアエンコの強さが際立つなど、すこしだけ実写版とは傾向が違う感じかも。
環境・条件
テスト用の環境はこんな感じ。前の環境からソフトウェアやドライバのバージョンをアップデートしている。
x264 x265 | nvenc (1060) | nvenc (2070) | qsv (HSW) | qsv (KBL) | qsv (ICL) | >vce (Vega) | |
CPU | i9 7980xe | i3 4170 | i7 7700K | i5 1035G7 | R3 3200G | ||
GPU | - | GTX 1060 | RTX 2070 | HDG 4400 | HDG 630 | Iris Plus | Vega8 |
ドライバ | 442.19 | 5058 | 7870 | 7641 | 20.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
入力
sakura_op.mpg
MPEG1 1280x720 30fps 3501frame
使用コマンド
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使っとけばいいのではと思う。

本題のQSVの世代別比較。
HSW…Haswell
KBL…Kabylakeだが、CoffelakeもCometlakeも同じ。
ICL…Icelake
IcelakeのH.264はKabylakeのH.264とほぼ重なっている。やはり、IcelakeではH.264については手が入っていないみたい。
やっぱりIcelakeでの飛躍は大きい。Kabylakeから3年たったとはいえ、これだけの画質向上は凄いと思う。

Icelakeでのpreset fast/normal/slowの比較。(さっきのグラフはslow)
HEVCのほうは、normalとslowの差がやや大きめ。H.264のほうはfastとnormalの差が大きめ。

今度はNVENCの再確認。まあドライバ更新しただけなので、前回(2018.11)とほぼ変わっていない。やはりBフレームが入ったHEVCは強い。

QSV(Icelake)、NVENC(Turing)、VCE(Navi)の比較。
高ビットレートのほうではTuringとIcelakeの差は大きくないが、低ビットレートになるほどIcelakeのほうがよくなっている印象。GPUを使っているのでこうした傾向になるのだろうか。
VCEはちょっと…。Vegaとかはどうなのだろうか。そちらもあまりよい話は聞こえてこないが…。

最後にx264/x265とQSV(Icelake)の比較。
そもそもx264/x265に近い水準までQSVがきたというのが驚き。ただ、低ビットレート側では、ややQSVは苦手としているようだ。

というわけでざっくり画質比較をしてみて、実写の時と同様、IcelakeのQSVは大きく進化していることがわかった。
問題はIcelakeは入手が難しいことで、デスクトップに来る気配はないし、搭載されているノートPCも少ない(第10世代といっても14nmのCommetlakeだったりする)。ノートPCはあまりエンコードに適した環境ではないので、なんとかデスクトップなIcelakeが早く手に入るようになるとよいのだが…。
スポンサーサイト