Analisi con Ultralytics YOLO11
Introduzione
Questa guida fornisce una panoramica completa di tre tipi fondamentali di visualizzazioni di dati: grafici a linee, grafici a barre e grafici a torta. Ogni sezione include istruzioni dettagliate e frammenti di codice su come creare queste visualizzazioni utilizzando python.
Guarda: Come generare grafici analitici utilizzando Ultralytics | Grafici a linee, istogrammi, grafici ad area e a torta
Esempi visivi
Grafico a linee | Grafico a barre | Grafico a torta |
---|---|---|
![]() |
![]() |
![]() |
Perché i grafici sono importanti
- I grafici a linee sono ideali per tracciare i cambiamenti su periodi brevi e lunghi e per confrontare i cambiamenti per più gruppi nello stesso periodo.
- I grafici a barre, d'altra parte, sono adatti per confrontare quantità tra diverse categorie e mostrare le relazioni tra una categoria e il suo valore numerico.
- Infine, i grafici a torta sono efficaci per illustrare le proporzioni tra le categorie e mostrare le parti di un intero.
Analisi utilizzando 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
Argomenti
Ecco una tabella che delinea gli argomenti di Analytics:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
model |
str |
None |
Percorso del file del modello Ultralytics YOLO. |
analytics_type |
str |
line |
Tipo di grafico, ovvero line , bar , area , oppure pie . |
È anche possibile sfruttare diversi track
argomenti nel Analytics
solution.
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Specifica l'algoritmo di tracking da utilizzare, ad esempio: bytetrack.yaml oppure botsort.yaml . |
conf |
float |
0.3 |
Imposta la soglia di confidenza per i rilevamenti; valori inferiori consentono di tracciare più oggetti, ma potrebbero includere falsi positivi. |
iou |
float |
0.5 |
Imposta la soglia Intersection over Union (IoU) per filtrare i rilevamenti sovrapposti. |
classes |
list |
None |
Filtra i risultati per indice di classe. Per esempio, classes=[0, 2, 3] traccia solo le classi specificate. |
verbose |
bool |
True |
Controlla la visualizzazione dei risultati del tracking, fornendo un output visivo degli oggetti tracciati. |
device |
str |
None |
Specifica il dispositivo per l'inferenza (ad esempio, cpu , cuda:0 oppure 0 ). Consente agli utenti di scegliere tra CPU, una GPU specifica o altri dispositivi di calcolo per l'esecuzione del modello. |
Inoltre, sono supportati i seguenti argomenti di visualizzazione:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
show |
bool |
False |
Se True , visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il test. |
line_width |
None or int |
None |
Specifica lo spessore della linea dei riquadri di delimitazione. Se None , lo spessore della linea viene regolato automaticamente in base alle dimensioni dell'immagine, fornendo una personalizzazione visiva per una maggiore chiarezza. |
Conclusione
Comprendere quando e come utilizzare diversi tipi di visualizzazioni è fondamentale per un'analisi efficace dei dati. Grafici a linee, grafici a barre e grafici a torta sono strumenti fondamentali che possono aiutarti a trasmettere la storia dei tuoi dati in modo più chiaro ed efficace. La soluzione Ultralytics YOLO11 Analytics fornisce un modo semplificato per generare queste visualizzazioni dai tuoi risultati di rilevamento oggetti e tracciamento, rendendo più facile estrarre informazioni significative dai tuoi dati visivi.
FAQ
Come posso creare un grafico a linee usando Ultralytics YOLO11 Analytics?
Per creare un grafico a linee utilizzando Ultralytics YOLO11 Analytics, segui questi passaggi:
- Carica un modello YOLO11 e apri il tuo file video.
- Inizializza il
Analytics
classe con il tipo impostato su "line". - Itera attraverso i frame video, aggiornando il grafico a linee con i dati rilevanti, come il conteggio degli oggetti per frame.
- Salva il video di output che mostra il grafico a linee.
Esempio:
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()
Per ulteriori dettagli sulla configurazione del Analytics
classe, visitare la Analisi con Ultralytics YOLO11 sezione.
Quali sono i vantaggi dell'utilizzo di Ultralytics YOLO11 per la creazione di grafici a barre?
L'utilizzo di Ultralytics YOLO11 per la creazione di grafici a barre offre diversi vantaggi:
- Visualizzazione dei dati in tempo reale: Integra perfettamente i risultati del rilevamento di oggetti in grafici a barre per aggiornamenti dinamici.
- Facilità d'uso: Semplici API e funzioni rendono semplice l'implementazione e la visualizzazione dei dati.
- Personalizzazione: Personalizza titoli, etichette, colori e altro per soddisfare le tue esigenze specifiche.
- Efficienza: Gestisce in modo efficiente grandi quantità di dati e aggiorna i grafici in tempo reale durante l'elaborazione video.
Utilizza il seguente esempio per generare un grafico a barre:
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()
Per ulteriori informazioni, visitare la sezione Grafico a barre nella guida.
Perché dovrei usare Ultralytics YOLO11 per creare grafici a torta nei miei progetti di visualizzazione dati?
Ultralytics YOLO11 è una scelta eccellente per la creazione di grafici a torta perché:
- Integrazione con il Rilevamento di Oggetti: Integra direttamente i risultati del rilevamento di oggetti in grafici a torta per ottenere informazioni immediate.
- API intuitiva: Semplice da configurare e utilizzare con codice minimo.
- Personalizzabile: Diverse opzioni di personalizzazione per colori, etichette e altro.
- Aggiornamenti in tempo reale: Gestisci e visualizza i dati in tempo reale, ideale per progetti di analisi video.
Ecco un esempio rapido:
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()
Per maggiori informazioni, consultare la sezione Grafico a Torta nella guida.
Ultralytics YOLO11 può essere utilizzato per tracciare oggetti e aggiornare dinamicamente le visualizzazioni?
Sì, Ultralytics YOLO11 può essere utilizzato per tracciare oggetti e aggiornare dinamicamente le visualizzazioni. Supporta il tracciamento di più oggetti in tempo reale e può aggiornare varie visualizzazioni come grafici a linee, grafici a barre e grafici a torta in base ai dati degli oggetti tracciati.
Esempio di tracciamento e aggiornamento di un grafico a linee:
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()
Per informazioni sulla funzionalità completa, consultare la sezione Tracking.
Cosa rende Ultralytics YOLO11 diverso da altre soluzioni di object detection come OpenCV e TensorFlow?
Ultralytics YOLO11 si distingue da altre soluzioni di object detection come OpenCV e TensorFlow per diversi motivi:
- Accuratezza all'avanguardia: YOLO11 offre un'accuratezza superiore nel rilevamento, nella segmentazione e nella classificazione degli oggetti.
- Facilità d'uso: L'API intuitiva consente un'implementazione e un'integrazione rapide senza necessità di codifica complessa.
- Prestazioni in tempo reale: Ottimizzato per l'inferenza ad alta velocità, adatto per applicazioni in tempo reale.
- Applicazioni diversificate: Supporta varie attività, tra cui il tracking multi-oggetto, il training di modelli personalizzati e l'esportazione in diversi formati come ONNX, TensorRT e CoreML.
- Documentazione Completa: Ampia documentazione e risorse del blog per guidare gli utenti in ogni fase.
Per confronti e casi d'uso più dettagliati, esplora il nostro Blog di Ultralytics.