Vergleich von HEVC-Codecs von MSU. So verbessern Sie die Ergebnisse

Im Oktober 2015 wurde am VMiK der Moskauer Staatlichen Universität ein weiterer Codec-Vergleichsbericht veröffentlicht , der diesmal mehrere HEVC-Codecs enthielt.

Der Ausgangspunkt für die Studie war, dass wir bei Tests für AVC und HEVC einen Unterschied in den Voreinstellungen festgestellt haben - für AVC wurde ein nicht modifiziertes schnelles Profil mit einer GOP verwendet, und für HEVC wurde ein modifiziertes Profil mit mehreren GOPs verwendet. Gleichzeitig erwies sich der x264-Encoder für die einzige im geöffneten Bericht beschriebene „Apple Tree“ -Datei als besser als x265, als er in den Diagrammen der Abhängigkeit von SSIM von der Bitrate ohne Berücksichtigung der Codierungsgeschwindigkeit schnell transkodiert wurde. Es stellte sich sofort die Frage: Vielleicht können diese oder andere offensichtliche Optionen dieses Bild verändern.

Der Bericht vergleicht Voreinstellungen, enthält jedoch keine Empfehlungen zu deren Korrektur. In diesem Artikel haben wir einen ähnlichen Vergleich durchgeführt und Empfehlungen zum Ändern der x265-Encoder-Voreinstellungen gegeben. Bei einer Videosequenz ähnlich der in der kostenlosen Version des Berichts untersuchten können die vorgeschlagenen Änderungen der Codierungsparameter die Komprimierungseffizienz verbessern, während der x265-Encoder beim Plotten des Berichts wiederhergestellt wird.

Die modifizierten Voreinstellungen beanspruchen keine Universalität. Das Testen einer großen Anzahl von Videosequenzen würde den Rahmen dieser Studie sprengen. Sie können jedoch als Ausgangspunkt für die Suche nach Möglichkeiten zur Steigerung der Codierungseffizienz von x265 empfohlen werden.

Über das Projekt



Die Aufgabe der Videokodierung bei der Multimedia-Verarbeitung, sei es Übertragung, Bearbeitung oder Bearbeitung, Speicherung, stellt sich ständig sowohl bei der Entwicklung von Anwendungen und Diensten als auch bei deren Konfiguration zum Zeitpunkt der Verwendung. Aufgrund der großen Anzahl beliebter Video-Codecs, auch wenn sie oft vom gleichen Typ sind, ist es nicht einfach, den optimalen aus ihnen auszuwählen und dann die richtigen Einstellungen vorzunehmen. Unter diesen Gesichtspunkten wird wahrscheinlich seit den 2000er Jahren im Labor für Computergrafik und Multimedia an der Fakultät für Computermathematik und Kybernetik (VMiK) der Moskauer Staatlichen Universität an einem Projekt zum Vergleich von Videocodecs gearbeitet.

Im Oktober 2015 wurde ein Codec-Vergleichsbericht veröffentlicht, der einige Codecs im HEVC-Format sowie einige andere enthält, die derzeit aktiv entwickelt werden. Als "Referenz" wurde der Kompressor x264 übernommen. Einer der interessanten Punkte in diesem Bericht ist der x265-Kompressor, und wir werden ihn untersuchen.
Als Analysewerkzeug verwenden wir SolveigMM Zond 265, den Dateianalysator HEVC / H.265 und AVC / H.264.

Bild


Methoden zum Vergleichen von Codecs und Auswählen von Parametern





Wir beschreiben die Technik. Der Vergleich im Bericht wird gemäß den Kriterien Bitratenqualitätsgeschwindigkeit (SSIM, PSNR) durchgeführt. Das im Bericht beschriebene Verfahren zum Vergleichen des Verhältnisses von Bitrate / Qualitätsmetrik (Absatz C.4) ist wie folgt.
Wir wählen mehrere Bitratenwerte aus (zum Beispiel 7 Werte: 1, 2, 4, 6, 8, 10 und 12 Mbit / s), für die wir die erforderlichen Qualitätsmetriken für jeden Codec berücksichtigen.

