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 |
---|---|---|
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 :
- Chargez un modèle YOLO11 et ouvrez votre fichier vidéo.
- Initialiser le
Analytics
avec le type "ligne". - 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.
- 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 :
- 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.
- Facilité d'utilisation: une API et des fonctions simples facilitent la mise en œuvre et la visualisation des données.
- Personnalisation: Personnalisez les titres, les étiquettes, les couleurs, etc. pour répondre à vos besoins spécifiques.
- 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 :
- 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.
- API conviviale: Simple Ă mettre en place et Ă utiliser avec un minimum de code.
- Personnalisable: Diverses options de personnalisation pour les couleurs, les Ă©tiquettes, etc.
- 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 :
- 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 extensif.
- Performance en temps réel: Optimisé pour une inférence à grande vitesse, adapté aux applications en temps réel.
- 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.
- 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 .