Analitica con l'utilizzo di Ultralytics YOLO11
Introduzione
Questa guida fornisce una panoramica completa di tre tipi fondamentali di visualizzazione dei dati: grafici a linee, a barre e a torta. Ogni sezione include istruzioni passo passo e frammenti di codice su come creare queste visualizzazioni utilizzando Python.
Guarda: Come generare grafici analitici utilizzando Ultralytics | Grafici a linee, a barre, ad area e a torta
Campioni visivi
Grafico a linee | Trama della barra | Grafico a torta |
---|---|---|
![]() |
![]() |
![]() |
Perché i grafici sono importanti
- I grafici a linee sono ideali per tracciare le variazioni su periodi brevi e lunghi e per confrontare le variazioni di più gruppi nello stesso periodo.
- I grafici a barre, invece, sono adatti a confrontare le quantità tra diverse categorie e a 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 per mostrare le parti di un insieme.
Analisi con 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 illustra gli argomenti di Analytics:
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
model |
str |
None |
Percorso del file del modelloYOLO Ultralytics . |
analytics_type |
str |
line |
Tipo di grafico, cioè, line , bar , area , o pie . |
È inoltre possibile sfruttare diversi track
argomenti nella sezione Analytics
soluzione.
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Specifica l'algoritmo di tracciamento da utilizzare, ad es, bytetrack.yaml o botsort.yaml . |
conf |
float |
0.3 |
Imposta la soglia di confidenza per i rilevamenti; valori più bassi consentono di tracciare un maggior numero di oggetti, ma possono includere falsi positivi. |
iou |
float |
0.5 |
Imposta la soglia Intersection over Union (IoU) per il filtraggio dei rilevamenti sovrapposti. |
classes |
list |
None |
Filtra i risultati per indice di classe. Ad esempio, classes=[0, 2, 3] tiene traccia solo delle classi specificate. |
verbose |
bool |
True |
Controlla la visualizzazione dei risultati del tracciamento, fornendo un output visivo degli oggetti tracciati. |
device |
str |
None |
Specifica il dispositivo per l'inferenza (ad es, cpu , cuda:0 o 0 ). Consente agli utenti di scegliere tra CPU, uno specifico GPU 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 la larghezza della linea delle caselle di delimitazione. Se None La larghezza della linea viene regolata automaticamente in base alle dimensioni dell'immagine. Fornisce una personalizzazione visiva per la chiarezza. |
Conclusione
Capire quando e come utilizzare i diversi tipi di visualizzazione è fondamentale per un'analisi efficace dei dati. I grafici a linee, a barre e a torta sono strumenti fondamentali che possono aiutare a trasmettere la storia dei dati in modo più chiaro ed efficace. La soluzione analiticaYOLO11 di Ultralytics offre un modo semplice per generare queste visualizzazioni dai risultati del rilevamento e del tracciamento degli oggetti, facilitando l'estrazione di informazioni significative dai dati visivi.
FAQ
Come si crea un grafico a linee con Ultralytics YOLO11 Analytics?
Per creare un grafico a linee con Ultralytics YOLO11 Analytics, procedere come segue:
- Caricare un modello YOLO11 e aprire il file video.
- Inizializza il
Analytics
con il tipo impostato su "linea". - Iterare i fotogrammi del video, aggiornando il grafico a linee con i dati rilevanti, come il numero di oggetti per fotogramma.
- Salvare il video di uscita che visualizza 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
visitare il sito Analitica con l'utilizzo di Ultralytics YOLO11 sezione.
Quali sono i vantaggi dell'utilizzo di Ultralytics YOLO11 per la creazione di diagrammi a barre?
L'utilizzo di Ultralytics YOLO11 per la creazione di diagrammi a barre offre diversi vantaggi:
- Visualizzazione dei dati in tempo reale: Integrazione perfetta dei risultati del rilevamento degli oggetti in grafici a barre per aggiornamenti dinamici.
- Facilità d'uso: API e funzioni semplici rendono immediata l'implementazione e la visualizzazione dei dati.
- Personalizzazione: Personalizzazione di titoli, etichette, colori e altro ancora per soddisfare le vostre esigenze specifiche.
- Efficienza: Gestione efficiente di grandi quantità di dati e aggiornamento dei grafici in tempo reale durante l'elaborazione dei video.
Utilizzate 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 saperne di più, visitate la sezione Trama delle barre della guida.
Perché utilizzare Ultralytics YOLO11 per creare grafici a torta nei progetti di visualizzazione dei dati?
Ultralytics YOLO11 è una scelta eccellente per creare grafici a torta perché:
- Integrazione con il rilevamento degli oggetti: Integrazione diretta dei risultati del rilevamento degli oggetti nei grafici a torta per ottenere informazioni immediate.
- API di facile utilizzo: Semplice da configurare e utilizzare con un codice minimo.
- Personalizzabile: Varie opzioni di personalizzazione per colori, etichette e altro.
- Aggiornamenti in tempo reale: Gestione e visualizzazione dei dati in tempo reale, ideale per i progetti di analisi video.
Ecco un rapido 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="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 ulteriori informazioni, consultare la sezione Grafico a torta della guida.
Ultralytics YOLO11 può essere utilizzato per tracciare gli oggetti e aggiornare dinamicamente le visualizzazioni?
Sì, Ultralytics YOLO11 può essere usato per tracciare gli oggetti e aggiornare dinamicamente le visualizzazioni. Supporta il tracciamento di più oggetti in tempo reale e può aggiornare varie visualizzazioni come grafici a linee, a barre e 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 conoscere la funzionalità completa, consultare la sezione Tracciamento.
Che cosa rende Ultralytics YOLO11 diverso da altre soluzioni per il rilevamento degli oggetti come OpenCV e TensorFlow?
Ultralytics YOLO11 si distingue da altre soluzioni di rilevamento degli oggetti come OpenCV e TensorFlow per diversi motivi:
- Precisione all'avanguardia: YOLO11 offre una precisione superiore nel rilevamento, nella segmentazione e nella classificazione degli oggetti.
- Facilità d'uso: L'API di facile utilizzo consente un'implementazione e un'integrazione rapide senza dover ricorrere a una codifica approfondita.
- Prestazioni in tempo reale: Ottimizzato per l'inferenza ad alta velocità, adatto alle applicazioni in tempo reale.
- Applicazioni diverse: Supporta diverse attività, tra cui il tracciamento di più oggetti, l'addestramento di modelli personalizzati e l'esportazione in diversi formati come ONNX, TensorRT e CoreML.
- Documentazione completa: Un'ampia documentazione e risorse blog per guidare gli utenti in ogni fase.
Per confronti e casi d'uso più dettagliati, esplorate il nostro blogUltralytics .