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.
Esempi di analisi
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()
Argomento Analytics
Ecco una tabella con i dati Analytics
argomenti:
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
analytics_type |
str |
line |
Tipo di grafico: "a linee", "a barre", "ad area", "a torta". |
model |
str |
None |
Percorso del file del modello Ultralytics YOLO |
line_width |
int |
2 |
Spessore delle linee per i riquadri di delimitazione. |
show |
bool |
False |
Flag per controllare se visualizzare il flusso video. |
Argomenti model.track
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
source |
str |
None |
Specifica la directory di origine delle immagini o dei video. Supporta percorsi di file e URL. |
persist |
bool |
False |
Consente il tracciamento persistente degli oggetti tra i fotogrammi, mantenendo gli ID tra le sequenze video. |
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. |
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.
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/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()
Per ulteriori dettagli sulla configurazione del Analytics
visitare il sito Analitica con 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/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()
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/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()
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/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()
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 .