Echtzeit-Zwischenflussschätzung für die Videoframe-Interpolation mit Python

| |

Home » Echtzeit-Zwischenflussschätzung für die Videoframe-Interpolation mit Python
Spread the love

Echtzeit-Zwischenflussschätzung für die Videoframe-Interpolation ist der Prozess der Erzeugung von Bildern aus einer Sequenz von Frames. Dies ist eine anspruchsvolle Aufgabe, da sie eine erhebliche Menge an Rechenressourcen erfordert. Darüber hinaus kann das Rendern von Videos ein mehrstufiger Prozess sein. Die Qualität der Videointerpolation wird von vielen Faktoren beeinflusst, z. B. Bildrate, Qualität der Videokodierung, Format des Videoinhalts (z. B. HD, 4k, 8k usw.). Die Gesamtqualität des gerenderten Videos hängt stark von der Kombination all dieser Faktoren ab. Wenn Sie Medien in höchster Qualität auf einer Website abspielen möchten, macht die Konvertierung von einer niedrigen Bildrate zu einer hohen Bildrate einen großen Unterschied. Das bidirektionale Verfahren zur Zwischenflussschätzung wird für die Videointerpolation verwendet, da es sowohl Echtzeit- als auch genaue Ergebnisse der Konvertierung zwischen verschiedenen Bildraten liefert.

Dieser Artikel stellt eine neuartige Methode zur Zwischenflussschätzung für die Echtzeit-Videoframe-Interpolation vor und erörtert die Funktionsweise der Frame-Interpolation und ihre Rolle beim effizienten Video-Rendering mit RIFE – RIFE oder Real-time Intermediate Flow Estimation, einem Algorithmus zur Zwischenflussschätzung für Videoframe-Interpolation (VFI). Wir werden auch eine kleine Anwendung erstellen, um ein Video zu interpolieren, um einige der Funktionen von RIFE zu testen.

Wie funktioniert die RIFE-Interpolation?

Neuere flussbasierte VFI-Methoden schätzen oft zuerst die bidirektionalen optischen Flüsse, skalieren und kehren sie dann zu ungefähren Zwischenflüssen um, was zu Artefakten an Bewegungsgrenzen und komplexen Pipelines führt. RIFE oder Real-Time Intermediate Flow Estimation for Video Frame Interpolation verwendet ein neuronales Netzwerk namens IFNet, das ein innovatives Netzwerkmodell einführt, das den Zwischenfluss direkt aus den optischen Flüssen erster und zweiter Ordnung schätzt. Mit diesen Geschwindigkeitsverbesserungen bietet RIFE einige der schnellsten existierenden Methoden zum Zuweisen von Objektsegmentierungen. Dadurch kann RIFE beliebige Zeitspannen für Frame-Interpolationen unterstützen, wodurch eine höhere zeitliche Auflösung als bei den meisten existierenden Methoden erreicht werden kann.

Es führt auch ein neues Inferenzschema ein, das die Leistung maximiert und gleichzeitig an eine Vielzahl von Aufgaben angepasst werden kann. Obwohl es sich möglicherweise nur um ein Open-Source-Projekt handelt, kann es für viele verschiedene Anwendungen sowohl in kommerziellen als auch in Forschungsumgebungen nützlich sein. Auch im Vergleich zu den beliebten SuperSlomo- und DAIN-Methoden ist RIFE bis zu 4- bis 27-mal schneller, liefert bessere Ergebnisse und verbraucht weniger Ressourcen.

Voraussetzungen

Obwohl ich bereits eine Requirements.txt-Datei im Repository angegeben habe, würden wir auch einige zusätzliche Ressourcen benötigen, um sie auszuführen. Diese würden sich aber von Maschine zu Maschine unterscheiden. Das größte Problem, auf das die meisten Leute stoßen würden, wäre das Fehlen von FFmpeg. FFmpeg ist ein Open-Source-Softwareprojekt für den Umgang mit Video-, Audio- und anderen Multimediadateien und wir benötigen es unbedingt, damit unsere Anwendung funktioniert.

Sie können zunächst überprüfen, ob Sie FFmpeg bereits haben oder nicht mit:

ffmpeg -version

Sie können FFmpeg wie folgt installieren:

Linux

FFmpeg kann mit dem folgenden Befehl installiert werden oder Sie können sie auch mit ihrer offiziell unterstützten Site hier installieren.

sudo apt install ffmpeg brew install ffmpeg

Mac 

Statische FFmpeg-Binärdateien für Macs finden Sie hier, sie können auch über die Brew-Bibliothek mit dem folgenden Befehl installiert werden:

brew install ffmpeg

Windows

Sie können die .exe-Datei direkt von GitHub unter Windows herunterladen.

Erstellen der Anwendung

Da dies ein sehr komplexes Projekt mit einer riesigen Codebasis ist, werden wir den Code hier nicht schreiben, sondern ich habe ihn in ein Github-Repository hochgeladen. Von dort aus können Sie ganz einfach darauf zugreifen. Laden Sie die Dateien von dort herunter und fahren Sie dann fort.

