Connect with us

Leaders d’opinion

Appliquer l’IA au traitement vidéo en temps réel : les bases et plus

mm

Par Maksym Tatariants, Data Science Engineer at MobiDev.

Il n’y a rien de nouveau à utiliser l’intelligence artificielle (IA) dans le traitement vidéo. Si vous regardez au-delà du traitement d’images – c’est l’un des cas d’utilisation les plus courants pour l’IA. Et tout comme le traitement d’images, le traitement vidéo utilise des techniques établies comme la 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 le traitement du langage naturel (NLP) dans l’édition de vidéos et la génération, la reconnaissance d’objets dans les tâches d’auto-étiquetage de contenu vidéo, l’apprentissage automatique pour rationaliser l’analyse de vidéos par IA, ou l’apprentissage profond pour accélérer le retrait de fond en temps réel, les cas d’utilisation continuent de croître jour après jour.

Continuez à lire pour apprendre quelle approche vous pouvez adopter lors de l’utilisation de l’IA dans le traitement vidéo.

Les bases du traitement de vidéos en temps réel

Commençons par les bases. Le traitement de vidéos en temps réel est une technologie essentielle dans les systèmes de surveillance utilisant la reconnaissance d’objets et de visages. C’est également le processus qui alimente les logiciels d’inspection visuelle par IA dans le secteur industriel.

Alors, comment fonctionne le traitement de vidéos ? Le traitement de vidéos implique une série d’étapes, qui incluent la décodage, le calcul et la codage. Voici ce que vous devez savoir :

  • Décodage : Le processus nécessaire pour convertir une vidéo d’un fichier compressé en format brut.
  • Calcul : Une opération spécifique effectuée sur un cadre de vidéo brut.
  • Codage : Le processus de reconversion du cadre traité en son état compressé d’origine.

Maintenant, l’objectif de toute tâche de traitement de vidéos est de compléter ces étapes le plus rapidement et avec le plus d’exactitude possible. Les moyens les plus simples pour y parvenir incluent : travailler en parallèle et optimiser l’algorithme pour la vitesse. En termes simples ? Vous devez utiliser la division de fichiers et l’architecture de pipeline.

Qu’est-ce que la division de fichiers vidéo ?

La division de fichiers vidéo permet aux algorithmes de fonctionner simultanément, leur permettant d’utiliser des modèles plus lents et plus précis. Cela est réalisé en divisant les vidéos en parties distinctes qui sont ensuite traitées en même temps.

Vous pouvez considérer la division de fichiers vidéo comme une forme de génération de fichiers virtuels plutôt que de génération de sous-fichiers.

Malgré cela, la division de fichiers vidéo n’est pas la meilleure option pour le traitement de vidéos en temps réel. Pourquoi exactement ? Ce processus rend difficile la pause, la reprise et le rembobinage d’un fichier pendant qu’il est traité.

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 de pipeline dans la pratique, et de la façon dont elle peut être utilisée dans un système de surveillance vidéo 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 visages, floutage de visages et codage. Et si vous voulez améliorer la vitesse du pipeline, vous pouvez utiliser les techniques d’apprentissage profond de pipeline.

Décodage et codage expliqués

Qu’en est-il du décodage et du codage ? Il existe deux moyens de réaliser ces processus : logiciel et matériel.

Vous êtes peut-être déjà familiarisé avec 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, quels sont les options disponibles pour vous lorsqu’il s’agit d’accélération matérielle pour les processus de codage et de décodage ? Voici certaines des options les plus populaires :

  • Compiler OpenCV avec le support CUDA : Compiler OpenCV avec le support CUDA optimise à la fois le décodage et les calculs de pipeline qui utilisent OpenCV. Gardez à l’esprit – vous devrez écrire en C++ puisque le wrapper Python ne prend pas en charge cela. Mais dans les situations qui nécessitent à la fois le décodage et les calculs numériques avec une carte graphique sans copie à partir de la mémoire CPU, il s’agit toujours d’un des meilleurs choix disponibles.
  • Compiler FFmpeg ou GStreamer avec le support des codecs NVDEC/NVENC : Une autre option consiste à utiliser le décodeur et l’encodeur NVIDIA intégrés avec des installations personnalisées de FFmpeg et Gstreamer. Cependant, nous vous suggérons d’utiliser FFmpeg si possible, car cela nécessite moins de maintenance. De plus, la plupart des bibliothèques sont alimentées par FFmpeg, ce qui signifie que vous améliorerez automatiquement les performances de la bibliothèque en la remplaçant.
  • Utiliser le framework 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 la carte graphique. Cette option supprime la copie supplémentaire de la CPU vers la carte graphique.

Détection et floutage de visages

Les modèles de détection d’objets (SSD ou RetinaFace) sont une option populaire pour effectuer la détection de visages. Ces solutions permettent de localiser le visage humain dans un cadre. Et sur la base de notre expérience, nous tendons à préférer les modèles de suivi de visage Caffe et les modèles de détection d’objets TensorFlow, car ils ont donné les meilleurs résultats. De plus, les deux sont disponibles en utilisant la bibliothèque dnn module d’OpenCV.

Alors, qu’est-ce qui se passe après qu’un visage ait été détecté ? Ensuite, le système basé sur Python et OpenCV révélera les boîtes de délimitation et la confiance de détection. Enfin, un algorithme de floutage est appliqué aux zones découpées.

Comment pouvez-vous créer un logiciel de traitement de vidéos en direct alimenté par l’IA ?

Il n’est pas secret que le traitement de vidéos, les codecs qui le alimentent et le matériel et le logiciel nécessaires sont plutôt techniques.

Pourtant, cela ne signifie pas que vous ne pouvez pas utiliser ces outils pour créer votre propre logiciel de traitement de vidéos en direct. 

Voici un bref aperçu de ce que vous devez faire :

  1. Commencez par ajuster votre réseau de neurones pré-entraîné pour effectuer les tâches requises.
  2. Configurez votre infrastructure cloud pour gérer le traitement de vidéos et mettre à l’échelle selon les besoins.
  3. Construisez une couche logicielle pour condenser le processus et intégrer des cas d’utilisation spécifiques comme les applications mobiles et les panneaux d’administration ou Web.

Le développement d’un MVP pour un logiciel de traitement de vidéos similaire peut prendre jusqu’à quatre mois en utilisant un réseau de neurones pré-entraîné et des couches d’application simples. Cependant, la portée et le calendrier dépendent des détails de chaque projet. Dans la plupart des cas, il est logique de commencer par le développement d’une preuve de concept pour explorer les détails du projet et trouver un flux optimal.

Maksym est impatient de acquérir de nouvelles connaissances et expériences en Data Science et Machine Learning. Il est particulièrement intéressé par les technologies basées sur le Deep Learning et leur application à des cas d'utilisation commerciaux.