Ultralytics YOLO27:
Get Started

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.



Guarda: Come stimare in pixel la distanza tra oggetti rilevati con Ultralytics YOLO 🚀

Elementi visivi#

Calcolo della distanza con Ultralytics YOLO26
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 prendere 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 gli 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 del tutto accurata perché viene calcolata usando dati 2D, privi di informazioni sulla profondità.

Calcola le distanze con YOLO26#

La soluzione DistanceCalculation traccia gli 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 qui sotto, poi fai clic con il pulsante sinistro su due oggetti per tracciare la linea che li collega e visualizzare la distanza; fai clic con il pulsante destro per cancellare la selezione.

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"

# Scrittore video
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))

# Inizializza l'oggetto per il calcolo della distanza
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # percorso del file del modello YOLO26.
    show=True,  # visualizza l'output
)

# Elabora il 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)  # accedi all'output

    video_writer.write(results.plot_im)  # scrivi il fotogramma elaborato.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # chiudi tutte le finestre aperte

Argomenti di DistanceCalculation()#

Ecco una tabella con gli argomenti di DistanceCalculation:

ArgomentoTipoPredefinitoDescrizione
modelstrNonePercorso a un file modello Ultralytics YOLO.
line_widthint2Spessore delle linee dei riquadri, dei punti chiave e dei conteggi disegnati dalla soluzione.
verboseboolTrueAbilita il log per frame della soluzione, con forma dell'input, conteggi per classe e velocità di elaborazione. La chiamata di tracking è sempre silenziosa.

Puoi anche utilizzare diversi argomenti di track nella soluzione DistanceCalculation.

ArgomentoTipoPredefinitoDescrizione
trackerstr'tracktrack.yaml'Specifica l'algoritmo di tracciamento da usare. Opzioni integrate: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25Imposta la soglia di confidenza per le rilevazioni; valori più bassi consentono di tracciare più oggetti, ma possono includere falsi positivi.
ioufloat0.7Imposta la soglia di Intersezione sull'unione (IoU) per filtrare le rilevazioni sovrapposte.
classeslistNoneFiltra i risultati in base all'indice della classe. Ad esempio, classes=[0, 2, 3] traccia solo le classi specificate.
devicestrNoneSpecifica 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.
imgszint or tuple640Dimensione dell'immagine di destinazione per l'inferenza: un intero per un'immagine quadrata o una coppia (height, width). Le forme vengono adattate allo stride del modello.
max_detint300Numero massimo di rilevazioni da mantenere per fotogramma prima del tracciamento, che limita gli oggetti elaborati da una soluzione nelle scene dense.
quantizeint or strNonePrecisione dell’inferenza: 16 (FP16) oppure 32/unset (FP32) per i modelli PyTorch e TorchScript quando non si usa la CPU; gli altri formati usano la precisione selezionata dal rispettivo artefatto e ambiente di esecuzione. Sostituisce l’argomento deprecato half.

Sono inoltre disponibili i seguenti argomenti di visualizzazione:

ArgomentoTipoPredefinitoDescrizione
showboolFalseSe True, mostra le immagini o i video annotati in una finestra. Utile per ottenere un riscontro visivo immediato durante lo sviluppo o i test.
show_confboolTrueMostra il punteggio di confidenza di ogni rilevamento accanto all'etichetta. Fornisce indicazioni sul grado di certezza del modello per ciascun rilevamento.
show_labelsboolTrueMostra le etichette di ogni rilevamento nell'output visivo. Permette di identificare immediatamente gli oggetti rilevati.

Dettagli dell'implementazione#

La classe DistanceCalculation funziona tracciando gli 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:

  1. Estrae i centroidi (punti centrali) dei riquadri di delimitazione selezionati
  2. Calcola in pixel la distanza euclidea tra questi centroidi
  3. Visualizza la distanza sul fotogramma, con una linea che collega gli oggetti

L'implementazione usa 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 della vendita 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 chi segue troppo da vicino
  • Analisi sportiva: calcola le distanze tra i giocatori, la palla e i punti chiave del campo
  • Assistenza sanitaria: garantisce il mantenimento di una distanza adeguata nelle sale d'attesa e monitora gli spostamenti dei pazienti
  • Robotica: consente ai robot di mantenere distanze adeguate da ostacoli e persone

Domande frequenti#

  • Per calcolare le distanze tra oggetti usando Ultralytics YOLO26, devi individuare i centroidi dei riquadri di delimitazione degli oggetti rilevati. Il processo prevede l'inizializzazione della classe DistanceCalculation dal modulo solutions di Ultralytics e l'uso 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 e favorisce decisioni più efficaci in applicazioni come la guida autonoma e la sorveglianza.
    • Elaborazione in tempo reale: esegue i calcoli al volo, risultando adatta all'analisi di video in diretta.
    • Funzionalità di integrazione: funziona perfettamente con altre soluzioni YOLO26, come il tracciamento degli oggetti e la stima della velocità.
  • Sì, puoi calcolare le distanze nei flussi video in tempo reale con Ultralytics YOLO26. Il processo prevede l'acquisizione dei fotogrammi video con OpenCV, l'esecuzione del rilevamento degli oggetti con YOLO26 e l'uso della classe DistanceCalculation per calcolare le distanze tra gli oggetti nei fotogrammi successivi. Per un'implementazione dettagliata, consulta l'esempio di flusso 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 cancella tutti i punti che hai disegnato. Per ulteriori dettagli, consulta la sezione delle note nell'esempio di calcolo della distanza.

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

    • model: percorso del file del modello YOLO26.
    • tracker: algoritmo di tracciamento da usare (per impostazione predefinita, Solutions usa tracktrack.yaml).
    • conf: soglia di confidenza per i rilevamenti.
    • show: flag per visualizzare l'output.

    Per l'elenco completo e i valori predefiniti, consulta gli argomenti di DistanceCalculation.

Commenti