Analyse utilisant Ultralytics YOLO11
Introduction
Ce guide fournit 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.
Regarder : Comment générer des graphiques analytiques à l'aide d'Ultralytics | Graphiques linéaires, histogrammes, graphiques de surface et circulaires
Exemples visuels
Graphique linéaire | Diagramme à barres | Diagramme circulaire |
---|---|---|
![]() |
![]() |
![]() |
Pourquoi les graphes sont-ils importants ?
- Les graphiques linéaires sont idéaux pour suivre les changements sur de courtes et longues périodes et pour comparer les changements pour plusieurs groupes sur la même période.
- Les diagrammes à barres, quant à eux, sont adaptés pour comparer des 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.
Analyse utilisant 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 décrivant les arguments d'Analytics :
Argument | Type | Par défaut | Description |
---|---|---|---|
model |
str |
None |
Chemin d'accès au fichier de modèle Ultralytics YOLO. |
analytics_type |
str |
line |
Type de graphe, c'est-à-dire, line , bar , area , ou pie . |
Vous pouvez également exploiter différents track
arguments dans le Analytics
solution.
Argument | Type | Par 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 basses permettent de suivre plus d'objets, mais peuvent inclure de faux positifs. |
iou |
float |
0.5 |
Définit le seuil Intersection sur Union (IoU) pour filtrer les détections qui se chevauchent. |
classes |
list |
None |
Filtre les résultats par index de classe. Par exemple, classes=[0, 2, 3] suit uniquement les classes spécifiées. |
verbose |
bool |
True |
Contrôle l'affichage des résultats de suivi, fournissant une sortie visuelle des objets suivis. |
device |
str |
None |
Spécifie le périphérique pour l'inférence (par exemple, cpu , cuda:0 ou 0 ). Permet aux utilisateurs de choisir entre le CPU, un GPU spécifique ou d'autres périphériques de calcul pour l'exécution du modèle. |
De plus, les arguments de visualisation suivants sont pris en charge :
Argument | Type | Par défaut | Description |
---|---|---|---|
show |
bool |
False |
Si True , affiche les images ou vidéos annotées dans une fenêtre. Utile pour un retour 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 englobantes. Si None , la largeur de ligne est automatiquement ajustée en fonction de la taille de l'image. Fournit une personnalisation visuelle pour plus de clarté. |
Conclusion
Comprendre quand et comment utiliser différents types de visualisations 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 vous aider à transmettre l'histoire de vos données plus clairement et plus efficacement. La solution d'analyse Ultralytics YOLO11 offre un moyen simplifié de générer ces visualisations à partir de vos résultats de détection d'objets et de suivi, ce qui facilite l'extraction d'informations significatives à partir de vos données visuelles.
FAQ
Comment créer un graphique linéaire à l'aide d'Ultralytics YOLO11 Analytics ?
Pour créer un graphique linéaire à l’aide d’Ultralytics YOLO11 Analytics, suivez ces étapes :
- Chargez un modèle YOLO11 et ouvrez votre fichier vidéo.
- Initialiser le
Analytics
classe avec le type défini sur "line". - 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.
- Enregistrez 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
classe, consultez la Analyse utilisant Ultralytics YOLO11 section.
Quels sont les avantages de l'utilisation d'Ultralytics YOLO11 pour la création d'histogrammes ?
L'utilisation d'Ultralytics YOLO11 pour créer des diagrammes à barres offre plusieurs avantages :
- Visualisation des données en temps réel : Intégrez de manière 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 facilitent la mise en œuvre et la visualisation des données.
- Personnalisation : Personnalisez les titres, les étiquettes, les couleurs, et plus encore pour répondre à vos besoins spécifiques.
- Efficacité : Gérer efficacement de grandes quantités de données et mettre à 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 Diagramme à barres dans le 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 la création de diagrammes circulaires, car :
- Intégration à la détection d’objets : Intégrez directement les résultats de la détection d’objets dans des graphiques circulaires pour obtenir des informations immédiates.
- API conviviale : Simple à configurer 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 : Gérez 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, consultez la section Diagramme circulaire dans le 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.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 toutes les fonctionnalités, consultez 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 telles qu'OpenCV et TensorFlow pour plusieurs raisons :
- Exactitude de pointe : YOLO11 offre une exactitude supérieure dans les tâches de détection d'objets, de segmentation et de classification.
- 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 l'inférence à haute vitesse, adapté aux applications en temps réel.
- Applications diverses : Prend en charge diverses tâches, notamment le suivi multi-objets, l'entraînement de modèles personnalisés et l'exportation vers différents formats tels que ONNX, TensorRT et CoreML.
- Documentation complète : Vaste documentation et ressources de blogue pour guider les utilisateurs à chaque étape.
Pour des comparaisons et des cas d'utilisation plus détaillés, explorez notre Blog Ultralytics.