Skip to content

Analyse à l'aide de Ultralytics YOLO11

Introduction

Ce guide donne un aperçu complet de trois types fondamentaux de visualisations de données: les graphiques linéaires, les diagrammes à barres et les diagrammes circulaires. Chaque section comprend des instructions étape par étape et des extraits de code sur la façon de créer ces visualisations à l'aide de Python.



Regarde : Comment générer des graphiques analytiques à l'aide de Ultralytics | Graphiques linéaires, diagrammes à barres, diagrammes de surface et diagrammes circulaires

Échantillons visuels

Graphique linéaireTracé des barresDiagramme circulaire
Graphique linéaireTracé des barresDiagramme circulaire

Pourquoi les graphiques sont-ils importants ?

  • Les graphiques linéaires sont idéaux pour suivre les changements sur des périodes courtes ou longues et pour comparer les changements de plusieurs groupes sur la même période.
  • Les diagrammes en barres, en revanche, conviennent pour comparer les quantités entre différentes catégories et montrer les relations entre une catégorie et sa valeur numérique.
  • Enfin, les diagrammes circulaires sont efficaces pour illustrer les proportions entre les catégories et montrer les parties d'un tout.

Exemples d'analyses

 yolo solutions analytics show=True

# pass the source
yolo solutions analytics source="path/to/video/file.mp4"

# generate the pie chart
yolo solutions analytics analytics_type="pie" show=True

# generate the bar plots
yolo solutions analytics analytics_type="bar" show=True

# generate the area plots
yolo solutions analytics analytics_type="area" show=True
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("Path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
out = cv2.VideoWriter(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1920, 1080),  # This is fixed
)

# Init analytics
analytics = solutions.Analytics(
    show=True,  # Display the output
    analytics_type="line",  # Pass the analytics type, could be "pie", "bar" or "area".
    model="yolo11n.pt",  # Path to the YOLO11 model file
    # classes=[0, 2],  # If you want to count specific classes i.e person and car with COCO pretrained model.
)

# Process video
frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Argument Analytics

Voici un tableau avec les Analytics arguments :

NomTypeDéfautDescription
analytics_typestrlineType de graphique : "ligne", "barre", "zone", "camembert".
modelstrNoneChemin d'accès au fichier modèle Ultralytics YOLO
line_widthint2Épaisseur du trait pour les boîtes de délimitation.
showboolFalseDrapeau permettant de contrôler l'affichage ou non du flux vidéo.

Arguments model.track

ArgumentTypeDéfautDescription
sourcestrNoneSpécifie le répertoire source pour les images ou les vidéos. Prend en charge les chemins d'accès aux fichiers et les URL.
persistboolFalsePermet un suivi persistant des objets entre les images, en conservant les identifiants à travers les séquences vidéo.
trackerstrbotsort.yamlSpécifie l'algorithme de suivi à utiliser, par ex, bytetrack.yaml ou botsort.yaml.
conffloat0.3Définit le seuil de confiance pour les détections ; des valeurs plus faibles permettent de suivre plus d'objets mais peuvent inclure des faux positifs.
ioufloat0.5Définit le seuil d'intersection sur l'union (IoU) pour filtrer les détections qui se chevauchent.
classeslistNoneFiltre les résultats par indice de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées.
verboseboolTrueContrôle l'affichage des résultats du suivi, en fournissant une sortie visuelle des objets suivis.

Conclusion

Comprendre quand et comment utiliser les différents types de visualisation est crucial pour une analyse efficace des données. Les graphiques linéaires, les diagrammes à barres et les diagrammes circulaires sont des outils fondamentaux qui peuvent t'aider à transmettre l'histoire de tes données de façon plus claire et plus efficace.

FAQ

Comment créer un graphique linéaire à l'aide de Ultralytics YOLO11 Analytics ?

Pour créer un graphique linéaire à l'aide de Ultralytics YOLO11 Analytics, suis les étapes suivantes :

  1. Charge un modèle YOLO11 et ouvre ton fichier vidéo.
  2. Initialise le Analytics avec le type "ligne".
  3. Fais défiler les images vidéo, en mettant à jour le graphique linéaire avec des données pertinentes, telles que le nombre d'objets par image.
  4. Enregistre la vidéo de sortie affichant le graphique linéaire.

Exemple :

import cv2

from ultralytics import solutions

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

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1920, 1080),  # This is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Pour plus de détails sur la configuration du Analytics visite le site de la classe Analytics en utilisant Ultralytics YOLO11 📊 section.

