Analisi con Ultralytics YOLO26

Introduzione

Questa guida fornisce una panoramica completa di tre tipi fondamentali di visualizzazioni dati: grafici a linee, grafici a barre e grafici a torta. Ogni sezione include istruzioni passo-passo e frammenti di codice su come creare queste visualizzazioni usando Python.



Watch: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts

Esempi visivi

Grafico a lineeGrafico a barreGrafico a torta
Grafico a linee di analisi YOLO per il tracciamento di oggettiGrafico a barre di analisi YOLO per il conteggio delle rilevazioniGrafico a torta di analisi YOLO per la distribuzione delle classi

Perché i grafici sono importanti

  • I grafici a linee sono ideali per monitorare i cambiamenti su brevi e lunghi periodi e per confrontare i cambiamenti di 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 categorie e mostrare le parti di un tutto.
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

Argomenti di Analytics

Ecco una tabella che delinea gli argomenti di Analytics:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso verso un file modello Ultralytics YOLO.
analytics_typestr'line'Tipo di grafico, es. line, bar, area o pie.

Puoi anche sfruttare diversi argomenti track nella soluzione Analytics.

ArgomentoTipoPredefinitoDescrizione
trackerstr'botsort.yaml'Specifica l'algoritmo di tracciamento da utilizzare, ad esempio bytetrack.yaml o botsort.yaml.
conffloat0.1Imposta la soglia di confidenza per i rilevamenti; valori più bassi consentono il tracciamento di più oggetti ma potrebbero includere falsi positivi.
ioufloat0.7Imposta la soglia di Intersection over Union (IoU) per filtrare i rilevamenti sovrapposti.
classeslistNoneFiltra i risultati per indice di classe. Ad esempio, classes=[0, 2, 3] traccia solo le classi specificate.
verboseboolTrueControlla la visualizzazione dei risultati di tracciamento, fornendo un output visivo degli oggetti tracciati.
devicestrNoneSpecifica il dispositivo per l'inferenza (ad esempio cpu, cuda:0 o 0). Consente agli utenti di scegliere tra CPU, una specifica GPU 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 viene regolato automaticamente in base alla dimensione dell'immagine. Fornisce personalizzazione visiva per maggiore chiarezza.

Conclusione

Comprendere quando e come utilizzare diversi tipi di visualizzazioni è fondamentale per un'analisi dei dati efficace. I grafici a linee, i grafici a barre e i grafici a torta sono strumenti fondamentali che possono aiutarti a trasmettere la storia dei tuoi dati in modo più chiaro ed efficace. La soluzione di analisi Ultralytics YOLO26 offre un modo ottimizzato per generare queste visualizzazioni dai tuoi risultati di object detection e tracciamento, rendendo più facile estrarre approfondimenti significativi dai tuoi dati visivi.

FAQ

Come posso creare un grafico a linee usando Ultralytics YOLO26 Analytics?

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

  1. Carica un modello YOLO26 e apri il tuo file video.
  2. Inizializza la classe Analytics con il tipo impostato su "line".
  3. Itera attraverso i fotogrammi del video, aggiornando il grafico a linee con dati pertinenti, come il conteggio degli oggetti per fotogramma.
  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 della classe Analytics, visita la sezione Analisi con Ultralytics YOLO26.

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

L'utilizzo di Ultralytics YOLO26 per creare grafici a barre offre diversi vantaggi:

  1. Visualizzazione dei dati in tempo reale: Integra senza problemi i risultati di object detection in grafici a barre per aggiornamenti dinamici.
  2. Facilità d'uso: API e funzioni semplici rendono l'implementazione e la visualizzazione dei dati intuitive.
  3. Personalizzazione: Personalizza titoli, etichette, colori e altro per soddisfare i tuoi requisiti specifici.
  4. Efficienza: Gestisci in modo efficiente grandi quantità di dati e aggiorna i grafici in tempo reale durante l'elaborazione video.

Usa 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ù, visita 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 creare grafici a torta perché:

  1. Integrazione con l'object detection: Integra direttamente i risultati dell'object detection in grafici a torta per approfondimenti immediati.
  2. API facile da usare: Semplice da configurare e utilizzare con un codice minimo.
  3. Personalizzabile: Varie opzioni di personalizzazione per colori, etichette e altro.
  4. Aggiornamenti in tempo reale: Gestisci e visualizza i dati in tempo reale, il che è ideale per 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, fai riferimento alla sezione Grafico a torta nella guida.

Può Ultralytics YOLO26 essere usato per tracciare oggetti e aggiornare dinamicamente le visualizzazioni?

Sì, Ultralytics YOLO26 può essere usato 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 per il tracciamento e l'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, vedi la sezione Tracciamento.

Cosa rende Ultralytics YOLO26 diverso da altre soluzioni di object detection come OpenCV e TensorFlow?

Ultralytics YOLO26 si distingue dalle altre soluzioni di object detection come OpenCV e TensorFlow per molteplici motivi:

  1. Precisione all'avanguardia: YOLO26 fornisce una precisione superiore nelle attività di object detection, segmentazione e classificazione.
  2. Facilità d'uso: L'API facile da usare consente una rapida implementazione e integrazione senza una programmazione complessa.
  3. Prestazioni in tempo reale: Ottimizzato per l'inferenza ad alta velocità, adatto per applicazioni in tempo reale.
  4. Applicazioni diverse: Supporta varie attività tra cui il tracciamento multi-oggetto, l'addestramento di modelli personalizzati e l'esportazione in diversi formati come ONNX, TensorRT e CoreML.
  5. Documentazione completa: Ampia documentazione e risorse blog per guidare gli utenti in ogni passaggio.

Per confronti più dettagliati e casi d'uso, esplora il nostro Blog di Ultralytics.

Commenti