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: Come stimare la distanza tra gli oggetti rilevati con Ultralytics YOLO in Pixel 🚀

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.
  • Evitare le collisioni: Consente ai sistemi di detect 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
  • Fare clic su due caselle di delimitazione qualsiasi con il pulsante sinistro del mouse per calcolare la distanza.
  • Utilizzare il tasto destro del mouse per eliminare tutti i punti disegnati.
  • Fare clic con il tasto sinistro del mouse su un punto qualsiasi della cornice per aggiungere nuovi punti.
La distanza è stimata

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

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:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso del file del modelloYOLO Ultralytics .

È anche possibile utilizzare vari track argomenti nel DistanceCalculation solution.

ArgomentoTipoPredefinitoDescrizione
trackerstr'botsort.yaml'Specifica l'algoritmo di tracking da utilizzare, ad esempio: bytetrack.yaml oppure botsort.yaml.
conffloat0.3Imposta la soglia di confidenza per i rilevamenti; valori inferiori consentono di tracciare più oggetti, ma potrebbero includere falsi positivi.
ioufloat0.5Imposta la soglia Intersection over UnionIoU) per il filtraggio dei rilevamenti sovrapposti.
classeslistNoneFiltra i risultati per indice di classe. Per esempio, classes=[0, 2, 3] traccia solo le classi specificate.
verboseboolTrueControlla la visualizzazione dei risultati del tracking, fornendo un output visivo degli oggetti tracciati.
devicestrNoneSpecifica 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:

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_widthNone or intNoneSpecifica 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_confboolTrueVisualizza il punteggio di confidenza per ogni rilevamento accanto all'etichetta, offrendo una panoramica sulla certezza del modello per ogni rilevamento.
show_labelsboolTrueMostra 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: Analizzare la distanza tra i veicoli e detect le code.
  • 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 tracciamento da usare (l'impostazione predefinita è 'botsortyaml').
  • 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.



📅C reato 1 anno fa ✏️ Aggiornato 8 giorni fa
glenn-jocherRizwanMunawarMatthewNoyceUltralyticsAssistantjk4eIvorZhu331AyushExel

Commenti