Depth Estimation
Impara come la stima della profondità aggiunge una prospettiva 3D alla Computer Vision. Esplora tecniche come la profondità monoculare e la visione stereo usando i modelli Ultralytics YOLO26.
La stima della profondità è un processo fondamentale nella computer vision che determina la distanza degli oggetti da una telecamera, aggiungendo di fatto una terza dimensione alle immagini 2D. Calcolando la distanza di ogni singolo pixel in un'immagine, questa tecnica crea una mappa di profondità, una rappresentazione in cui l'intensità del pixel corrisponde alla distanza. Questa capacità imita la visione binoculare umana, consentendo alle macchine di percepire le relazioni spaziali e la geometria. È una tecnologia fondamentale per consentire ai sistemi autonomi di navigare in sicurezza, comprendere l'ambiente circostante e interagire con gli oggetti fisici.
Meccanismi e tecniche principali#
Esistono diversi modi per ottenere la stima della profondità, che spaziano da soluzioni basate su hardware ad approcci puramente software che utilizzano l'intelligenza artificiale.
- Sistemi di visione stereo: Analogamente agli occhi umani, la visione stereo utilizza due telecamere affiancate. Gli algoritmi analizzano le lievi differenze, o disparità, tra l'immagine sinistra e quella destra per triangolare la distanza. Questo processo si basa fortemente su un abbinamento di caratteristiche accurato per identificare gli stessi punti in entrambi i fotogrammi.
- Stima della profondità monoculare: Questo metodo avanzato stima la profondità da una singola immagine. Poiché una singola foto 2D manca di dati di profondità intrinseci, i modelli di deep learning vengono addestrati su enormi dataset per riconoscere indizi visivi come la prospettiva, le dimensioni degli oggetti e l'occlusione. Le architetture moderne, come le reti neurali convoluzionali (CNN), eccellono in questo compito, rendendo possibile derivare la struttura 3D da telecamere standard.
- LiDAR e Time-of-Flight (ToF): Sensori attivi come il LiDAR (Light Detection and Ranging) e le telecamere Time-of-Flight emettono impulsi di luce e misurano il tempo necessario per il loro ritorno. Questi metodi generano nuvole di punti estremamente accurate e vengono spesso utilizzati per raccogliere dati di ground truth per l'addestramento dei modelli di machine learning.
Applicazioni nel mondo reale#
La capacità di misurare la distanza è trasformativa in molti settori, alimentando applicazioni che richiedono consapevolezza spaziale.
- Guida autonoma: Le auto a guida autonoma si affidano alla stima della profondità per rilevare gli ostacoli, misurare la distanza dagli altri veicoli e navigare in sicurezza in reti stradali complesse. È parte integrante del rilevamento di oggetti 3D per l'identificazione di pedoni e ciclisti.
- Robotica e automazione: I robot utilizzano la percezione della profondità per attività come la pianificazione dei percorsi e la manipolazione degli oggetti. Ad esempio, un robot da magazzino deve conoscere esattamente la distanza di uno scaffale per prelevare un pacco senza scontrarsi con esso.
- Realtà aumentata (AR): Per posizionare oggetti virtuali in modo convincente in una scena del mondo reale, i dispositivi AR devono comprendere la geometria 3D dell'ambiente. La stima della profondità assicura che i personaggi virtuali possano nascondersi dietro mobili reali, un concetto noto come gestione dell'occlusione.
Esempio di codice: stima della profondità monoculare#
Sebbene esistano modelli di profondità specializzati, spesso puoi inferire le relazioni spaziali utilizzando i riquadri di delimitazione (bounding box) del rilevamento di oggetti come approssimazione della distanza in scenari semplici (riquadri più grandi spesso significano oggetti più vicini). Ecco come caricare un modello utilizzando il pacchetto ultralytics per rilevare oggetti, che rappresenta il primo passo in molti flussi di lavoro basati sulla profondità.
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("path/to/image.jpg")
# Process results
for result in results:
# Get bounding boxes (xyxy format)
boxes = result.boxes.xyxy
# Iterate through detections
for box in boxes:
print(f"Detected object at: {box}")Relazione con altri concetti di computer vision#
È importante distinguere la stima della profondità dai termini correlati. Mentre il rilevamento di oggetti identifica cosa e dove si trova un oggetto nello spazio 2D (utilizzando un bounding box), la stima della profondità identifica quanto è lontano (asse Z). Allo stesso modo, la segmentazione semantica classifica i pixel in categorie (ad esempio, strada, cielo, auto), mentre la stima della profondità assegna un valore di distanza a quegli stessi pixel.
Progressi nella Spatial AI#
I recenti progressi nell'intelligenza artificiale generativa stanno colmando il divario tra la visione 2D e 3D. Tecniche come i Neural Radiance Fields (NeRF) utilizzano più immagini 2D per ricostruire scene 3D complesse, affidandosi fortemente ai principi di profondità sottostanti. Inoltre, con il miglioramento delle tecniche di ottimizzazione dei modelli, l'esecuzione di stime della profondità estremamente accurate su dispositivi edge AI sta diventando fattibile. Ciò consente l'edge computing spaziale in tempo reale su hardware piccoli come droni o occhiali smart, facilitato da piattaforme come la Ultralytics Platform per l'addestramento e il deployment efficienti dei modelli.






