Video Upscaling mit Machine Learning im Hintergrund

Vor ein paar Jahren hatte ich mich mit einer Videosequenz herumgespielt, um einen gefällten Baum virtuell wieder auferstehen zu lassen. Das Ausgangsmaterial war qualitativ mäßig, aber der Einzeiler machte, was er sollte: Der Baum stand wieder.

ML-gestütztes Video Upscaling wollte ich immer mal wieder ausprobieren. Ein erster Anlauf mit Real-ESRGAN in Ubuntu 22.04/WSL war unbefriedigend, die Performance war mau:

  • Die AMD Ryzen iGPU wird von ROCm nicht unterstützt.
  • Das Modell lief nur auf einem CPU-Kern.

Den neuen Anlauf gestaltete ich auf Basis von Ubuntu 24.04/WSL bzw. nativ mit Fedora 43. Die Performance war in beiden Fällen deutlich besser, obwohl die iGPU weiterhin keine Nutzung fand. Dafür skalierte nun das Modell über alle CPU-Kerne. Allerdings stehen hinter der Aussage „deutlich besser“ immer noch ca. 12 Sekunden pro Frame.

Baum sagt adieu – nach dem Upscaling mit Real-ESRGAN
Und da ist er wieder, mein Freund der Baum – nach dem Upscaling mit Real-ESRGAN

Was ziehe ich aktuell daraus:

  • Mein persönlicher Proof-of-Concept ✅
  • Um so weit zu kommen, musste ich die eine oder andere Library patchen um sie mit aktuelleren Python-Versionen zum Laufen zu bekommen (insbesondere basicsr) ✅
  • Die erzielte Video-Qualität ist auch bei wirklich schlechtem Ausgangsmaterial gut. Das zeigte der obige PoC, aber auch andere Videoschnipsel, die ich hier nicht posten kann ✅
  • ML auf CPU-Kernen macht keinen Spaß, schon gar nicht bei vielen Hundert oder Tausend Frames. Eine letzte Möglichkeit, die iGPU doch noch zum Mitmachen zu überreden, wäre die Inferenz via Vulkan zu beschleunigen. Aber auch da reden wir vielleicht von Faktor 2 bis 5 an Verbesserung gegenüber der reinen CPU – zu langsam um ein ernsthaftes Projekt zu wagen.

Und hier nochmals der Link zu den originalen Videos.

    Kommentare

    Schreibe einen Kommentar