Quels sont les avantages de l'utilisation de Ultralytics YOLO11 pour créer des diagrammes en bâtons ?

L'utilisation de Ultralytics YOLO11 pour créer des diagrammes en bâtons offre plusieurs avantages :

  1. Visualisation des données en temps réel: Intègre de façon transparente les résultats de la détection d'objets dans des diagrammes à barres pour des mises à jour dynamiques.
  2. Facilité d'utilisation: l'API et les fonctions simples permettent de mettre en œuvre et de visualiser facilement les données.
  3. Personnalisation: Personnalise les titres, les étiquettes, les couleurs et plus encore pour répondre à tes besoins spécifiques.
  4. Efficacité: Traite efficacement de grandes quantités de données et mets à jour les tracés en temps réel pendant le traitement des vidéos.

Utilise l'exemple suivant pour générer un diagramme à barres :

import cv2

from ultralytics import solutions

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

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1920, 1080),  # This is fixed
)

analytics = solutions.Analytics(
    analytics_type="bar",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Pour en savoir plus, visite la section Tracé des barres du guide.

Pourquoi devrais-je utiliser Ultralytics YOLO11 pour créer des diagrammes circulaires dans mes projets de visualisation de données ?

Ultralytics YOLO11 est un excellent choix pour créer des diagrammes circulaires parce que :

  1. Intégration avec la détection d'objets: Intègre directement les résultats de la détection d'objets dans les diagrammes circulaires pour une compréhension immédiate.
  2. API conviviale: Simple à mettre en place et à utiliser avec un minimum de code.
  3. Personnalisable: Diverses options de personnalisation pour les couleurs, les étiquettes et plus encore.
  4. Mises à jour en temps réel: Traite et visualise les données en temps réel, ce qui est idéal pour les projets d'analyse vidéo.

Voici un petit exemple :

import cv2

from ultralytics import solutions

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

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1920, 1080),  # This is fixed
)

analytics = solutions.Analytics(
    analytics_type="pie",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Pour plus d'informations, reporte-toi à la section Graphique en camembert du guide.

Ultralytics YOLO11 peut-il être utilisé pour suivre des objets et mettre à jour dynamiquement les visualisations ?

Oui, Ultralytics YOLO11 peut être utilisé pour suivre des objets et mettre à jour dynamiquement les visualisations. Il prend en charge le suivi de plusieurs objets en temps réel et peut mettre à jour diverses visualisations telles que des graphiques linéaires, des diagrammes à barres et des diagrammes circulaires en fonction des données des objets suivis.

Exemple de suivi et de mise à jour d'un graphique linéaire :

import cv2

from ultralytics import solutions

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

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(
    "ultralytics_analytics.avi",
    cv2.VideoWriter_fourcc(*"MJPG"),
    fps,
    (1920, 1080),  # This is fixed
)

analytics = solutions.Analytics(
    analytics_type="line",
    show=True,
)

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if success:
        frame_count += 1
        im0 = analytics.process_data(im0, frame_count)  # update analytics graph every frame
        out.write(im0)  # write the video file
    else:
        break

cap.release()
out.release()
cv2.destroyAllWindows()

Pour en savoir plus sur l'ensemble des fonctionnalités, consulte la section sur le suivi.

Qu'est-ce qui différencie Ultralytics YOLO11 des autres solutions de détection d'objets comme OpenCV et TensorFlow?

Ultralytics YOLO11 se distingue des autres solutions de détection d'objets comme OpenCV et TensorFlow pour de multiples raisons :

  1. Précision de pointe: YOLO11 offre une précision supérieure dans les tâches de détection, de segmentation et de classification des objets.
  2. Facilité d'utilisation: L'API conviviale permet une mise en œuvre et une intégration rapides sans codage approfondi.
  3. Performance en temps réel: Optimisé pour une inférence à grande vitesse, adapté aux applications en temps réel.
  4. Applications diverses: Prend en charge diverses tâches, notamment le suivi d'objets multiples, la formation de modèles personnalisés et l'exportation vers différents formats tels que ONNX, TensorRT, et CoreML.
  5. Documentation complète: Une documentation complète et des ressources de blog pour guider les utilisateurs à chaque étape.

Pour des comparaisons et des cas d'utilisation plus détaillés, explore notre blogUltralytics .

📅 C réé il y a 6 mois ✏️ Mis à jour il y a 9 jours

Commentaires