Skip to content

L'analyse Ă  l'aide de Ultralytics YOLO11

Introduction

Ce guide fournit une vue d'ensemble de trois types fondamentaux de visualisation 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.



Regarder : 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éaire Tracé des barres Diagramme circulaire
Graphique linéaire Tracé des barres Diagramme 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 pour plusieurs groupes au cours de la mĂŞme pĂ©riode.
  • Les diagrammes en barres, quant Ă  eux, permettent de comparer des quantitĂ©s dans diffĂ©rentes catĂ©gories et de 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 :

Nom Type DĂ©faut Description
analytics_type str line Type de graphique : "ligne", "barre", "surface", "camembert".
model str None Chemin d'accès au fichier modèle Ultralytics YOLO
line_width int 2 Épaisseur du trait pour les cadres de délimitation.
show bool False Indicateur permettant de contrôler l'affichage ou non du flux vidéo.

Arguments model.track

Argument Type DĂ©faut Description
source str None Spé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.
persist bool False Permet un suivi persistant des objets entre les images, en conservant les identifiants sur l'ensemble des séquences vidéo.
tracker str botsort.yaml Spécifie l'algorithme de suivi à utiliser, par exemple, bytetrack.yaml ou botsort.yaml.
conf float 0.3 Dé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.
iou float 0.5 Définit le seuil d'intersection sur l'union (IoU) pour le filtrage des détections qui se chevauchent.
classes list None Filtre les résultats par indice de classe. Par exemple, classes=[0, 2, 3] ne suit que les classes spécifiées.
verbose bool True Contrôle l'affichage des résultats du suivi, fournissant une sortie visuelle des objets suivis.

Conclusion

Pour une analyse efficace des données, il est essentiel de savoir quand et comment utiliser les différents types de visualisation. Les graphiques linéaires, les diagrammes à barres et les diagrammes circulaires sont des outils fondamentaux qui peuvent vous aider à transmettre l'histoire de vos données de manière 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, procédez comme suit :

  1. Chargez un modèle YOLO11 et ouvrez votre fichier vidéo.
  2. Initialiser le Analytics avec le type "ligne".
  3. Parcourez les images vidéo, en mettant à jour le graphique linéaire avec les données pertinentes, telles que le nombre d'objets par image.
  4. Enregistrer 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 visitez le site Web de la Analyse à l'aide de Ultralytics YOLO11 📊 section.

Quels sont les avantages de l'utilisation de Ultralytics YOLO11 pour créer des diagrammes à barres ?

L'utilisation de Ultralytics YOLO11 pour créer des diagrammes à barres présente plusieurs avantages :

  1. Visualisation des données en temps réel: Intégration transparente des résultats de la détection d'objets dans des diagrammes à barres pour des mises à jour dynamiques.
  2. Facilité d'utilisation: une API et des fonctions simples facilitent la mise en œuvre et la visualisation des données.
  3. Personnalisation: Personnalisez les titres, les étiquettes, les couleurs, etc. pour répondre à vos besoins spécifiques.
  4. Efficacité: Traitez efficacement de grandes quantités de données et mettez à jour les tracés en temps réel pendant le traitement vidéo.

Utilisez 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, consultez 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 car :

  1. Intégration avec la détection d'objets: Intégration directe des résultats de la détection d'objets dans les diagrammes à secteurs 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, etc.
  4. Mises à jour en temps réel: Traitez et visualisez les données en temps réel, ce qui est idéal pour les projets d'analyse vidéo.

Voici un exemple rapide :

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, reportez-vous Ă  la section Diagramme circulaire 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 sur la base 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, voir la section 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 extensif.
  3. Performance en temps réel: Optimisé pour une inférence à grande vitesse, adapté aux applications en temps réel.
  4. Applications diverses: Prise en charge de diverses tâches, notamment le suivi de plusieurs objets, 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 plus détaillées et des cas d'utilisation, consultez notre blogUltralytics .

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

Commentaires