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.
L'analyse avec Ultralytics YOLO
yolo solutions analytics show=True
# Pass the source
yolo solutions analytics source="path/to/video.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.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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), # this is fixed
)
# Initialize analytics object
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], # display analytics for specific detection classes
)
# Process video
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
# print(results) # access the output
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows() # destroy all opened windows
Analytics
Arguments
Voici un tableau présentant les arguments d'Analytics :
Argument | Type | Défaut | Description |
---|---|---|---|
model |
str |
None |
Chemin d'accès au fichier modèleYOLO d'Ultralytics . |
analytics_type |
str |
line |
Type de graphique, c'est-à-dire, line , bar , area ou pie . |
Vous pouvez également tirer parti de différents track
dans le Analytics
solution.
Argument | Type | Défaut | Description |
---|---|---|---|
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. |
device |
str |
None |
Spécifie le dispositif d'inférence (par ex, cpu , cuda:0 ou 0 ). Permet aux utilisateurs de choisir entre CPU, un GPU spécifique ou d'autres dispositifs de calcul pour l'exécution du modèle. |
En outre, les arguments de visualisation suivants sont pris en charge :
Argument | Type | Défaut | Description |
---|---|---|---|
show |
bool |
False |
Si True affiche les images ou vidéos annotées dans une fenêtre. Utile pour un retour d'information visuel immédiat pendant le développement ou les tests. |
line_width |
None or int |
None |
Spécifie la largeur de ligne des boîtes de délimitation. Si les None La largeur de la ligne est automatiquement ajustée en fonction de la taille de l'image. Permet une personnalisation visuelle pour plus de clarté. |
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. La solution Ultralytics YOLO11 Analytics permet de générer ces visualisations à partir de vos résultats de détection et de suivi d'objets, facilitant ainsi l'extraction d'informations significatives à partir de vos données visuelles.
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.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,
(1280, 720), # 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
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # 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 L'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.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,
(1280, 720), # 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
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # 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.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,
(1280, 720), # 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
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # 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.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,
(1280, 720), # 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
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # 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 .