Vai al contenuto

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
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:

  1. Carica un modello YOLO11 e apri il tuo file video.
  2. Inizializza il Analytics classe con il tipo impostato su "line".
  3. Itera attraverso i frame video, aggiornando il grafico a linee con i dati rilevanti, come il conteggio degli oggetti per frame.
  4. 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:

  1. Visualizzazione dei dati in tempo reale: Integra perfettamente i risultati del rilevamento di oggetti in grafici a barre per aggiornamenti dinamici.
  2. Facilità d'uso: Semplici API e funzioni rendono semplice l'implementazione e la visualizzazione dei dati.
  3. Personalizzazione: Personalizza titoli, etichette, colori e altro per soddisfare le tue esigenze specifiche.
  4. 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é:

  1. Integrazione con il Rilevamento di Oggetti: Integra direttamente i risultati del rilevamento di oggetti in grafici a torta per ottenere informazioni immediate.
  2. API intuitiva: Semplice da configurare e utilizzare con codice minimo.
  3. Personalizzabile: Diverse opzioni di personalizzazione per colori, etichette e altro.
  4. 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:

  1. Accuratezza all'avanguardia: YOLO11 offre un'accuratezza superiore nel rilevamento, nella segmentazione e nella classificazione degli oggetti.
  2. Facilità d'uso: L'API intuitiva consente un'implementazione e un'integrazione rapide senza necessità di codifica complessa.
  3. Prestazioni in tempo reale: Ottimizzato per l'inferenza ad alta velocità, adatto per applicazioni in tempo reale.
  4. 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.
  5. 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.



📅 Creato 1 anno fa ✏️ Aggiornato 5 mesi fa

Commenti