Selur's Little Message Board

Full Version: Wie SSIM mit Hybrid?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hallo Selur,
wie Millionen suche ich nach der höchsten Videoqualität. Komme von 4,6k-Raw und rendere in DNxHR für Hybrid aus. 
Ein Vergleich ist per Screenshot zwar möglich, aber subjektiv.
SSIM gibt mir eine Zahl.
Meine Fragen: Wie lasse ich mir unter Hybrid die SSiIM-Zahl ausgeben und wie bestimme ich den Ausgabeort, damit ich die SSIM-Datei finde?
SSIM/PSNR Werte können aktuell zwei Encoder mit ausgeben x264&x265.
x264->Misc->Main->Adjustmnts->Calculate->SSIM/PSNR
x265->Misc->Metrics->SSIM/PSNR
die Werte werden von den Encodern am Ende des Encodings ausgegeben.
Da es nicht per Frame, sondern nur durchschnittliche Werte ausgegeben werden sind es auch nicht viele.
Die Werte landen:
a. im DebugOutput (ab einem gewissen Level)
b. in der Report Datei die für jeden Job erstellt werden kann (Config->Internals->Create report file)
-> Ein separate Datei für SSIM/PSNR-Werte, für die man einen Ausgabeort festlegen müsste, gibt es nicht. Die Reportdatei wird im Ausgabeordner während der Abarbeitung des Jobs erstellt.

Hier mal ein Beispiel der Informationen aus dem Report für ein x265 encoding:
Quote:x265 (1 pass bitrate) x265 processing started
starting 05_09_15_0810_01_video@05:09:17.676 - E:\Output\test.mp4
"I:\Hybrid\64bit\x265.exe" --input - --output-depth 10 --y4m --profile main10 --qg-size 8 --limit-modes --no-open-gop --opt-ref-list-length-pps --radl 2 --qpmax 69 --crf 18.00 --opt-qp-pps --cbqpoffs -2 --crqpoffs -2 --limit-refs 0 --ssim-rd --psy-rd 2.50 --rdoq-level 2 --psy-rdoq 10.00 --qcomp 0.60 --aq-mode 0 --deblock=-1:-1 --limit-sao --psnr --ssim --range limited --colormatrix bt470bg --output "E:\Temp\05_09_15_0810_01.265"
y4m  [info]: 640x352 fps 25/1 i420p10 sar 1:1 unknown frame count
raw  [info]: output file: E:\Temp\05_09_15_0810_01.265
x265 [info]: HEVC encoder version 3.0_RC+4-8aebc58efe5c
x265 [info]: build info [Windows][GCC 8.2.1][64 bit] 10bit
x265 [info]: using cpu capabilities: MMX2 SSE2Fast LZCNT SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x265 [warning]: --psnr used with psy on: results will be invalid!
x265 [warning]: --tune psnr should be used if attempting to benchmark psnr!
x265 [warning]: Radl requires fixed gop-length (keyint == min-keyint). Disabling radl.
x265 [info]: Main 10 profile, Level-2.1 (Main tier)
x265 [info]: Thread pool created using 16 threads
x265 [info]: Slices                              : 1
x265 [info]: frame threads / pool features       : 4 / wpp(6 rows)
x265 [warning]: Source height < 720p; disabling lookahead-slices
x265 [info]: Coding QT: max CU size, min CU size : 64 / 8
x265 [info]: Residual QT: max TU size, max depth : 32 / 1 inter / 1 intra
x265 [info]: ME / range / subpel / merge         : hex / 57 / 2 / 2
x265 [info]: Keyframe min / max / scenecut / bias: 25 / 250 / 40 / 5.00
x265 [info]: Cb/Cr QP Offset                     : -2 / -2
x265 [info]: Lookahead / bframes / badapt        : 20 / 4 / 2
x265 [info]: b-pyramid / weightp / weightb       : 1 / 1 / 0
x265 [info]: References / ref-limit  cu / depth  : 3 / off / off
x265 [info]: AQ: mode / str / qg-size / cu-tree  : 1 / 0.0 / 8 / 1
x265 [info]: Rate Control / qCompress            : CRF-18.0 / 0.60
x265 [info]: tools: limit-modes rd=3 ssim-rd psy-rd=2.50 rdoq=2 psy-rdoq=10.00
x265 [info]: tools: rskip signhide tmvp strong-intra-smoothing
x265 [info]: tools: deblock(tC=-1:B=-1) sao
x265 [info]: frame I:      3, Avg QP:19.50  kb/s: 2868.93   PSNR Mean: Y:49.626 U:53.763 V:55.538  SSIM Mean: 0.991628 (20.772dB)
x265 [info]: frame P:    120, Avg QP:20.72  kb/s: 1215.21   PSNR Mean: Y:48.882 U:53.234 V:54.482  SSIM Mean: 0.991461 (20.686dB)
x265 [info]: frame B:    306, Avg QP:25.46  kb/s: 186.43    PSNR Mean: Y:47.586 U:52.982 V:54.198  SSIM Mean: 0.990518 (20.231dB)
x265 [info]: Weighted P-Frames: Y:0.8% UV:0.8%
x265 [info]: consecutive B-frames: 3.3% 0.0% 58.5% 21.1% 17.1%
encoded 429 frames in 7.04s (60.95 fps), 492.96 kb/s, Avg QP:24.09, Global PSNR: 49.390, SSIM Mean Y: 0.9907893 (20.357 dB)
finished after 00:00:07.167
finished...