Sie können es auch über den folgenden Befehl klonen:

git clone [email protected]:hzwer/arXiv2020-RIFE.git

Bevor Sie fortfahren, erstellen Sie am besten eine virtuelle Umgebung und führen Sie die Operation darin aus:

cd arXiv2020-RIFEvirtualenv rifesource rife/bin/activate

Nachdem Sie das Projekt heruntergeladen und extrahiert oder geklont haben, öffnen Sie dessen Verzeichnis und installieren Sie die Voraussetzungen dafür:

cd arXiv2020-RIFE
pip3 install -r requirements.txt

Wenn alle Voraussetzungen richtig installiert sind, können Sie nun den Interpolationsprozess starten! Laden Sie einfach ein Video herunter, ziehen Sie in Betracht, ein kleines zu bekommen, da die Verarbeitung eine ganze Weile dauern kann. Ich habe dieses Animationsvideo von Youtube heruntergeladen (es ist von Mayde), Sie können auswählen, was Sie möchten, versuchen Sie einfach, ein kurzes zu bekommen, wenn Sie Ich will nicht, dass das die ganze Nacht dauert!

Nachdem Sie ein Video heruntergeladen haben, legen Sie es in den Projektordner und dann können Sie den Interpolationsprozess starten. Führen Sie einfach den folgenden Befehl aus, um ihn zu starten. Aber Sie sollten zuerst die Anwendungen davon sehen.

python3 inference_video.py --exp=1 --video=video.mp4  #Linux/Macpython inference_video.py --exp=1 --video=video.mp4  #Windows

Der obige Befehl interpoliert die Bildraten des Videos um das Zweifache, d. h., wenn ein Video 24 fps hat, wird es auf 48 fps erhöht. Mit RIFE können wir auch diesen Wert einfach ändern, sodass wir die Interpolation mit höheren FPSs durchführen können. Dazu müssen wir nur den Wert von –exp=1 . ändern

zu etwas anderem, wenn wir es zum Beispiel auf 2 ändern, ändert sich die Interpolation von 2 mal auf 4 mal und so weiter und so weiter.

Wir können auch –scale= am Ende des Befehls hinzufügen, sein Wertparameter steuert die Prozessauflösung für das optische Flussmodell. Beispielsweise:

python3 inference_video.py --exp=1 --video=video.mp4 --scale=0.5

Nachdem Sie den Befehl ausgeführt haben, sehen Sie in Ihrem Terminal eine Antwort wie diese:

Echtzeit-Zwischenflussschätzung für die Videoframe-Interpolation

Hier können Sie die aktuellen FPS Ihres Videos und die FPS nach Abschluss des Vorgangs sehen. In meinem Fall wird mein 24FPS-Video auf 48FPS umgestellt. Es zeigt auch, wie lange es dauern würde, was, wie du siehst, ziemlich viel für mich ist, da ich keine Grafikkarte habe, aber es sollte dich nicht stören, selbst wenn du eine sehr einfache Grafik hast Karte wie gerade haveinn verkürzt die Renderzeit erheblich.

Nachdem der Vorgang abgeschlossen ist, sehen Sie ein erstelltes Video namens video_2X_48fps.mp4 (wobei Sie Ihr Video auch „Video“ genannt haben). Und das ist die letzte Datei, in der Sie ihre Eigenschaften überprüfen und sehen können, ob sie funktioniert hat oder nicht.

Letzte Worte

Videointerpolation ist eine wichtige Technologie in einer Reihe von Videoverarbeitungsanwendungen. Die Rechenkosten der Videointerpolation sind das Haupthindernis, das ihre weit verbreitete Verwendung behindert hat. Die Autoren dieses Papiers haben einen Algorithmus entwickelt, der in der Lage ist, eine Videointerpolation mit einer höheren Bildrate als bestehende Verfahren durchzuführen und gleichzeitig weniger Rechenressourcen zu verwenden.

RIFE ist ein Algorithmus für effizientes Video-Rendering. Es handelt sich um einen Zwischendurchflussschätzungsalgorithmus, der eine Kombination von Funktionen anderer verwendet, die getestet und auf ihre Funktionsfähigkeit überprüft wurden. Die Funktionen funktionieren auch mit einer Reihe von Anwendungen, wie Sie unten sehen werden. Obwohl RIFE nicht viel Dokumentation hat, überwindet es die großen Schwierigkeiten, die bei der Frame-Interpolation auftreten, sehr einfach und ist auch leicht in Ihrem eigenen Projekt zu implementieren. Weitere Informationen zu RIFE finden Sie hier.

Hier sind einige nützliche Tutorials, die Sie lesen können:

Vorheriger

Vergleichen Sie zwei Bilder und markieren Sie Unterschiede mit Python

Parallelität in Python

Nächster

Schreibe einen Kommentar