Calcolo della distanza con Ultralytics YOLO26

Cos'è il calcolo della distanza?

Misurare lo spazio tra due oggetti è noto come calcolo della distanza all'interno di uno spazio specificato. Nel caso di Ultralytics YOLO26, il centroide del riquadro di delimitazione viene utilizzato per calcolare la distanza per i riquadri di delimitazione evidenziati dall'utente.



Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀

Visualizzazioni

Calcolo della distanza con Ultralytics YOLO26
Calcolo della distanza con Ultralytics YOLO26

Vantaggi del calcolo della distanza

  • Precisione di localizzazione: Migliora il posizionamento spaziale accurato nelle attività di computer vision.
  • Stima delle dimensioni: Consente la stima delle dimensioni degli oggetti per una migliore comprensione contestuale.
  • Comprensione della scena: Migliora la comprensione della scena 3D per un miglior processo decisionale in applicazioni come veicoli autonomi e sistemi di sorveglianza.
  • Prevenzione delle collisioni: Consente ai sistemi di rilevare potenziali collisioni monitorando le distanze tra gli oggetti in movimento.
  • Analisi spaziale: Facilita l'analisi delle relazioni e delle interazioni tra gli oggetti all'interno dell'ambiente monitorato.
Calcolo della distanza
  • Fai clic su due riquadri di delimitazione qualsiasi con il tasto sinistro del mouse per calcolare la distanza.
  • Usa il tasto destro del mouse per eliminare tutti i punti disegnati.
  • Fai clic con il tasto sinistro ovunque nel frame per aggiungere nuovi punti.
La distanza è una stima

La distanza è una stima e potrebbe non essere del tutto accurata perché viene calcolata utilizzando dati 2D, che mancano di informazioni sulla profondità.

Calcolo della distanza con 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="yolo26n.pt",  # path to the YOLO26 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

Argomenti di DistanceCalculation()

Ecco una tabella con gli argomenti di DistanceCalculation:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso verso un file modello Ultralytics YOLO.

Puoi anche utilizzare vari argomenti di track nella soluzione DistanceCalculation.

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 disponibili 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.
show_confboolTrueVisualizza il punteggio di confidenza per ogni rilevamento accanto all'etichetta. Offre informazioni sulla certezza del modello per ogni rilevamento.
show_labelsboolTrueVisualizza le etichette per ogni rilevamento nell'output visivo. Fornisce una comprensione immediata degli oggetti rilevati.

Dettagli dell'implementazione

La classe DistanceCalculation funziona tracciando gli oggetti attraverso i frame video e calcolando la distanza euclidea tra i centroidi dei riquadri di delimitazione selezionati. Quando fai clic su due oggetti, la soluzione:

  1. Estrae i centroidi (punti centrali) dei riquadri di delimitazione 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 metodo mouse_event_for_distance per gestire le interazioni del mouse, consentendo agli utenti di selezionare oggetti e cancellare le selezioni secondo necessità. Il metodo process gestisce l'elaborazione frame per frame, tracciando gli oggetti e calcolando le distanze.

Applicazioni

Il calcolo della distanza con YOLO26 ha numerose applicazioni pratiche:

  • Analisi al dettaglio: Misura la vicinanza dei clienti ai prodotti e analizza l'efficacia del layout del negozio
  • Sicurezza industriale: Monitora le distanze di sicurezza tra lavoratori e macchinari
  • Gestione del traffico: Analizza la spaziatura dei veicoli e rileva il mancato rispetto della distanza di sicurezza
  • Analisi sportiva: Calcola le distanze tra i giocatori, la palla e le posizioni chiave sul campo
  • Sanità: Assicura il corretto distanziamento nelle aree di attesa e monitora il movimento dei pazienti
  • Robotica: Consente ai robot di mantenere le distanze appropriate da ostacoli e persone

FAQ

Come calcolo le distanze tra gli oggetti usando Ultralytics YOLO26?

Per calcolare le distanze tra gli oggetti utilizzando Ultralytics YOLO26, devi identificare i centroidi dei riquadri di delimitazione degli oggetti rilevati. Questo processo prevede l'inizializzazione della classe DistanceCalculation dal modulo solutions di Ultralytics e l'utilizzo degli output di tracciamento del modello per calcolare le distanze.

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

L'utilizzo del calcolo della distanza con Ultralytics YOLO26 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, aiutando a migliorare il processo decisionale in applicazioni come la guida autonoma e la sorveglianza.
  • Elaborazione in tempo reale: Esegue i calcoli al volo, rendendolo adatto all'analisi video dal vivo.
  • Capacità di integrazione: Funziona perfettamente con altre soluzioni YOLO26 come il tracciamento degli oggetti e la stima della velocità.

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

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

Come elimino i punti disegnati durante il calcolo della distanza utilizzando Ultralytics YOLO26?

Per eliminare i punti disegnati durante il calcolo della distanza con Ultralytics YOLO26, puoi usare il tasto destro del mouse. Questa azione cancellerà tutti i punti che hai disegnato. Per ulteriori dettagli, consulta la sezione note sotto l'esempio di calcolo della distanza.

Quali sono gli argomenti chiave per inizializzare la classe DistanceCalculation in Ultralytics YOLO26?

Gli argomenti chiave per inizializzare la classe DistanceCalculation in Ultralytics YOLO26 includono:

  • model: Percorso del file del modello YOLO26.
  • tracker: Algoritmo di tracciamento 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, consulta gli argomenti di DistanceCalculation.

Commenti