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 |
---|
![]() |
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:
- Estrae i centroidi (punti centrali) dei bounding box selezionati
- Calcola la distanza euclidea tra questi centroidi in pixel
- 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.