Depth Estimation
Scopri 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 visione artificiale che determina la distanza degli oggetti da una telecamera, aggiungendo di fatto una terza dimensione alle immagini 2D. Calcolando la distanza di ogni pixel in un'immagine, questa tecnica crea una mappa di profondità, una rappresentazione in cui l'intensità dei 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 permettere ai sistemi autonomi di orientarsi in sicurezza, comprendere l'ambiente circostante e interagire con gli oggetti fisici.
Meccanismi e tecniche fondamentali#
Esistono diversi modi per ottenere la stima della profondità, dalle soluzioni basate sull'hardware agli approcci puramente software che utilizzano l'intelligenza artificiale.
- Sistemi di visione stereo: come gli occhi umani, la visione stereo utilizza due telecamere posizionate una accanto all'altra. Gli algoritmi analizzano le lievi differenze, o disparità, tra le immagini di sinistra e di destra per triangolare la distanza. Questo si basa in larga misura su un'accurata corrispondenza delle caratteristiche per identificare gli stessi punti in entrambi i fotogrammi.
- Stima monoculare della profondità: questo metodo avanzato stima la profondità da una singola immagine. Poiché una singola foto 2D non contiene dati intrinseci sulla profondità, i modelli di deep learning vengono addestrati su enormi dataset per riconoscere indizi visivi come prospettiva, dimensioni degli oggetti e occlusione. Le architetture moderne, come le reti neurali convoluzionali (CNN), eccellono in questo compito, rendendo possibile derivare una struttura 3D da telecamere standard.
- LiDAR e tempo di volo (ToF): i sensori attivi come LiDAR (rilevamento e misurazione della distanza tramite luce) e le telecamere a tempo di volo emettono impulsi luminosi e misurano il tempo necessario per il loro ritorno. Questi metodi generano nuvole di punti altamente accurate e vengono spesso utilizzati per raccogliere dati di riferimento per l'addestramento dei modelli di machine learning.
Applicazioni nel mondo reale#
La capacità di misurare la distanza è trasformativa in molti settori e alimenta 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 percorrere in sicurezza reti stradali complesse. È fondamentale per il rilevamento degli oggetti 3D, necessario per identificare 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 di magazzino deve sapere esattamente quanto è distante uno scaffale per prelevare un pacco senza urtarlo.
- Realtà aumentata (AR): per inserire in modo convincente oggetti virtuali in una scena del mondo reale, i dispositivi AR devono comprendere la geometria 3D dell'ambiente. La stima della profondità garantisce che i personaggi virtuali possano nascondersi dietro i mobili reali, un concetto noto come gestione dell'occlusione.
Esempio di codice: stima monoculare della profondità#
Sebbene esistano modelli di profondità specializzati, spesso è possibile dedurre le relazioni spaziali utilizzando i riquadri di delimitazione del rilevamento degli oggetti come approssimazione della distanza in scenari semplici (i riquadri più grandi spesso indicano oggetti più vicini). Ecco come caricare un modello utilizzando il pacchetto ultralytics per rilevare gli oggetti, il primo passaggio di molte pipeline sensibili alla 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 della visione artificiale#
È importante distinguere la stima della profondità dai termini correlati. Mentre il rilevamento degli oggetti identifica che cosa e dove si trova un oggetto nello spazio 2D (utilizzando un riquadro di delimitazione), la stima della profondità identifica quanto è lontano (asse Z). Analogamente, 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 nell'IA spaziale#
I recenti progressi nell'IA generativa stanno colmando il divario tra la visione 2D e quella 3D. Tecniche come i campi di radianza neurale (NeRF) utilizzano più immagini 2D per ricostruire scene 3D complesse, basandosi fortemente sui principi fondamentali della profondità. Inoltre, con il miglioramento delle tecniche di ottimizzazione dei modelli, diventa sempre più fattibile eseguire stime della profondità altamente accurate su dispositivi di IA edge. Ciò consente il calcolo spaziale in tempo reale su hardware grande quanto quello di droni o occhiali intelligenti, grazie a piattaforme come la Ultralytics Platform per l'addestramento e la distribuzione efficienti dei modelli.









