Contrôle vert
Lien copié dans le presse-papiers

Améliorer les applications de vision par ordinateur avec des visualisations

Apprends à transformer les données des applications de vision par ordinateur en graphiques faciles à comprendre à l'aide du packagePython Ultralytics pour obtenir de meilleures informations.

Chaque minute, d'énormes quantités de données sont créées, depuis les terminaux d'aéroports et les gares jusqu'aux centres commerciaux. Avec la généralisation de l'IA, une grande partie de ces données est désormais analysée et décomposée. Mais parfois, les résultats de ces modèles d'IA peuvent rendre difficile le repérage des modèles ou la compréhension des tendances en un coup d'œil. C'est là que la visualisation des données est utile - elle transforme les résultats complexes en idées claires et faciles à digérer.

C'est particulièrement vrai lorsqu'il s'agit d'applications de vision par ordinateur. La vision par ordinateur est une branche de l'intelligence artificielle (IA) qui aide les machines à interpréter et à comprendre les informations visuelles du monde environnant, telles que les images et les vidéos. Bien que les modèles d'IA de vision, comme Ultralytics YOLO11peuvent aider à analyser ces données visuelles pour obtenir des informations, la visualisation des données aide à mettre ces informations dans un format facile à comprendre.

En termes simples, la visualisation des données comble le fossé entre les données brutes et la compréhension réelle en utilisant des graphiques analytiques significatifs. Dans le monde actuel axé sur les données, c'est essentiel car il ne suffit pas que les machines exécutent des tâches - nous avons besoin qu'elles racontent une histoire.

Ce besoin de raconter des histoires est exactement la raison pour laquelle la visualisation des données est en hausse, le marché étant prêt à atteindre 18,36 milliards de dollars d' ici 2030. Précédemment, nous avons exploré comment la vision par ordinateur peut fournir des informations commerciales précieuses. Aujourd'hui, nous allons aller plus loin en expliquant comment générer des graphiques analytiques clairs et perspicaces pour les applications de vision par ordinateur à l'aide du logiciel Ultralytics . C'est parti !

Fig 1. Exemple de visualisation de données basée sur les résultats de YOLO11.

Un aperçu de la visualisation des données dans les applications de vision par ordinateur.

La visualisation des données dans les applications de vision par ordinateur consiste à transformer les résultats des tâches de vision par ordinateur, telles que la détection et le suivi d'objets, en graphiques ou tableaux de bord faciles à comprendre. Ces visuels permettent d'identifier des modèles et des tendances, en particulier lorsque l'on travaille avec de grands volumes de séquences vidéo. 

Par exemple, au lieu d'examiner manuellement des heures de vidéos de surveillance, un simple graphique linéaire présentant le nombre de voitures ou de personnes détectées au fil du temps peut rapidement mettre en évidence les heures de pointe ou les périodes inhabituellement calmes.

Voici quelques raisons clés pour lesquelles la visualisation des données est utile :

  • Simplifie les données complexes : Des milliers de détections d'objets peuvent être accablantes, mais les visualisations telles que les diagrammes à barres ou à secteurs facilitent la vue d'ensemble, par exemple les objets qui apparaissent le plus fréquemment.
  • Révèle les tendances: Les graphiques linéaires et à barres permettent d'identifier les tendances au fil du temps, par exemple quand et où le trafic piétonnier a tendance à augmenter.
  • Gagne du temps : Au lieu d'examiner chaque image de la vidéo, les graphiques peuvent rapidement mettre en évidence les détails importants, comme les pics soudains d'activité des véhicules ou les apparitions d'objets inhabituels dans les zones restreintes.
  • Améliore la communication : Les visuels facilitent le partage des idées avec des publics non techniques, en aidant tout le monde à comprendre plus clairement les résultats.

Différents types de visualisations de données

Différents types de graphiques analytiques peuvent transformer les résultats de la vision par ordinateur en visuels clairs et faciles à comprendre. Disons que tu travailles sur une application de vision par ordinateur qui détecte les personnes et les véhicules dans les vidéos de surveillance. Dans ce cas, un graphique linéaire est idéal pour montrer comment le nombre de détections évolue dans le temps, comme pour suivre les pics de circulation des piétons tout au long de la journée.

