Vai al contenuto

Calcolo della distanza con Ultralytics YOLO11

Cos'è il calcolo della distanza?

La misurazione dello spazio tra due oggetti è nota come calcolo della distanza all'interno di uno spazio specificato. Nel caso di Ultralytics YOLO11, il baricentro del bounding box viene impiegato per calcolare la distanza per i bounding box evidenziati dall'utente.



Guarda: Calcolo della distanza con Ultralytics YOLO11

Elementi visivi

Calcolo della distanza con Ultralytics YOLO11
Calcolo della distanza con Ultralytics YOLO11

Vantaggi del calcolo della distanza?

  • Localizzazione di precisione: Migliora il posizionamento spaziale accurato nelle attività di computer vision.
  • Stima delle dimensioni: Consente la stima delle dimensioni dell'oggetto per una migliore comprensione contestuale.
  • Comprensione della scena: Migliora la comprensione della scena 3D per un processo decisionale migliore in applicazioni come veicoli autonomi e sistemi di sorveglianza.
  • Evitamento delle Collisioni: Consente ai sistemi di rilevare potenziali collisioni monitorando le distanze tra oggetti in movimento.
  • Analisi spaziale: Facilita l'analisi delle relazioni e delle interazioni tra gli oggetti all'interno dell'ambiente monitorato.
Calcolo della distanza
  • Fare clic su due bounding box qualsiasi con il tasto sinistro del mouse per il calcolo della distanza
  • Il clic destro del mouse eliminerà tutti i punti disegnati
  • Il clic sinistro del mouse può essere utilizzato per disegnare punti
La distanza è stimata
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.

Calcolo della distanza utilizzando Ultralytics YOLO

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))
video_writer = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
    model="yolo11n.pt",  # path to the YOLO11 model file.
    show=True,  # display the output
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = distancecalculator(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

DistanceCalculation() Argomenti

Ecco una tabella con i DistanceCalculation argomenti:

Argomento Tipo Predefinito Descrizione
model str None Percorso del file del modello Ultralytics YOLO.

È anche possibile utilizzare vari track argomenti nel DistanceCalculation 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 disponibili 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.
show_conf bool True Visualizza il punteggio di confidenza per ogni rilevamento accanto all'etichetta, offrendo una panoramica sulla certezza del modello per ogni rilevamento.
show_labels bool True Mostra le etichette per ogni rilevamento nell'output visivo, fornendo una comprensione immediata degli oggetti rilevati.

Dettagli di implementazione

Il DistanceCalculation classe funziona tracciando gli oggetti attraverso i frame video e calcolando la distanza euclidea tra i centroidi delle bounding box selezionate. Quando si fa clic su due oggetti, la soluzione:

  1. Estrae i centroidi (punti centrali) dei bounding box selezionati
  2. Calcola la distanza euclidea tra questi centroidi in pixel
  3. Visualizza la distanza sul frame con una linea di collegamento tra gli oggetti

L'implementazione utilizza il mouse_event_for_distance Il metodo per gestire le interazioni del mouse, consentendo agli utenti di selezionare oggetti e cancellare le selezioni secondo necessità. Il process Il metodo gestisce l'elaborazione frame per frame, il tracciamento degli oggetti e il calcolo delle distanze.

Applicazioni

Il calcolo della distanza con YOLO11 ha numerose applicazioni pratiche:

  • Retail Analytics: Misura la prossimità dei clienti ai prodotti e analizza l'efficacia della disposizione del negozio.
  • Sicurezza industriale: Monitoraggio delle distanze di sicurezza tra lavoratori e macchinari
  • Gestione del traffico: Analizza la spaziatura dei veicoli e rileva il tailgating
  • Analisi Sportiva: Calcola le distanze tra i giocatori, la palla e le posizioni chiave del campo
  • Sanità: Garantire un adeguato distanziamento nelle sale d'attesa e monitorare il movimento dei pazienti
  • Robotica: Consentire ai robot di mantenere distanze appropriate da ostacoli e persone

FAQ

Come posso calcolare le distanze tra gli oggetti usando Ultralytics YOLO11?

Per calcolare le distanze tra gli oggetti utilizzando Ultralytics YOLO11, è necessario identificare i centroidi del bounding box degli oggetti rilevati. Questo processo prevede l'inizializzazione della DistanceCalculation classe dal modulo di Ultralytics solutions modulo e utilizzando gli output di tracciamento del modello per calcolare le distanze.

Quali sono i vantaggi dell'utilizzo del calcolo della distanza con Ultralytics YOLO11?

L'utilizzo del calcolo della distanza con Ultralytics YOLO11 offre diversi vantaggi:

  • Precisione di localizzazione: Fornisce un posizionamento spaziale accurato per gli oggetti.
  • Stima delle dimensioni: Aiuta a stimare le dimensioni fisiche, contribuendo a una migliore comprensione contestuale.
  • Comprensione della scena: Migliora la comprensione della scena 3D, favorendo un processo decisionale più efficace in applicazioni come la guida autonoma e la sorveglianza.
  • Elaborazione in tempo reale: Esegue calcoli al volo, rendendolo adatto per l'analisi video in diretta.
  • Funzionalità di integrazione: Funziona perfettamente con altre soluzioni YOLO11 come il tracciamento degli oggetti e la stima della velocità.

Posso eseguire il calcolo della distanza in flussi video in tempo reale con Ultralytics YOLO11?

Sì, è possibile eseguire il calcolo della distanza in flussi video in tempo reale con Ultralytics YOLO11. Il processo prevede l'acquisizione di frame video utilizzando OpenCV, l'esecuzione di YOLO11 il rilevamento di oggettie l'utilizzo della DistanceCalculation classe per calcolare le distanze tra gli oggetti in frame successivi. Per un'implementazione dettagliata, vedere l'esempio di flusso video.

Come posso eliminare i punti disegnati durante il calcolo della distanza usando Ultralytics YOLO11?

Per eliminare i punti disegnati durante il calcolo della distanza con Ultralytics YOLO11, è possibile utilizzare un clic destro del mouse. Questa azione cancellerà tutti i punti disegnati. Per maggiori dettagli, fare riferimento alla sezione delle note nell'esempio di calcolo della distanza.

Quali sono gli argomenti chiave per l'inizializzazione della classe DistanceCalculation in Ultralytics YOLO11?

Gli argomenti chiave per l'inizializzazione della DistanceCalculation classe in Ultralytics YOLO11 includono:

  • model: Percorso del file del modello YOLO11.
  • tracker: Algoritmo di tracking da utilizzare (il valore predefinito è 'botsort.yaml').
  • conf: Soglia di confidenza per i rilevamenti.
  • show: Flag per visualizzare l'output.

Per un elenco esaustivo e i valori predefiniti, consultare gli argomenti di DistanceCalculation.



📅 Creato 1 anno fa ✏️ Aggiornato 4 mesi fa

Commenti