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é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 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 :
Nom | Type | Défaut | Description |
---|---|---|---|
analytics_type | str | line | Type de graphique : "ligne", "barre", "zone", "camembert". |
model | str | None | Chemin d'accès au fichier modèle Ultralytics YOLO |
line_width | int | 2 | Épaisseur du trait pour les boîtes de délimitation. |
show | bool | False | Drapeau 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 à travers les séquences vidéo. |
tracker | str | botsort.yaml | Spécifie l'algorithme de suivi à utiliser, par ex, 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 filtrer les 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, 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 :
- Charge un modèle YOLO11 et ouvre ton fichier vidéo.
- Initialise le
Analytics
avec le type "ligne". - 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.
- 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 :
- 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.
- Facilité d'utilisation: l'API et les fonctions simples permettent de mettre en œuvre et de visualiser facilement les données.
- Personnalisation: Personnalise les titres, les étiquettes, les couleurs et plus encore pour répondre à tes besoins spécifiques.
- 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 :
- 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.
- API conviviale: Simple à mettre en place et à utiliser avec un minimum de code.
- Personnalisable: Diverses options de personnalisation pour les couleurs, les étiquettes et plus encore.
- 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 :
- 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.
- Facilité d'utilisation: L'API conviviale permet une mise en œuvre et une intégration rapides sans codage approfondi.
- Performance en temps réel: Optimisé pour une inférence à grande vitesse, adapté aux applications en temps réel.
- 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.
- 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 .