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 critico nella computer vision che determina la distanza degli oggetti da una fotocamera, aggiungendo efficacemente una terza dimensione alle immagini 2D. Calcolando la distanza di ogni pixel in un'immagine, questa tecnica crea una depth map, una rappresentazione in cui l'intensità del pixel corrisponde alla distanza. Questa capacità imita la binocular vision 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 il proprio ambiente e interagire con oggetti fisici.
Link to this sectionMeccanismi 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: Simile agli occhi umani, la stereo vision utilizza due fotocamere posizionate fianco a fianco. Gli algoritmi analizzano le lievi differenze, o disparità, tra le immagini sinistra e destra per triangolare la distanza. Questo si basa fortemente su un feature matching 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 deep learning models vengono addestrati su vasti dataset per riconoscere indizi visivi come prospettiva, dimensioni dell'oggetto e occlusione. Le architetture moderne, come le convolutional neural networks (CNNs), eccellono in questo compito, rendendo possibile derivare una struttura 3D da fotocamere standard.
- LiDAR e Time-of-Flight (ToF): Sensori attivi come LiDAR (Light Detection and Ranging) e Time-of-Flight cameras emettono impulsi di luce e misurano il tempo che impiegano a tornare. Questi metodi generano point clouds altamente accurati e sono spesso utilizzati per raccogliere dati di ground truth per l'addestramento di modelli di machine learning.
Link to this sectionApplicazioni 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 ostacoli, misurare la distanza da altri veicoli e navigare in sicurezza in reti stradali complesse. È parte integrante del 3D object detection per l'identificazione di pedoni e ciclisti.
- Robotica e automazione: I robot utilizzano la percezione della profondità per compiti come il path planning e la manipolazione di oggetti. Ad esempio, un robot di magazzino deve sapere esattamente quanto è lontano 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.
Link to this sectionEsempio di codice: stima della profondità monoculare#
Sebbene esistano modelli di profondità specializzati, spesso puoi inferire le relazioni spaziali utilizzando i bounding box del rilevamento oggetti come proxy per la distanza in scenari semplici (box più grandi spesso indicano oggetti più vicini). Ecco come caricare un modello utilizzando il pacchetto ultralytics per rilevare oggetti, che è il primo passo in molte pipeline consapevoli della 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}")Link to this sectionRelazione con altri concetti di computer vision#
È importante distinguere la stima della profondità da termini correlati. Mentre l'object detection identifica cosa e dove si trova un oggetto nello spazio 2D (usando un bounding box), la stima della profondità identifica quanto è lontano (asse Z). Allo stesso modo, la semantic segmentation classifica i pixel in categorie (ad esempio, strada, cielo, auto), mentre la stima della profondità assegna un valore di distanza a quegli stessi pixel.
Link to this sectionProgressi nella Spatial AI#
I recenti progressi nella generative AI 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, basandosi fortemente sui principi di profondità sottostanti. Inoltre, man mano che le tecniche di model optimization migliorano, l'esecuzione di una stima della profondità altamente accurata su edge AI devices sta diventando fattibile. Ciò consente il calcolo spaziale in tempo reale su hardware piccoli come droni o occhiali intelligenti, facilitato da piattaforme come la Ultralytics Platform per l'addestramento e il deployment efficiente dei modelli.