Wir markieren die erhaltenen Werte in der Grafik: Qualitätsmetrik (Abszissenachse) - Bitrate (Ordinatenachse).

  1. Linear interpolieren.
  2. Wir wählen den breitesten Bereich aus, in dem alle Diagramme definiert sind, und finden den Bereich unter allen Diagrammen.
  3. Als Maß für die Qualität eines bestimmten Codecs (oder einer Voreinstellung) nehmen wir das Verhältnis seiner Fläche zur Fläche für den Referenzcodec. Je niedriger die Zahl, desto effizienter ist der Codec.

Wählen Sie als Referenz x265 mit der im Bericht ausgewählten Voreinstellung aus (Tabelle 1). Der Bericht verwendet nicht die neueste Version des Kompressors. Sie finden sie hier: x265 1.5 + 460-ac85c775620f . Bei Verwendung der neuesten Version ändert sich jedoch nichts grundlegend.
Die verwendeten Kompressorvoreinstellungen sind in Tabelle 1 (für die Desktop-Plattform) aufgeführt.

Zerreißen
x265 -p veryslow --bitrate% BITRATE_KBPS %% SOURCE_FILE% -o% TARGET_FILE% --input-res% WIDTH% x% HEIGHT% --fps% FPS%
Universelle Codierung
x265 -p mittel --bitrate% BITRATE_KBPS %% SOURCE_FILE% -o% TARGET_FILE% --input-res% WIDTH% x% HEIGHT% --fps% FPS%
Schnelle Neukodierung
x265 -p ultraschnell --ref 3 --bitrate% BITRATE_KBPS %% SOURCE_FILE% -o% TARGET_FILE% --input-res% WIDTH% x% HEIGHT% --fps% FPS%
Tabelle 1. Einstellungen des x265-Kompressors im Bericht „MSU HEVC Video Codec Comparison“.

Um Empfehlungen zum Ändern von Voreinstellungen zu erhalten, testen wir alle Einstellungen, aus denen sie bestehen - welchen Beitrag jede Komponente zu Qualität und Geschwindigkeit leistet. Der Plan hier ist wie folgt.
  1. Wir codieren die Datei und ändern jeden Parameter der Voreinstellung: von schneller Transcodierung zu universell, von universell zu "Rippen". Gleichzeitig sparen wir die Codierungszeit.
  2. Wir berechnen das Qualitätsmaß (wie oben angegeben) und die relative Codierungszeit (den minimalen FPS-Codierungswert für die Datei "voreingestellter geänderter Parameter" relativ zu allen ausgewählten Bitratenwerten).
  3. Aus der Tabelle, die aus einem variablen Parameter, einem Qualitätsmaß und einem minimalen FPS besteht, wählen wir die Parameter aus, die zur Verbesserung der Voreinstellungen verwendet werden können.

Wir beschränken uns auf die Parameter von Voreinstellungen für die universelle Codierung und für das "Rippen" (Tabelle 2) und enthüllen die Parameter "-p Medium" und "-p ultraschnell". Fügen Sie ihnen zwei weitere hinzu, die im Bericht fehlen: "--keyint -1 --tune ssim". Wir werden die aufgelisteten Parameter mit Voreinstellungen für die schnelle bzw. universelle Transcodierung ergänzen.
Universelle Codierung
--rc-lookahead 20 --scenecut 40 --ctu 64 --min-cu-size 8 --bframes 4 --b-adapt 2 --subme 1 --me hex --early-skip --sao - signhide --weightp --rd 3 --aq-Stärke 1.0 --aq-Modus 1 --cutree --no-fast-intra
Zerreißen
--weightb --amp --rect --rc-lookahead 40 --bframes 8 --tu-inter-depth 3 --tu-intra-depth 3 --rd 6 --rdoq 2 --psy-rdoq 1.0 - -subme 4 --max-merge 4 --me star --ref 5 --b-intra --lookahead-slices 0
Tabelle 2. Kandidatenparameter zum Ändern der Voreinstellungen des MSU HEVC Video Codec-Vergleichsberichts


Testen



Der in der kostenlosen Version des Berichts verwendete Download-Link für die Apple Tree-Testsequenz (Abb. 1) ist nicht angegeben. Wir werden eine ähnliche auswählen, indem wir ihre Hauptfunktion verwenden - eine Nahaufnahme, eine große Anzahl kleiner Details. Beispiel: " big_buck_bunny_1080p_h264.mov ", ein Intervall von 338 Frames ab 24 Sekunden:

