Deep Learning für bessere Bildkompression

Google: Bildkompression mit neuralen Netzwerken
Kommentare

Datenkompression wird im Web so gut wie überall genutzt: für Videos, Bilder, Musik und sogar für einen Text wie diesen hier. Kompressionstechniken machen das Teilen von Inhalten schnell und effizient. Ohne Datenkompression würden die benötigte Zeit und Bandbreite für die Informationsbeschaffung in exorbitante Höhen ansteigen. Google hat jetzt sein durch neurale Netzwerke trainiertes Kompressionsmodell via TensorFlow veröffentlicht.

Das Google-Research-Team hat eine neue Variante der bekannten Gated Recurrent Unit zur Bildkompression vorgestellt. Das Tool trägt den Namen Residual Gated Recurrent Unit (Residual GRU) und kombiniert bestehende GRUs mit remanenten Verbindungen, die im zugehörigen Paper vorgestellt wurden. Die Entwickler setzen dafür auf zwei Sätze von neuralen Netzwerken – eins zum Erstellen der Codes aus einem Bild (Encoder) und eins zum Erstellen eines Bilds aus den Codes (Decoder). Hierdurch konnte eine signifikante Steigerung der Bildqualität erreicht werden, so Google.

Bildkompression à la Google

Googles System verfeinert iterativ eine Rekonstruktion des Originalbilds. Sowohl der Encoder als auch der Decoder nutzen dafür Layer von Residual GRU, sodass zusätzliche neue Informationen von einer Iteration zur nächsten weitergegeben werden kann. Jede Iteration fügt mehr Bits zum Encoding dazu, was eine bessere Qualität der Rekonstruktion ermöglicht. Aus dieser Berechnung ergibt sich das sogenannte residual Image.

Das Netzwerk arbeitet grob gesagt wie folgt:

  1. Das initiale Residual, R[0], bezieht sich wie folgt auf das Originalbild I: R[0] = I
  2. Für die erste Iteration wird i=1 gesetzt
  3. Die Iteration[i] nimmt R[i-1] als Input und startet Encoder und Binarizer, um das Bild in B[i] zu komprimieren
  4. Die Iteration[i] startet den Decoder auf B[i] um ein rekonstruiertes Bild P[i] zu erhalten
  5. Das Residual für die Iteration[i] wird berechnet: R[i] = I – P[i]
  6. Es wird festgelegt, dass I=i+1 und alle Schritte ab Punkt 3 beliebig oft wiederholt

Das residual Image zeigt, wie sehr sich die aktuelle Version des komprimierten Bilds vom Original unterscheidet. Dieses Bild wird dann dem Netzwerk als Input gegeben, um die Kompressionsfehler aus der nächsten Version des komprimierten Bilds zu entfernen. Das komprimierte Bild besteht nun aus der Verkettung von B[1] durch B[N].

Um zu verstehen, wie das genau funktioniert, betrachtet man sich am besten folgendes Beispiel der ersten beiden Iterationen des Bildkompressionsnetzwerks. Alles fängt mit einem Bild eines Leuchtturms an. Beim ersten Durchlauf durch das neurale Netzwerk wird das Originalbild als Input (R[0[ = I) eingegeben. P[I] bezeichnet das rekonstruierte Bild. Der Unterschied zwischen Original und kodiertem Bild ist das Residual, R[1], das den Fehler in der Kompression widerspiegelt.

Links: Originalbild, I = R[0], Mitte: Rekonstruiertes Bild, P[1], Rechts: Residual R[1]

Links: Originalbild, I = R[0], Mitte: Rekonstruiertes Bild, P[1], Rechts: Residual R[1]

Beim zweiten Durchlauf durch das Netzwerk wird R[1] als Netzwerk-Input gegeben. Daraufhin entsteht ein Bild mit höherer Qualität, P[2]. Aber wie bildet das System ein so gutes Bild vom Residual nach? Da das Modell rekurrente Nodes mit „Gedächtnis“ nutzt, kann das Netzwerk Informationen von jeder Iteration speichern und auf die nächste übertragen. Die Infos über das Originalbild in Iteration[1] werden gemeinsam mit R[1] verwendet, um ein besseres P[2] aus B[2] zu erstellen. Zum Schluss wird ein neues Residual, R[2], generiert, indem P[2] vom Originalbild abgezogen wird.

Der zweite Durchlauf durchs Netzwerk. Links: R[1] als Input, Mitte: Rekonstruktion mit bessere Qualität, P[2], Rechts: kleineres Residual R[2]

Der zweite Durchlauf durchs Netzwerk. Links: R[1] als Input, Mitte: Rekonstruktion mit bessere Qualität, P[2], Rechts: kleineres Residual R[2]

Bei jeder weiteren Iteration erhält das Netzwerk mehr Informationen über die mit der Kompression eingeführten Fehler. Dank dieser kann das System die Residuals immer besser vorhersagen, was zu einer besseren Bildrekonstruktion führt.

Beispiel für bessere Bildkompression

Um die Unterschiede zwischen Dateigröße und Bildqualität zu verdeutlichen, hat das Google-Team einen Bild eines Hundes genommen und zwei komprimierte Versionen davon erstellt, einmal JPEG und einmal Residual GRU. Beide Bilder erzielten eine beinah ähnliche Qualitätsrate, während das durch die neuralen Netze generierte Bild um 25 Prozent kleiner als das JPEG ist.

Links: Originalbild, Mitte: JPEG, Rechts: Residual GRU

Links: Originalbild, Mitte: JPEG, Rechts: Residual GRU

Ein genauerer Blick auf die Schnauze des Hundes zeigt, dass die Residual-GRU-Methode im Gegensatz zum JPEG keine magentafarbigen Blocks und Verzerrungen in der Bildmitte erzeugt. Ein Abstrich ist aber zu machen: Die Details der Schnurrhaare und die Textur gehen verloren. Googles Modell zeigt aber große Fortschritte im Bereich der Reduktion von Kompressionsartefakten. Neurale Netzwerke können also dazu beitragen, Kompressionsresultate zu verbessern – sowohl in der Qualität als auch in der Größe.

Ausführliche Informationen zu Googles Residual GRU finden sich im zugehörigen Blogpost. Dort steht auch die Studie zum Modell und zu weiteren Versuchen mit rekurrenten neuralen Netzwerken zur Verfügung. Das Kompressionsmodell kann via GitHub heruntergeladen und in TensorFlow eingesetzt werden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -