Calcolo della distanza con Ultralytics YOLO26#
Che cos'è il calcolo della distanza?#
Il calcolo della distanza è il processo di misurazione dello spazio tra due oggetti rilevati all'interno di un'immagine o di un fotogramma video. Nel caso di Ultralytics YOLO26, il centroide del riquadro di delimitazione viene utilizzato per calcolare la distanza tra i riquadri di delimitazione evidenziati dall'utente.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Elementi visivi#
| Calcolo della distanza con Ultralytics YOLO26 |
|---|
![]() |
Vantaggi del calcolo della distanza#
- Precisione della localizzazione: migliora il posizionamento spaziale accurato nelle attività di visione artificiale.
- Stima delle dimensioni: consente di stimare le dimensioni degli oggetti per una migliore comprensione del contesto.
- Comprensione della scena: migliora la comprensione delle scene 3D per decisioni più efficaci in applicazioni come i veicoli autonomi e i sistemi di sorveglianza.
- Prevenzione 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 nell'ambiente monitorato.
Calcolo della distanza
- Fai clic con il pulsante sinistro del mouse su due riquadri di delimitazione qualsiasi per calcolare la distanza.
- Usa il pulsante destro del mouse per eliminare tutti i punti disegnati.
La distanza è una stima
La distanza è una stima e potrebbe non essere completamente accurata perché viene calcolata utilizzando dati bidimensionali, che mancano di informazioni sulla profondità.
Calcolo delle distanze con YOLO26#
La soluzione DistanceCalculation tiene traccia degli oggetti tra i fotogrammi e misura in pixel la distanza euclidea tra i centroidi di due riquadri di delimitazione selezionati con il mouse. Esegui l'esempio seguente, quindi fai clic con il pulsante sinistro del mouse su due oggetti per tracciare la linea di collegamento e leggere la distanza; fai clic con il pulsante destro per cancellare la selezione.
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 windowsArgomenti DistanceCalculation()#
Ecco una tabella con gli argomenti DistanceCalculation:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
model | str | None | Percorso al file del modello Ultralytics YOLO. |
line_width | int | 2 | Spessore delle linee per i riquadri, i punti chiave e i conteggi disegnati dalla soluzione. |
verbose | bool | True | Abilita il registro per fotogramma della soluzione, con forma dell'input, conteggi delle classi e velocità di elaborazione. La chiamata di tracciamento è sempre silenziosa. |
Puoi anche utilizzare diversi argomenti di track nella soluzione DistanceCalculation.
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Specifica l'algoritmo di tracciamento da utilizzare. Opzioni integrate: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Imposta la soglia di confidenza per le rilevazioni; valori più bassi consentono di tracciare più oggetti, ma possono includere falsi positivi. |
iou | float | 0.7 | Imposta la soglia di Intersezione sull'unione (IoU) per filtrare le rilevazioni sovrapposte. |
classes | list | None | Filtra i risultati in base all'indice della classe. Ad esempio, classes=[0, 2, 3] traccia solo le classi specificate. |
device | str | None | Specifica il dispositivo per l'inferenza (ad es. cpu, cuda:0 o 0). Consente di scegliere tra CPU, una GPU specifica o altri dispositivi di calcolo per l'esecuzione del modello. |
imgsz | int or tuple | 640 | Dimensione dell'immagine di inferenza di destinazione: un numero intero per un'immagine quadrata o una coppia (height, width). Le forme vengono regolate in base al passo del modello. |
max_det | int | 300 | Numero massimo di rilevamenti conservati per fotogramma prima del tracciamento, limitando gli oggetti elaborati da una soluzione in scene dense. |
quantize | int or str | None | Precisione dell'inferenza: 16 (FP16) o 32/non impostato (FP32) per i modelli PyTorch e TorchScript; altri formati vengono calcolati alla precisione selezionata dal loro artefatto e runtime. Sostituisce il flag deprecato half. |
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 ottenere un feedback visivo immediato durante lo sviluppo o i test. |
show_conf | bool | True | Visualizza il punteggio di confidenza per ogni rilevazione accanto all'etichetta. Fornisce informazioni sul grado di certezza del modello per ogni rilevazione. |
show_labels | bool | True | Visualizza le etichette per ogni rilevazione nell'output visivo. Consente di comprendere immediatamente gli oggetti rilevati. |
Dettagli dell'implementazione#
La classe DistanceCalculation funziona tenendo traccia degli oggetti tra i fotogrammi video e calcolando la distanza euclidea tra i centroidi dei riquadri di delimitazione selezionati. Quando fai clic su due oggetti, la soluzione:
- Estrae i centroidi (punti centrali) dei riquadri di delimitazione selezionati
- Calcola la distanza euclidea tra questi centroidi in pixel
- Visualizza la distanza sul fotogramma con una linea di collegamento tra gli oggetti
L'implementazione utilizza il metodo mouse_event_for_distance per gestire le interazioni con il mouse, consentendo agli utenti di selezionare gli oggetti e cancellare le selezioni secondo necessità. Il metodo process gestisce l'elaborazione fotogramma per fotogramma, il tracciamento degli oggetti e il calcolo delle distanze.
Applicazioni#
Il calcolo della distanza con YOLO26 ha numerose applicazioni pratiche:
- Analisi del commercio al dettaglio: misura la vicinanza dei clienti ai prodotti e analizza l'efficacia della disposizione del negozio
- Sicurezza industriale: monitora le distanze di sicurezza tra lavoratori e macchinari
- Gestione del traffico: analizza la distanza tra i veicoli e rileva il tailgating
- Analisi sportiva: calcola le distanze tra i giocatori, la palla e le posizioni chiave del campo
- Assistenza sanitaria: garantisce il corretto distanziamento nelle aree di attesa e monitora gli spostamenti dei pazienti
- Robotica: consente ai robot di mantenere distanze adeguate da ostacoli e persone
FAQ#
Per calcolare le distanze tra gli oggetti usando Ultralytics YOLO26, devi identificare i centroidi dei riquadri di delimitazione degli oggetti rilevati. Questo processo prevede l'inizializzazione della classe
DistanceCalculationdal modulosolutionsdi Ultralytics e l'utilizzo degli output di tracciamento del modello per calcolare le distanze.Il calcolo della distanza con Ultralytics YOLO26 offre diversi vantaggi:
- Precisione della localizzazione: fornisce un posizionamento spaziale accurato degli oggetti.
- Stima delle dimensioni: aiuta a stimare le dimensioni fisiche, contribuendo a una migliore comprensione del contesto.
- Comprensione della scena: migliora la comprensione delle scene 3D, favorendo decisioni più efficaci in applicazioni come la guida autonoma e la sorveglianza.
- Elaborazione in tempo reale: esegue i calcoli al volo, rendendolo adatto all'analisi video in diretta.
- Capacità di integrazione: funziona perfettamente con altre soluzioni YOLO26, come il tracciamento degli oggetti e la stima della velocità.
Sì, puoi eseguire il calcolo della distanza in streaming video in tempo reale con Ultralytics YOLO26. Il processo prevede l'acquisizione dei fotogrammi video usando OpenCV, l'esecuzione del rilevamento degli oggetti con YOLO26 e l'utilizzo della classe
DistanceCalculationper calcolare le distanze tra gli oggetti nei fotogrammi successivi. Per un'implementazione dettagliata, consulta l'esempio di streaming video.Per eliminare i punti disegnati durante il calcolo della distanza con Ultralytics YOLO26, puoi fare clic con il pulsante destro del mouse. Questa azione cancellerà tutti i punti che hai disegnato. Per maggiori dettagli, consulta la sezione delle note sotto l'esempio di calcolo della distanza.
Gli argomenti principali per inizializzare la classe
DistanceCalculationin Ultralytics YOLO26 includono:model: percorso al file del modello YOLO26.tracker: algoritmo di tracciamento da utilizzare (le soluzioni utilizzano per impostazione predefinitabotsort.yaml).conf: soglia di confidenza per i rilevamenti.show: flag per visualizzare l'output.
Per un elenco completo e i valori predefiniti, consulta gli argomenti di DistanceCalculation.