ffmpeg -i big_buck_bunny_1080p_h264.mov -ss 00:00:24 -frames: v 338 -c: v rawvideo -pix_fmt yuv420p sample.yuv

Bild
Abbildung 1. Merkmale der Sequenz Apple Tree “

Um bei der Implementierung der drei oben genannten Schritte des Plans nicht viel Zeit damit zu verbringen, die erforderlichen Zahlen über die Zond 265-Oberfläche zu schreiben, ist es zweckmäßig, die Fähigkeit zu nutzen, über die Befehlszeile zu arbeiten (Tabelle 3):
zond265_x64% COMPRESSED_FILE% -iref% REFERENCE_420P_FILE% -nowait -report t = Qualität, statstream qm = SSIM o =% TARGET_CSV_FILE%
Eine Liste aller Parameter sowie deren detaillierte Beschreibung finden Sie auf der Dokumentationsseite von Zond 265 .

Parameter
Beschreibung
-iref
Festlegen der Referenz-YUV-Datei
-bericht
Festlegen der Betriebsart Zond 265 in der Befehlszeile
t = Qualität, statstream
Hier wird die Generierung von zwei Berichten ausgewählt: Qualität und Statistik des Videostreams
qm = SSIM
Qualitätsmetrik zur Berechnung
o
Pfad zur CSV-Berichtsdatei
-nowait
Ohne Pausen muss der Zond 265 selbst unverzüglich von Datei zu Datei wechseln
Tabelle 3. Zond 265-Befehlszeilenparameter, die zum Kompilieren eines Skripts erforderlich

sind Hier sind zwei Skripte für Python 2.7: eines zum Codieren von 266 Dateien (20 Einstellungen für die erste, 18 Einstellungen für die zweite Voreinstellung, für 7 Bitraten: 1, 2, 4, 6, 8, 10, 12 Mbit / s), die zweite für die Berichterstellung im CSV-Format (Datei - das Verhältnis der FPS-Codierung zur Referenzkonfiguration - das Verhältnis der SSIM-Metrik zur Referenzkonfiguration).
Wie aus den Berichtstabellen für das Fragment der Datei " big_buck_bunny_1080p_h264.mov " (Tabellen 5 und 6) ersichtlich ist , können Sie die Konfiguration beispielsweise wie in Tabelle 4 gezeigt ändernDer Wert für das Qualitätsmaß sollte kleiner als eins sein, und der Wert für die relative Codierungszeit sollte mehr als eins betragen.
Der Test wurde auf einem Computer mit der folgenden Konfiguration durchgeführt: Intel Core i7-2600 @ 3,4 GHz, 16 GB RAM. Die größte Qualitätsverbesserung bietet der Parameter "--min-cu-size 8" für schnelle Codierungskonfigurationen, für die universelle Codierung - der Parameter "--rdoq-level 2" (verlangsamt aber vor allem auch die Codierung).

Schnelle Neukodierung
x265 -p ultraschnell --ref 3 --rc-lookahead 20 --min-cu-size 8 --bframes 4 - früh überspringen --cutree --tune ssim --bitrate% BITRATE_KBPS %% SOURCE_FILE% -o% TARGET_FILE% --input-res% WIDTH% x% HEIGHT% --fps% FPS%
Universelle Codierung
x265 -p mittel --weightb --bframes 8 --tu-intra-depth 3 --psy-rdoq 1.0 --b-intra --lookahead-slices 0 --tune ssim --bitrate% BITRATE_KBPS %% SOURCE_FILE% - o% TARGET_FILE% - Eingabeauflösung% BREITE% x% HÖHE% - fps% FPS%
Tabelle 4. Änderung der Voreinstellungen des MSU HEVC-Videocodec-Vergleichsberichts zur Erhöhung der Codierungseffizienz bei gleicher Codierungsrate

Tabelle 5. Bericht über die Änderung der Schnellrekodierungsvoreinstellung
image
5.


Tabelle 6. Bericht über die Änderung der universellen Codierungsvoreinstellung
image
6.


Die richtige Auswahl der Optionen lässt sich leicht überprüfen, indem Sie das Codierungsskript mit den geänderten Voreinstellungen ausführen (Tabelle 7).

