Vai al contenuto

Analisi con Ultralytics YOLO26

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 lineeGrafico a barreGrafico a torta
Grafico lineare YOLO per il tracciamento degli oggettiGrafico a barre YOLO per il conteggio dei rilevamentiGrafico a torta YOLO per la distribuzione delle classi

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="yolo26n.pt",  # path to the YOLO26 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:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso di un file modello Ultralytics YOLO.
analytics_typestr'line'Tipo di grafico, ovvero line, bar, area, oppure pie.

È anche possibile sfruttare diversi track argomenti nel Analytics solution.

ArgomentoTipoPredefinitoDescrizione
trackerstr'botsort.yaml'Specifica l'algoritmo di tracking da utilizzare, ad esempio: bytetrack.yaml oppure botsort.yaml.
conffloat0.1Imposta la soglia di confidenza per i rilevamenti; valori inferiori consentono di tracciare più oggetti, ma potrebbero includere falsi positivi.
ioufloat0.7Imposta la soglia Intersection over Union (IoU) per filtrare i detect sovrapposti.
classeslistNoneFiltra i risultati per indice di classe. Per esempio, classes=[0, 2, 3] traccia solo le classi specificate.
verboseboolTrueControlla la visualizzazione dei risultati del tracking, fornendo un output visivo degli oggetti tracciati.
devicestrNoneSpecifica 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:

ArgomentoTipoPredefinitoDescrizione
showboolFalseSe True, visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il test.
line_widthint or NoneNoneSpecifica 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, istogrammi e grafici a torta sono strumenti fondamentali che possono aiutarti a comunicare la storia dei tuoi dati in modo più chiaro ed efficace. La soluzione Ultralytics YOLO26 Analytics offre un modo semplificato per generare queste visualizzazioni dai tuoi risultati di rilevamento oggetti e tracking, rendendo più facile estrarre intuizioni significative dai tuoi dati visivi.

FAQ

Come si crea un grafico a linee utilizzando Ultralytics YOLO26 Analytics?

Per creare un grafico a linee utilizzando Ultralytics YOLO26 Analytics, segui questi passaggi:

  1. Carica un modello YOLO26 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 YOLO26 sezione.

Quali sono i vantaggi dell'utilizzo di Ultralytics YOLO26 per la creazione di grafici a barre?

L'utilizzo di Ultralytics YOLO26 per la creazione di istogrammi offre numerosi 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 YOLO26 per creare grafici a torta nei miei progetti di visualizzazione dati?

Ultralytics YOLO26 è 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.

È possibile utilizzare Ultralytics YOLO26 per track oggetti e aggiornare dinamicamente le visualizzazioni?

Sì, Ultralytics YOLO26 può essere utilizzato per track oggetti e aggiornare dinamicamente le visualizzazioni. Supporta il tracking di più oggetti in tempo reale e può aggiornare diverse visualizzazioni come grafici a linee, istogrammi 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 distingue Ultralytics YOLO26 da altre soluzioni di rilevamento oggetti come OpenCV e TensorFlow?

Ultralytics YOLO26 si distingue da altre soluzioni di rilevamento oggetti come OpenCV e TensorFlow per molteplici ragioni:

  1. All'avanguardia Accuratezza: YOLO26 offre un'accuratezza superiore nei compiti di rilevamento oggetti, segmentation e classificazione.
  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 2 giorni fa
glenn-jocherRizwanMunawarMatthewNoycelakshanthadUltralyticsAssistantIvorZhu331

Commenti