De même, les diagrammes à barres sont utiles lorsque tu veux comparer le nombre de différents types d'objets détectés, par exemple pour voir si plus de voitures, de vélos ou de piétons apparaissent dans la vidéo. Les diagrammes circulaires, quant à eux, montrent le pourcentage que représente chaque type d'objet par rapport au nombre total de détections. Chaque graphique a sa propre utilité et permet de faciliter l'interprétation et le partage des données complexes de vision par ordinateur.

Fig 2. Exemples de graphiques analytiques.

Générer des graphiques analytiques pour obtenir des informations sur la vision par ordinateur

Maintenant que nous avons exploré ce qu'est la visualisation des données et pourquoi les différents types de graphiques analytiques sont importants, voyons de plus près comment utiliser la solutionUltralytics Analytics pour visualiser les résultats des prédictions de ton modèle de vision par ordinateur. Avant de suivre le processus étape par étape, jetons un coup d'œil aux outils et aux options de configuration pour la formation et l'utilisation du progiciel Ultralytics et de modèles tels que YOLO11. 

Le package Ultralytics Python facilite la formation des modèles, la détection des objets, l'exécution des prédictions et la visualisation des résultats. Pour commencer à l'utiliser, tu auras besoin d'un environnement de codage. Voici trois options simples :

  • Interface de ligne de commande (CLI): C'est un outil de base, en texte seul, où tu peux taper des commandes pour exécuter ton code. Il n'a pas d'interface visuelle et tu interagis avec lui en tapant des instructions dans un terminal ou une invite de commande.
  • Jupyter Notebooks: C'est un environnement de codage interactif où tu peux écrire, exécuter et tester de petits morceaux de code (appelés "cellules") un par un. Il affiche les résultats directement sous chaque cellule, ce qui permet de comprendre ce qui se passe étape par étape. Il est particulièrement utile pour l'apprentissage et l'expérimentation.
  • Google Colab: Cette option est une version gratuite et basée sur le cloud de Jupyter Notebooks qui s'exécute dans ton navigateur web. Elle ne nécessite aucune installation sur ton ordinateur et te donne accès à des GPU gratuits pour un traitement plus rapide.

Ces outils sont parfaits pour démarrer rapidement, mais les utilisateurs peuvent également intégrer Ultralytics dans des environnements de développement intégré (IDE) comme Visual Studio Code (VS Code) ou dans des pipelines de production. Pour plus d'options, explore la documentation officielle d'Ultralytics .

Étape 1 : Mise en place de l'environnement

Une fois que tu as choisi ton environnement préféré, l'étape suivante consiste à le configurer pour exécuter les prédictions et visualiser les résultats. Tu peux utiliser n'importe lequel des environnements mentionnés ci-dessus, en fonction de ce avec quoi tu es le plus à l'aise.

Si tu travailles dans Google Colab, garde à l'esprit qu'il utilise par défaut un CPU , ce qui peut ralentir les performances. Pour accélérer les choses, passe au GPU en allant dans le menu "Runtime", en sélectionnant "Change runtime type" et en réglant l'accélérateur matériel sur GPU (idéalement un T4).

Pour préparer ton environnement, tu devras installer le packageUltralytics Python à l'aide de la commande mentionnée ci-dessous. Dans les outils basés sur un carnet de notes comme Colab ou Jupyter, veille à ajouter un point d'exclamation ( !) avant la commande.

pip install ultralytics

Étape 2 : Téléchargement d'un fichier vidéo

Ensuite, nous aurons besoin d'une vidéo pour travailler. Tu peux facilement en télécharger une sur un site de stock gratuit comme Pexels. Assure-toi de choisir une vidéo qui contient des objets que YOLO11 peut détecter. Étant donné que le modèle est pré-entraîné sur l'ensemble de données COCO, il peut reconnaître des objets courants tels que des personnes, des voitures et des vélos. 

Pour ce tutoriel, nous allons utiliser une vidéo de la manutention des bagages dans un terminal d'aéroport très fréquenté. Tu peux utiliser la même vidéo ou en choisir une autre qui corresponde à ton projet.

Fig 3. Une image de la vidéo d'entrée montrant la manutention des bagages dans un terminal d'aéroport.

Étape 3 : Importer des paquets