Konfiguration
Qualitätsmaß
Relative Codierungszeit
Schnelle Transcodierung (Referenz)
1
1
Schnelle Transcodierung, modifiziert
0,69
0,97
Universelle Transcodierung (Referenz)
1
1
Universelle Transcodierung, modifiziert
0,85
0,94
Tabelle 7. Codierungseffizienz unter Verwendung geänderter Voreinstellungen im Vergleich zu den Berichtsvoreinstellungen „MSU HEVC Video Codec Comparison“

Lassen Sie uns untersuchen, welche Auswirkungen die Änderung der Optionen hat. Öffnen Sie die im Zond 265 codierte Datei mit der geänderten Voreinstellung, wenn Sie die 8-Mbit / s-Bitrate schnell transkodieren, und vergleichen Sie sie mit der Datei. codiert unverändert voreingestellt. Die Größe der maximalen Codiereinheit bleibt gleich und beträgt 32 x 32 (Bereich „--ctu 32“). Die Größe des Mindestblocks verringerte sich jedoch von 16 auf 8 (der Bereich „--min-cu-size 8“). Dieser Parameter führte zu der größten Qualitätssteigerung. Die Anzahl der B-Frames wurde von 3 auf 4 erhöht (der Bereich "--bframes 4"), aber die maximale Anzahl der "Referenz" -Rahmen wurde erhöht (der Bereich "--ref 4"). Der SSIM-Bereich zeigt die maximalen SSIM / PSNR-Diagramme für drei Komponenten: Helligkeit (Luma) und zwei Farbkomponenten (Cb, Cr). Sie stiegen von 0,9623 bis 0,9966 auf 0,9771 bis 0,9991. Die verbleibenden zusätzlichen Parameter (--rc-lookahead 20 --early-skip --cutree) wirken sich auf den Codierungsalgorithmus aus und nicht auf den Typ des resultierenden Videos. Dies spiegelt sich hauptsächlich in der Codierungsgeschwindigkeit wider (siehe Tabelle 5). Es sollte beachtet werdenOptisch hat sich das Bild des decodierten Rahmens geändert - Codierungsartefakte sind jetzt nicht mehr sichtbar.

Bild
Abbildung 2. Screenshot der Zond 265-Datei, die mit der korrigierten Konfiguration der schnellen Codierung codiert wurde.

Ebenso können Sie die Parameter der codierten Datei mit der modifizierten und unveränderten universellen Codierungsvoreinstellung überprüfen (Abbildung 3). Die Größe der minimalen TU-Partitionen änderte sich nicht und blieb gleich 4x4 (Bereich "--tu-Intra-Depth 3"), die Anzahl der B-Frames blieb unverändert und gleich 3 (Bereich "--bframes 3"). SSIM stieg von 0,9789-0,9994 auf 0,9811-0,9992. Im Vergleich zur schnellen Transcodierungskonfiguration wurde die maximale Blockgröße erhöht und betrug 64 x 64 (Bereich "--ctu 64"). Ein SAO-Filter (Bereich "--sao") wurde hinzugefügt.

Bild
Abbildung 3. Screenshot der Zond 265-Datei, die mit der korrigierten universellen Codierungskonfiguration codiert wurde.

Auf der Grundlage der Tests wird daher eine Liste von Optionen vorgeschlagen, um die Codierungseffizienz (Verbesserung der SSIM-Metrik bei gleicher Bitrate und Codierungsgeschwindigkeit) für schnelle und universelle Codierungskonfigurationen zu verbessern. Unter Verwendung der vorgeschlagenen Änderungen für eine Datei mit einer großen Anzahl kleiner Details verbesserte sich der Wert des integralen „Qualitätsmaßes“ des Berichts „MSU HEVC Video Codec Comparison“ für die schnelle Konvertierung um 31% und bei der universellen Konvertierung um 15%, und die Codierungsgeschwindigkeit änderte sich nicht wesentlich. Weil Da die Tests für jede Option separat durchgeführt wurden, können Sie in der Praxis nur einige praktische Optionen auswählen und verwenden und nicht die gesamte vorgeschlagene Liste.

Referenzen



  1. HEVC Video Codecs Comparison
  2. Blender Foundation | www.blender.org
  3. Zond 265 home page

Source: https://habr.com/ru/post/de388423/


All Articles