Leaders d’opinion

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

mm
Ajouter Unite.AI à vos sources préférées sur Google

Par Maksym Tatariants, Data Science Engineer 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’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 dans l’édition de vidéos et la génération, la reconnaissance d’objets dans l’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 retirage de fond en temps réel, les cas d’utilisation continuent de croître chaque jour.

Continuez à lire pour apprendre 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 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 vidéo ? Le traitement vidéo 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 son 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 vidéo est de compléter ces étapes le plus rapidement et avec la plus grande précision 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 penser à 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 la 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 que ressemble l’architecture de pipeline dans la pratique, et de la manière 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 des techniques d’apprentissage profond.

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 l’accélération matérielle des processus de codage et de décodage ? Voici quelques-unes des options les plus populaires :

  • Compiler OpenCV avec le support CUDA : La compilation d’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 GPU sans copie à partir de la mémoire CPU, c’est toujours l’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 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 GPU. Cette option supprime la copie supplémentaire de la CPU à la GPU.

Détection et floutage de visages

Les modèles de détection d’objets (SSDs 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 visages Caffe et les modèles de détection d’objets TensorFlow, car ils ont fourni les meilleurs résultats. De plus, les deux sont disponibles en utilisant la bibliothèque OpenCV module dnn.

Alors, qu’est-ce qui se passe après qu’un visage a é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 temps réel alimenté par l’IA ?

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

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

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 un logiciel 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 préférable de commencer par le développement d’une preuve de concept pour explorer les spécificités 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.