created E:\Temp\05_09_15_0810_01.265 (1.01209 MB)
starting 05_09_15_0810_02_muxing@05:09:24.861 - E:\Output\test.mp4
"I:\Hybrid\64bit\MP4Box.exe" -par 1=1:1 -add "E:\Temp\05_09_~1.265"#video:fps=25 -brand hvc1 -itags tool="Hybrid 2019.01.12.1" -tmp "E:\Temp" -new "E:\Output\05_09_15_0810__02.mp4"
finished after 00:00:00.093
finished...

created E:\Output\05_09_15_0810__02.mp4 (1.01791 MB)
Die Ausgabe für x264 sieht vergleichbar aus.

Gruß Georg
Perfekt! Big Grin

Vielen, vielen Dank.
Zwei Nachfragen noch:
Höhere Zahlen sind besser, nehme ich hoffentlich richtig an. 
1. Steigen die Zahlen linear oder logarithmisch an?
2. Gibt es eine Faustformel zur Interpretation der Ergebnisse? Willkürliches Beispiel: Alles unter SSIM 95 ist optimierungswürdig? Wo liegt gewöhnlich das SSIM-Maximum?

Erster Test:
x265 [info]: frame I:      2, Avg QP:20.52  kb/s: 132181.92  PSNR Mean: Y:46.983 U:49.198 V:46.961  SSIM Mean: 0.986444 (18.679dB)
x265 [info]: frame P:     74, Avg QP:21.24  kb/s: 111184.14  PSNR Mean: Y:46.570 U:49.182 V:46.985  SSIM Mean: 0.985040 (18.251dB)
x265 [info]: frame B:    224, Avg QP:23.42  kb/s: 62133.23  PSNR Mean: Y:45.080 U:48.602 V:46.207  SSIM Mean: 0.979318 (16.844dB)
x265 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
x265 [info]: consecutive B-frames: 2.6% 0.0% 1.3% 92.1% 3.9%
encoded 300 frames in 306.70s (0.98 fps), 74699.46 kb/s, Avg QP:22.87, Global PSNR: 45.989, SSIM Mean Y: 0.9807771 (17.162 dB)
finished after 00:05:07.407
finished...

Ausgangsmaterial war 4,6K-DNxHG HQX-10Bit. Das habe ich per Vapor und Lancoz auf UHD runterrechnen lassen. An welchen Stellschrauben könnte ich noch drehen?
zu 1.: quadratisch polynomiell Smile (wenn ich mir die Formel angucke: https://de.wikipedia.org/wiki/Strukturel...lgorithmus)
zu 2: SSIM Maximum ist 1, alles was nicht 1 ist, ist Verbesserungswürdig. Smile Ob SSIM XY für einen okay ist oder nicht kommt immer darauf an was man machen will.
Würde grob sagen:
0,95: mies
0,98: akzeptable, aber nicht toll
0,99: gut bis super
aber es hängt sehr von der Quelle ab.
Verrauschte Quellen die durch den Encoder entrauscht werden können mit 0,95 super aussehen.
Sehr detailreiche Quellen können mit 0,99 noch mies aussehen. Smile
-> Würde empfehlen, einfach mal eine typische Quelle zu nehmen die Du verwendest und sie mit unterschiedlichen crf Werten zu encoden und dann mal SSIM und die von Dir wahrgenommene Qualität zu vergleichen.

Wichtig ist zu bedenken, dass SSIM keine psychovisuellen Effekte berücksichtigt. Werden Optionen verwendet die psychovisuelle Effekte berücksichtigen schwindet die Aussagekraft von bestimmten SSIM Werten sehr schnell dahin.

Cu Selur
(16.01.2019, 17:52)Selur Wrote: [ -> ]zu 1.: quadratisch polynomiell Smile (wenn ich mir die Formel angucke: https://de.wikipedia.org/wiki/Strukturel...lgorithmus)
zu 2: SSIM Maximum ist 1, alles was nicht 1 ist, ist Verbesserungswürdig. Smile Ob SSIM XY für einen okay ist oder nicht kommt immer darauf an was man machen will.
Würde grob sagen:
0,95: mies
0,98: akzeptable, aber nicht toll
0,99: gut bis super
aber es hängt sehr von der Quelle ab.
Verrauschte Quellen die durch den Encoder entrauscht werden können mit 0,95 super aussehen.
Sehr detailreiche Quellen können mit 0,99 noch mies aussehen. Smile
-> Würde empfehlen, einfach mal eine typische Quelle zu nehmen die Du verwendest und sie mit unterschiedlichen crf Werten zu encoden und dann mal SSIM und die von Dir wahrgenommene Qualität zu vergleichen.

Wichtig ist zu bedenken, dass SSIM keine psychovisuellen Effekte berücksichtigt. Werden Optionen verwendet die psychovisuelle Effekte berücksichtigen schwindet die Aussagekraft von bestimmten SSIM Werten sehr schnell dahin.

Cu Selur
Vielen, vielen Dank