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.

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:

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

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

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

  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 6 mesi fa ✏️ Aggiornato 10 giorni fa

Commenti