Des leaders d'opinion
Application de l'IA au traitement vidéo en temps réel : les bases et plus encore

Par Maksym Tatariants, Sciences des données Ingénieur chez MobiDev.
Il n'y a rien de nouveau dans l'utilisation de l'intelligence artificielle (IA) dans le traitement vidéo. Si vous regardez au-delà du traitement d'image, c'est l'un des cas d'utilisation les plus courants de l'IA. Et tout comme le traitement d'image, le traitement vidéo utilise des techniques établies comme vision par ordinateur, la reconnaissance d'objets, l'apprentissage automatique et l'apprentissage profond pour améliorer ce processus.
Que vous utilisiez la vision par ordinateur et la PNL dans montage vidéo et génération, reconnaissance d'objets dans marquage automatique du contenu vidéo tâches, machine learning pour rationaliser Analyse vidéo IA, ou apprentissage en profondeur pour accélérer le temps réel suppression de l'arrière-plan, les cas d'utilisation continuent de croître de jour en jour.
Continuez à lire pour savoir quelle approche vous pouvez adopter lorsqu'il s'agit d'utiliser l'IA dans le traitement vidéo.
Les bases du traitement vidéo en temps réel
Commençons par les bases. Le traitement vidéo en temps réel est une technologie essentielle dans les systèmes de surveillance utilisant la reconnaissance faciale et d'objets. C'est également le processus incontournable qui alimente le logiciel d'inspection visuelle IA dans le secteur industriel.
Alors, comment fonctionne le traitement vidéo ? Le traitement vidéo implique une série d'étapes, qui comprennent le décodage, le calcul et l'encodage. Voici ce que vous devez savoir :
- Décodage: Le processus requis pour convertir une vidéo à partir d'un fichier compressé vers son format brut.
- Calcul: Une opération spécifique effectuée sur une image vidéo brute.
- Encodage: Processus de reconversion de la trame traitée à son état compressé d'origine.
Désormais, l'objectif de toute tâche de traitement vidéo est d'effectuer ces étapes aussi rapidement et précisément que possible. Les moyens les plus simples d'y parvenir incluent : travailler en parallèle et optimiser l'algorithme pour la vitesse. En termes simples ? Vous devez tirer parti du fractionnement de fichiers et de l'architecture de pipeline.
Qu'est-ce que le fractionnement de fichiers vidéo ?
Le fractionnement de fichiers vidéo permet aux algorithmes de fonctionner simultanément, ce qui leur permet d'utiliser des modèles plus lents et plus précis. Ceci est accompli en divisant les vidéos en parties distinctes qui sont ensuite traitées en même temps.
Vous pouvez considérer le fractionnement vidéo comme une forme de génération de fichiers virtuels plutôt que comme une génération de sous-fichiers.
Malgré cela, le fractionnement de fichiers vidéo n'est pas la meilleure option pour le traitement vidéo en temps réel. Pourquoi exactement ? Ce processus rend difficile pour vous de faire une pause, de reprendre et rembobiner un fichier pendant son traitement.
Qu'est-ce que l'architecture de pipeline ?
L'autre option est l'architecture de pipeline. Ce processus fonctionne pour diviser et paralléliser les tâches effectuées pendant le traitement, plutôt que de diviser purement et simplement la vidéo.
Voici un exemple rapide de ce à quoi ressemble l'architecture du pipeline dans la pratique et comment elle peut être utilisée dans un système de vidéosurveillance pour détecter et flouter les visages en temps réel.
Dans cet exemple, le pipeline a divisé les tâches en décodage, détection de visage, floutage de visage et encodage. Et si vous voulez améliorer la vitesse du pipeline, vous pouvez utiliser pipeline techniques d'apprentissage en profondeur.
Décodage et encodage expliqués
Qu'en est-il du décodage et de l'encodage ? Il existe deux façons d'effectuer ces processus : le logiciel et le matériel.
Vous connaissez peut-être déjà le concept d'accélération matérielle. Ce processus est rendu possible grâce aux décodeurs et encodeurs installés dans les dernières cartes graphiques NVIDIA, ainsi que les cœurs CUDA.
Alors, quelles options avez-vous à votre disposition en matière d'accélération matérielle pour les processus d'encodage et de décodage ? Voici quelques-unes des options les plus populaires :
- Compilez OpenCV avec le support CUDA : Compiler OpenCV avec CUDA optimise à la fois le décodage et tous les calculs de pipeline qui utilisent OpenCV. Gardez à l'esprit que vous devrez les écrire en C++ car le wrapper Python ne le prend pas en charge. Mais dans les situations qui nécessitent à la fois un décodage et des calculs numériques avec un GPU sans copier depuis la mémoire du CPU, c'est toujours l'un des meilleurs choix disponibles.
- Compilez FFmpeg ou GStreamer avec la prise en charge des codecs NVDEC/NVENC : Une autre option consiste à utiliser le décodeur et l'encodeur NVIDIA intégrés inclus avec les installations personnalisées de FFmpeg et Gstreamer. Cependant, nous suggérons d'utiliser FFmpeg si possible car il nécessite moins de maintenance. De plus, la plupart des bibliothèques sont alimentées par FFmpeg, ce qui signifie que vous augmenterez automatiquement les performances de la bibliothèque en la remplaçant.
- Utilisez le cadre de traitement vidéo NVIDIA : La dernière option consiste à utiliser un wrapper Python pour décoder le cadre directement dans un tenseur PyTorch sur le GPU. Cette option supprime la copie supplémentaire du CPU vers le GPU.
Détection de visage et flou
Les modèles de détection d'objets (SSD ou RetinaFace) sont une option populaire pour compléter la détection de visage. Ces solutions fonctionnent pour localiser le visage humain dans un cadre. Et sur la base de notre Culinaire, nous avons tendance à préférer les modèles de suivi de visage Caffe et de détection d'objets TensorFlow car ils ont fourni les meilleurs résultats. De plus, les deux sont disponibles à l'aide de la bibliothèque OpenCV module dnn.
Alors, quelle est la prochaine étape après la détection d'un visage ? Ensuite, le Python et OpenCVsystème basé sur révéler boîtes englobantes et confiance de détection. Enfin, un algorithme de floutage est appliqué aux zones recadrées.
Comment pouvez-vous créer un logiciel de traitement vidéo en direct alimenté par l'IA ?
Ce n'est un secret pour personne que le traitement vidéo, les codecs qui l'alimentent, ainsi que le matériel et les logiciels requis sont de nature assez technique.
Néanmoins, cela ne signifie pas que vous ne pouvez pas utiliser ces outils pour créer votre propre logiciel de traitement vidéo en direct.
Voici une brève description de ce que vous devez faire :
- Commencez par ajuster votre réseau neuronal pré-formé pour effectuer les tâches requises.
- Configurez votre infrastructure cloud pour gérer le traitement vidéo et l'adapter selon vos besoins.
- Créez un avocat logiciel pour condenser le processus et intégrer des cas d'utilisation spécifiques tels que des applications mobiles et des panneaux d'administration ou Web.
Développer un MVP pour un logiciel de traitement vidéo similaire peut prendre jusqu'à quatre mois, en utilisant un réseau neuronal pré-entraîné et des couches applicatives simples. Cependant, la portée et le calendrier dépendent des spécificités de chaque projet. Dans la plupart des cas, il est judicieux de commencer par une démonstration de faisabilité (POC) afin d'explorer les spécificités du projet et de trouver le déroulement optimal.












