Vai al contenuto

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

  1. Caricare un modello YOLO11 e aprire il file video.
  2. Inizializza il Analytics con il tipo impostato su "linea".
  3. Iterare i fotogrammi del video, aggiornando il grafico a linee con i dati rilevanti, come il numero di oggetti per fotogramma.
  4. 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:

  1. Visualizzazione dei dati in tempo reale: Integrazione perfetta dei risultati del rilevamento degli oggetti in grafici a barre per aggiornamenti dinamici.
  2. Facilità d'uso: API e funzioni semplici rendono immediata l'implementazione e la visualizzazione dei dati.
  3. Personalizzazione: Personalizzazione di titoli, etichette, colori e altro ancora per soddisfare le vostre esigenze specifiche.
  4. 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é:

  1. Integrazione con il rilevamento degli oggetti: Integrazione diretta dei risultati del rilevamento degli oggetti nei grafici a torta per ottenere informazioni immediate.
  2. API di facile utilizzo: 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: 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:

  1. Precisione all'avanguardia: YOLO11 offre una precisione superiore nel rilevamento, nella segmentazione e nella classificazione degli oggetti.
  2. Facilità d'uso: L'API di facile utilizzo consente un'implementazione e un'integrazione rapide senza dover ricorrere a una codifica approfondita.
  3. Prestazioni in tempo reale: Ottimizzato per l'inferenza ad alta velocità, adatto alle applicazioni in tempo reale.
  4. 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.
  5. 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 .

📅C reato 10 mesi fa ✏️ Aggiornato 6 giorni fa

Commenti