Ensuite, nous pouvons importer les bibliothèques nécessaires et charger la vidéo d'entrée.

Nous commencerons par importer OpenCV (cv2), qui est une bibliothèque largement utilisée pour travailler avec des images et des vidéos dans le domaine de la vision par ordinateur. Nous importerons également la bibliothèque Ultralytics , qui nous aide à effectuer la détection d'objets et à générer des analyses à partir de la vidéo.

Ensuite, nous essaierons d'ouvrir le fichier vidéo en spécifiant son chemin d'accès. Veille à remplacer "path/to/video.mp4" par l'emplacement réel du fichier vidéo téléchargé. 

De plus, l'extrait de code ci-dessous comprend une simple vérification pour s'assurer que la vidéo se charge correctement. Si le chemin est erroné ou si le fichier est corrompu, le programme s'arrête et affiche un message d'erreur : "Erreur de lecture du fichier vidéo".

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

Étape 4 : Préparer l'auteur de la vidéo

Ensuite, nous mettrons en place un graveur vidéo pour enregistrer le résultat. Lorsque nous exécuterons les analyses, cette partie du code créera un nouveau fichier vidéo qui enregistrera les graphiques mis à jour générés à partir de chaque image de la vidéo d'origine.

Dans l'extrait de code ci-dessous, nous commençons par extraire les propriétés clés de la vidéo d'entrée - sa largeur, sa hauteur et son nombre d'images par seconde (ips). Ces valeurs sont extraites directement de la vidéo et converties en nombres entiers pour s'assurer qu'elles sont dans le bon format pour l'écriture de la sortie.

Ensuite, nous utilisons la fonction cv2.VideoWriter pour créer un nouveau fichier vidéo, nommé "analytics_output.avi" (tu peux le renommer si nécessaire). La vidéo est enregistrée au format MJPG, qui est une méthode de compression vidéo courante. La résolution de sortie est fixée à 1280×720 pixels, quelle que soit la taille de la vidéo originale.

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
out = cv2.VideoWriter(
    "analytics_output.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1280, 720), 
)

Étape 5 : Mise en place de la solution Ultralytics Analytics

Nous allons maintenant configurer la solution Ultralytics Analytics pour qu'elle génère des graphiques à partir de la vidéo. Tu peux choisir le mode d'affichage des données, comme un diagramme linéaire, circulaire, de surface ou à barres, ainsi que le modèleYOLO à utiliser. Dans cet exemple, nous utiliserons le modèle léger "yolo11n.pt" et afficherons les résultats sous la forme d'un graphique de surface.

analytics = solutions.Analytics(
    show=True, 
    analytics_type="area", 
    model="yolo11n.pt",   
)

Étape 6 : Traitement de la vidéo d'entrée

La dernière partie du code exécute une boucle qui traite la vidéo une image à la fois. Chaque image est transmise à l'outil d'analyse, qui met à jour le graphique en temps réel. Le graphique mis à jour est ensuite écrit sur la vidéo de sortie. Si une image ne peut pas être lue, la boucle s'arrête. Une fois que toutes les images ont été traitées, la vidéo est enregistrée et toutes les fenêtres ouvertes sont fermées.

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        results = analytics(im0, frame_count) 

        out.write(results.plot_im) 
    else:
        break
cap.release()
out.release()
cv2.destroyAllWindows() 

Étape 7 : Assembler le tout

Enfin, mettons tout ensemble. Avec quelques lignes de code supplémentaires, nous pouvons générer deux vidéos de sortie : l'une montrant les résultats de ladétection d'objets de YOLO11 avec des boîtes de délimitation et des étiquettes, et l'autre montrant les graphiques d'analyse en temps réel.

Pour ce faire, nous allons mettre en place deux instances de VideoWriter - une pour enregistrer la vidéo de prédiction et une autre pour les analyses. Cette version du code inclut à la fois le suivi des objets et la génération de graphiques, afin que tu puisses voir les résultats de la détection en même temps que les aperçus visuels.

Voici le code complet ainsi que des exemples de prédictions et d'analyses.

import cv2
from ultralytics import YOLO, solutions

# Load model and video
model = YOLO('yolo11n.pt')
cap = cv2.VideoCapture('path/to/video.mp4')
assert cap.isOpened(), "Error opening video"

