L’estimation de flux intermédiaire en temps réel pour l’interpolation d’images vidéo est le processus de génération d’images à partir d’une séquence d’images. C’est une tâche difficile car elle nécessite une quantité importante de ressources de calcul. De plus, le rendu vidéo peut être un processus en plusieurs étapes. La qualité de l’interpolation vidéo est affectée par de nombreux facteurs tels que la fréquence d’images, la qualité de l’encodage vidéo, le format du contenu vidéo (par exemple HD, 4k, 8k, etc.). La qualité globale de la vidéo rendue dépend fortement de la combinaison de tous ces facteurs. Si vous souhaitez que les médias soient diffusés sur un site Web dans la plus haute qualité, la conversion d’une fréquence d’images faible à une fréquence d’images élevée fait une grande différence. La méthode d’estimation de flux intermédiaire bidirectionnel est utilisée pour l’interpolation vidéo car elle produit des résultats de conversion en temps réel et précis entre différentes fréquences d’images.
Cet article présente une nouvelle méthode d’estimation de flux intermédiaire pour l’interpolation de trames vidéo en temps réel et explique comment fonctionne l’interpolation de trames et son rôle dans le rendu vidéo efficace à l’aide de RIFE – RIFE, ou Real-time Intermediate Flow Estimation, qui est un algorithme d’estimation de flux intermédiaire pour Interpolation de trame vidéo (VFI). Nous allons également créer une petite application pour interpoler une vidéo afin de tester certaines des fonctionnalités de RIFE.
Comment fonctionne l’interpolation RIFE ?
Les méthodes VFI récentes basées sur les flux estiment souvent d’abord les flux optiques bidirectionnels, puis les mettent à l’échelle et les inversent pour approximer les flux intermédiaires, ce qui entraîne des artefacts sur les limites de mouvement et les pipelines complexes. RIFE ou Real-Time Intermediate Flow Estimation for Video Frame Interpolation utilise un réseau neuronal nommé IFNet qui introduit un modèle de réseau innovant qui estime le flux intermédiaire directement à partir des flux optiques de premier et de second ordre. Avec ces améliorations de la vitesse, RIFE fournit certaines des méthodes existantes les plus rapides pour attribuer des segmentations d’objets. Cela permet à RIFE de prendre en charge des intervalles de temps arbitraires pour les interpolations de trame, ce qui peut l’aider à atteindre une résolution temporelle plus élevée que la plupart des méthodes existantes.
Il introduit également un nouveau schéma d’inférence qui maximise les performances tout en étant adaptable à une grande variété de tâches, et bien qu’il ne s’agisse que d’un projet open source, il peut être utile pour de nombreuses applications différentes dans des contextes commerciaux et de recherche. De plus, par rapport aux méthodes populaires SuperSlomo et DAIN, RIFE est jusqu’à 4 à 27 fois plus rapide, produit de meilleurs résultats et est moins gourmand en ressources.
Conditions préalables
Bien que j’aie déjà donné un fichier requirements.txt dans le référentiel, nous aurions également besoin de ressources supplémentaires pour l’exécuter. Mais ceux-ci différeraient d’une machine à l’autre. Le problème le plus important que la plupart des gens rencontreraient serait de manquer FFmpeg. FFmpeg est un projet logiciel open source pour la gestion de fichiers vidéo, audio et autres fichiers multimédias et nous en avons absolument besoin pour que notre application fonctionne.
Vous pouvez d’abord vérifier si vous avez déjà FFmpeg ou non avec :
ffmpeg -version
Vous pouvez installer FFmpeg des manières suivantes :
Linux
FFmpeg peut être installé avec la commande suivante ou vous pouvez également les installer avec leur site officiellement pris en charge ici.
sudo apt install ffmpeg brew install ffmpeg
Mac
Les binaires FFmpeg statiques pour Mac peuvent être trouvés ici, ils peuvent également être installés via la bibliothèque brew avec la commande suivante :
brew install ffmpeg
Windows
Vous pouvez télécharger le fichier .exe directement depuis GitHub sous Windows.
Construire l’application
Depuis ce projet très complexe avec une énorme base de code, nous n’allons pas écrire le code ici à la place, je l’ai téléchargé sur un référentiel Github. Vous pouvez y accéder très facilement à partir de là, alors allez-y et téléchargez les fichiers à partir de là, puis continuez.
Vous pouvez également le cloner via la commande suivante :
git clone [email protected]:hzwer/arXiv2020-RIFE.git
Avant d’aller plus loin, il est préférable de créer un environnement virtuel et d’y effectuer l’opération :
cd arXiv2020-RIFEvirtualenv rifesource rife/bin/activate
Après avoir téléchargé et extrait ou cloné le projet, ouvrez son répertoire et installez les prérequis pour celui-ci :
cd arXiv2020-RIFE
pip3 install -r requirements.txt
Maintenant, si toutes les exigences sont correctement installées, vous pouvez démarrer le processus d’interpolation ! Téléchargez simplement une vidéo, envisagez d’en obtenir une petite car cela peut prendre un certain temps à traiter, j’ai téléchargé cette vidéo d’animation sur Youtube (elle est de Mayde), vous pouvez choisir ce que vous voulez, essayez simplement d’en obtenir une courte si vous je ne veux pas que ça dure toute la nuit !
Après avoir téléchargé une vidéo, placez-la dans le dossier du projet et vous êtes prêt à démarrer le processus d’interpolation, exécutez simplement la commande suivante pour la démarrer. Mais vous devriez d’abord en voir les applications.
python3 inference_video.py --exp=1 --video=video.mp4 #Linux/Macpython inference_video.py --exp=1 --video=video.mp4 #Windows
La commande ci-dessus interpolera les fréquences d’images de la vidéo de 2 fois, ce qui signifie que si une vidéo est de 24 ips, elle l’augmentera à 48 ips. RIFE nous permet également de modifier facilement cette valeur, afin que nous puissions effectuer l’interpolation à des FPS plus élevés. Pour ce faire, il suffit de changer la valeur de –exp=1
à autre chose, par exemple, si nous le changeons à 2, l’interpolation passera de 2 fois à 4 fois et ainsi de suite et ainsi de suite.
Nous pouvons également ajouter –scale= à la fin de la commande, son paramètre de valeur contrôle la résolution du processus pour le modèle de flux optique. Par exemple:
python3 inference_video.py --exp=1 --video=video.mp4 --scale=0.5
Ainsi, après avoir exécuté la commande, vous verrez une réponse comme celle-ci dans votre terminal :
Ici, vous pourrez voir quel est le fps actuel de votre vidéo et le fps qu’elle aura une fois l’opération terminée, dans mon cas, cela transforme ma vidéo 24FPS en 48FPS. Cela montre également combien de temps cela prendrait, ce qui, comme vous pouvez le voir, est beaucoup pour moi puisque je n’ai pas de carte graphique, mais cela ne devrait pas vous déranger même si vous avez un graphisme très basique card as just have inn réduit considérablement le temps de rendu.
Une fois le processus terminé, vous verrez une vidéo créée appelée video_2X_48fps.mp4 (en considérant que vous avez également nommé votre vidéo « vidéo »). Et c’est le fichier final, vous pouvez vérifier ses propriétés et voir s’il a fonctionné ou non.
Conclusion
L’interpolation vidéo est une technologie importante dans un certain nombre d’applications de traitement vidéo. Le coût de calcul de l’interpolation vidéo est le principal obstacle qui a entravé son utilisation généralisée. Les auteurs de cet article ont développé un algorithme capable d’effectuer une interpolation vidéo à une fréquence d’images plus élevée que les méthodes existantes, tout en utilisant moins de ressources de calcul.
RIFE est un algorithme pour un rendu vidéo efficace. Il s’agit d’un algorithme d’estimation de débit intermédiaire qui utilise une combinaison de fonctionnalités d’autres qui ont été testées et vérifiées pour fonctionner. Les fonctionnalités fonctionnent également avec un certain nombre d’applications, comme vous le verrez ci-dessous. Bien que RIFE ne dispose pas de beaucoup de documentation, il surmonte très facilement les principales difficultés qui surviennent lors du processus d’interpolation de trame et est également facile à mettre en œuvre dans votre propre projet. Vous trouverez plus d’informations sur RIFE ici.
Voici quelques tutoriels utiles que vous pouvez lire :
- How to receive Github webhooks in Python?
- Convert an image to 8-bit image
- How to run my Python script on Docker?
- Generating QR Codes and Barcodes in Python
- Create API in Django Rest Framework Viewset
- Create Sudoku game in Python using Pygame
- Get Weather Information using Python
- Detect the number of faces using Python and OpenCV