Suivez nous sur

Application de l'IA au traitement vidĂ©o en temps rĂ©el : les bases et plus encore

Des leaders d'opinion

Application de l'IA au traitement vidĂ©o en temps rĂ©el : les bases et plus encore

mm

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 :

  1. Commencez par ajuster votre réseau neuronal pré-formé pour effectuer les tâches requises.
  2. Configurez votre infrastructure cloud pour gérer le traitement vidéo et l'adapter selon vos besoins.
  3. 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.

Maksym souhaite acquérir de nouvelles connaissances et de l'expérience en science des données et en apprentissage automatique. Il s'intéresse particulièrement aux technologies basées sur le Deep Learning et à leur application aux cas d'utilisation métier.