# Get properties
w, h = int(cap.get(3)), int(cap.get(4))
fps = cap.get(5)
analytics_res = (1280, 720)

# Writers for prediction and analytics videos
out_pred = cv2.VideoWriter('output_predictions.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, (w, h))
out_ana = cv2.VideoWriter('output_analytics.avi', cv2.VideoWriter_fourcc(*'MJPG'), fps, analytics_res)

# Analytics setup
analytics = solutions.Analytics(show=True, analytics_type="area", model='yolo11n.pt')

# Process frames
frame_count = 0
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    frame_count += 1
    pred_frame = model.track(frame, persist=True)[0].plot()
    out_pred.write(pred_frame)

    resized = cv2.resize(pred_frame, analytics_res)
    out_ana.write(analytics(resized, frame_count).plot_im)

cap.release(), out_pred.release(), out_ana.release(), cv2.destroyAllWindows()

Lorsque le code ci-dessus s'exécute avec succès, il génère deux vidéos de sortie. Le fichier "output_predictions.avi" montrera les résultats de la détection d'objets avec les boîtes de délimitation et les étiquettes, tandis que "output_analytics.avi" affichera les graphiques d'analyse en temps réel basés sur les détections.

Fig 4. Une image du fichier "output_predictions.avi".

Voici une image de la sortie analytique basée sur les prédictions. À l'aide du diagramme de zone, nous pouvons obtenir des informations comme les fluctuations du nombre de valises au fil du temps, par exemple un pic autour de l'image 268, indiquant un mouvement de valise ou une activité dans cette partie de la vidéo.

Fig 5. Les prédictions de YOLO11 visualisées sous la forme d'un graphique de surface.

Utiliser les graphes dans les applications de vision par ordinateur du monde réel

Voici quelques applications réelles de vision par ordinateur où la visualisation des données a un impact significatif :

  • Santé: Les systèmes de vision par ordinateur peuvent surveiller l'activité des patients, les mouvements du personnel et l'utilisation des équipements en temps réel. Cela génère de grandes quantités de données visuelles qui, lorsqu'elles sont visualisées, peuvent révéler des schémas - tels que les pics d'occupation des patients ou les retards de réponse.
  • Commerce de détail et commerce électronique : Vision AI peut être utilisée pour suivre les mouvements des clients, le temps de séjour devant les rayons et les interactions avec les produits. Les analyses visuelles comme les diagrammes à barres ou à secteurs peuvent mettre en évidence les zones du magasin ou les articles qui reçoivent le plus d'attention, ce qui aide les détaillants à optimiser le placement des produits et à améliorer les conversions.
  • Fabrication : Les caméras équipées de modèles de vision par ordinateur peuvent surveiller les chaînes de montage pour détecter les défauts, les infractions à la sécurité ou l'état de l'équipement. La visualisation des données peut montrer les tendances des types de défauts les plus courants ou mettre en évidence les périodes où les taux d'erreur sont les plus élevés, ce qui permet une prise de décision plus rapide et une maintenance préventive.

Principaux enseignements

Avec le pack Ultralytics , tu peux facilement transformer des séquences vidéo en graphiques clairs et perspicaces qui révèlent ce qui se passe, par exemple en suivant le nombre de personnes ou d'objets qui apparaissent au fil du temps. Au lieu d'examiner manuellement des heures de vidéo, tu peux générer des résumés visuels qui mettent en évidence des modèles et des tendances clés, ce qui permet d'agir rapidement. Que ce soit dans les hôpitaux, les magasins de détail ou les usines de fabrication, ces graphiques transforment les résultats complexes de l'IA en informations que tout le monde peut comprendre et utiliser.

Tu veux en savoir plus sur l'IA ? Explore notre dépôt GitHub, connecte-toi avec notre communauté et consulte nos options de licence pour démarrer ton projet de vision par ordinateur. Découvre des innovations comme l'IA dans la fabrication et la vision par ordinateur dans le secteur de la logistique sur nos pages de solutions.

Logo LinkedInLogo de TwitterLogo FacebookSymbole du lien de copie

Lire la suite dans cette catégorie

Construisons ensemble le futur
de l'IA !

Commence ton voyage avec le futur de l'apprentissage automatique.