Depth Anything V2: un potente modello monoculare per la stima della profondità
Introduzione
Questo articolo discuterà Depth Anything V2, una soluzione pratica per una stima affidabile della profondità monoculare. Il modello Depth Anything mira a creare un modello di base semplice ma potente che funzioni bene con qualsiasi immagine in qualsiasi condizione. Per raggiungere questo obiettivo, il set di dati è stato notevolmente ampliato utilizzando un motore di dati per raccogliere e annotare automaticamente circa 62 milioni di immagini senza etichetta. Questi dati su larga scala aiutano a ridurre gli errori di generalizzazione.
Questo potente modello utilizza due strategie chiave per rendere efficace il ridimensionamento dei dati. Innanzitutto, viene impostato un obiettivo di ottimizzazione più impegnativo utilizzando strumenti di aumento dei dati, che spingono il modello ad apprendere rappresentazioni più solide. In secondo luogo, viene aggiunta una supervisione ausiliaria per aiutare il modello a ereditare una ricca conoscenza semantica da codificatori pre-addestrati. Le capacità di scatto zero del modello sono state ampiamente testate su sei set di dati pubblici e foto casuali, mostrando un’impressionante capacità di generalizzazione.
La messa a punto con le informazioni sulla profondità metrica provenienti da NYUv2 e KITTI ha inoltre stabilito nuovi parametri di riferimento all'avanguardia. Questo modello di profondità migliorato migliora significativamente anche ControlNet condizionato in profondità.
Lavori correlati sulla stima della profondità monoculare (MDE)
I recenti progressi nella stima della profondità monoculare si sono spostati verso la stima della profondità relativa zero-shot e tecniche di modellazione migliorate come la diffusione stabile per la riduzione del rumore della profondità. Lavori come MiDaS e Metric3D hanno raccolto milioni di immagini etichettate, affrontando la sfida del ridimensionamento del set di dati. Depth Anything V1 ha migliorato la robustezza sfruttando 62 milioni di immagini senza etichetta e ha evidenziato i limiti dei dati reali etichettati, sostenendo che i dati sintetici migliorino la precisione della profondità. Questo approccio integra immagini reali pseudo-etichettate su larga scala e amplia i modelli degli insegnanti per affrontare i problemi di generalizzazione a partire dai dati sintetici. Nell’apprendimento semi-supervisionato, l’attenzione si è spostata sulle applicazioni del mondo reale, con l’obiettivo di migliorare le prestazioni incorporando grandi quantità di dati non etichettati. La distillazione della conoscenza in questo contesto enfatizza il trasferimento della conoscenza attraverso la distillazione a livello di previsione utilizzando immagini reali senza etichetta, dimostrando l’importanza di dati senza etichetta su larga scala e di modelli di insegnanti più ampi per un trasferimento efficace della conoscenza su diverse scale di modelli.
Punti di forza del modello
La ricerca mira a costruire un punto di riferimento di valutazione versatile per la stima della profondità monoculare relativa che possa: -
Fornire una relazione di profondità precisa
Copri scene estese
Contiene per lo più immagini ad alta risoluzione per un utilizzo moderno.
Il documento di ricerca mira inoltre a costruire un modello di base per la MDE che abbia i seguenti punti di forza:
- Fornisci previsioni affidabili per scene complesse, inclusi layout complessi, oggetti trasparenti come il vetro e superfici riflettenti come specchi e schermi.
- Cattura i dettagli più fini nelle mappe di profondità previste, paragonabili alla precisione di Marigold, inclusi oggetti sottili come gambe di sedie e piccoli fori.
- Offri una gamma di scale di modelli e funzionalità di inferenza efficienti per supportare varie applicazioni.
- Essere altamente adattabili e adatti al trasferimento dell'apprendimento, consentendo la messa a punto delle attività a valle. Ad esempio, Depth Anything V1 è stato il modello pre-addestrato scelto da tutti i team leader nel 3° MDEC1.
Che cos'è la stima della profondità monoculare (MDE)?
La stima della profondità monoculare è un modo per determinare quanto sono distanti gli oggetti in una foto scattata con una sola fotocamera.
Risultato del confronto dell'immagine originale con V1 e V2 (fonte immagine)
Immagina di guardare una foto e di poter dire quali oggetti ti sono vicini e quali sono lontani. La stima della profondità monoculare utilizza algoritmi informatici per farlo automaticamente. Osserva gli indizi visivi nell'immagine, come la dimensione e la sovrapposizione degli oggetti, per stimarne le distanze.
Questa tecnologia è utile in molti settori, come le auto a guida autonoma, la realtà virtuale e i robot, dove è importante comprendere la profondità degli oggetti nell’ambiente per navigare e interagire in sicurezza.
Le due categorie principali sono:
- Stima della profondità assoluta: questa variante dell'attività, o stima della profondità metrica, mira a fornire misurazioni esatte della profondità dalla fotocamera in metri o piedi. I modelli di stima della profondità assoluta producono mappe di profondità con valori numerici che rappresentano le distanze del mondo reale.
- Stima della profondità relativa: la stima della profondità relativa prevede l'ordine relativo di oggetti o punti in una scena senza fornire misurazioni esatte. Questi modelli producono mappe di profondità che mostrano quali parti della scena sono più vicine o più lontane tra loro senza specificare le distanze in metri o piedi.
Struttura del modello
La pipeline del modello per addestrare il Depth Anything V2 include tre passaggi principali:
- Formazione di un modello per insegnanti basato sul codificatore DINOv2-G su immagini sintetiche di alta qualità.
- Generazione di una pseudo-profondità accurata su immagini reali senza etichetta su larga scala.
- Formazione di un modello studentesco finale sulle immagini reali pseudo-etichettate per una generalizzazione robusta.
Ecco una spiegazione più semplice del processo di formazione per Depth Anything V2:
Innanzitutto, un modello di insegnante esperto viene addestrato utilizzando immagini sintetiche precise. Successivamente, per affrontare il cambiamento della distribuzione e la mancanza di diversità nei dati sintetici, le immagini reali senza etichetta vengono annotate utilizzando il modello dell’insegnante. Infine, i modelli degli studenti vengono addestrati utilizzando immagini pseudo-etichettate di alta qualità generate in questo processo. Fonte immagine
Architettura del modello: Depth Anything V2 utilizza il Dense Prediction Transformer (DPT) come decodificatore di profondità, che è costruito sugli encoder DINOv2. Elaborazione delle immagini: tutte le immagini vengono ridimensionate in modo che il lato più corto sia di 518 pixel, quindi viene effettuato un ritaglio casuale di 518×518. Al fine di standardizzare la dimensione di input per la formazione. Addestramento del modello dell'insegnante: il modello dell'insegnante viene inizialmente addestrato su immagini sintetiche. In questa fase: Dimensione batch: viene utilizzata una dimensione batch pari a 64. Iterazioni: il modello viene addestrato per 160.000 iterazioni. Ottimizzatore: viene utilizzato l'ottimizzatore Adam. Tasso di apprendimento: il tasso di apprendimento per il codificatore è impostato su 5e-6, mentre per il decoder è 5e-5. Formazione su immagini reali pseudo-etichettate: nella terza fase, il modello viene addestrato su immagini reali pseudo-etichettate generate dal modello dell'insegnante. In questa fase: Dimensione batch: viene utilizzata una dimensione batch maggiore di 192. Iterazioni: il modello viene addestrato per 480.000 iterazioni. Ottimizzatore: viene utilizzato lo stesso ottimizzatore Adam. Tassi di apprendimento: i tassi di apprendimento rimangono gli stessi della fase precedente. Gestione dei set di dati: durante entrambe le fasi di addestramento, i set di dati non sono bilanciati ma sono semplicemente concatenati, nel senso che vengono combinati senza alcuna modifica delle loro proporzioni. Pesi delle funzioni di perdita: il rapporto di peso delle funzioni di perdita Lssi (perdita auto-supervisionata) e Lgm (perdita di corrispondenza con la realtà del terreno) è impostato su 1:2. Ciò significa che durante l'allenamento a Lgm viene data un'importanza doppia rispetto a Lssi.
Questo approccio aiuta a garantire che il modello sia robusto e funzioni bene su diversi tipi di immagini.
Per verificare le prestazioni del modello, il modello Depth Anything V2 è stato confrontato con Depth Anything V1 e MiDaS V3.1 utilizzando 5 set di dati di test. Il modello risulta superiore a MiDaS. Tuttavia, leggermente inferiore a V1.
Confronto dei modelli (fonte immagine)
Dimostrazione
Depth Anything offre una soluzione pratica per la stima della profondità monoculare; il modello è stato addestrato su 1,5 milioni di immagini etichettate e oltre 62 milioni senza etichetta.
L'elenco seguente contiene i dettagli del modello per la stima della profondità e i rispettivi tempi di inferenza.
Stima della profondità insieme al tempo di inferenza (fonte immagine)
Per questa dimostrazione, consiglieremo l'uso di una NVIDIA RTX A4000. La NVIDIA RTX A4000 è una scheda grafica professionale ad alte prestazioni progettata per creatori e sviluppatori. L'architettura NVIDIA Ampere presenta 16 GB di memoria GDDR6, 6144 core CUDA, 192 core tensori di terza generazione e 48 core RT. RTX A4000 offre prestazioni eccezionali in flussi di lavoro impegnativi, tra cui rendering 3D, intelligenza artificiale e visualizzazione dei dati, rendendolo la scelta ideale per i professionisti dell'architettura, dei media e della ricerca scientifica.
Eseguiamo il codice seguente per controllare la GPU
!nvidia-smi
Successivamente, clona il repository e importa le librerie necessarie.
from PIL import Image
import requests
!git clone https://github.com/LiheYoung/Depth-Anything
cd Depth-Anything
Installa il file require.txt.
!pip install -r requirements.txt
!python run.py --encoder vitl --img-path /notebooks/Image/image.png --outdir depth_vis
Argomenti:
--img-path
: 1) specifica una directory contenente tutte le immagini desiderate, 2) specifica una singola immagine o 3) specifica un file di testo che elenca tutti i percorsi delle immagini.- L'impostazione
--pred-only
salva solo la mappa di profondità prevista. Senza questa opzione, il comportamento predefinito è visualizzare l'immagine e la mappa di profondità affiancate. - L'impostazione
--grayscale
salva la mappa di profondità in scala di grigi. Senza questa opzione, per impostazione predefinita viene applicata una tavolozza di colori alla mappa di profondità.
Se desideri utilizzare Depth Anything sui video:
!python run_video.py --encoder vitl --video-path assets/examples_video --outdir video_depth_vis
0:00
/0:02
1×
Esegui la demo di Gradio: -
Per eseguire la demo di Gradio localmente: -
!python app.py
Nota: se riscontri KeyError: " Depth_anything ", installa i trasformatori più recenti dal sorgente:
!pip install git+https://github.com/huggingface/transformers.git
Ecco alcuni esempi che dimostrano come abbiamo utilizzato il modello di stima della profondità per analizzare varie immagini.
Caratteristiche del Modello
I modelli offrono una stima affidabile della profondità relativa per qualsiasi immagine, come indicato nelle immagini sopra. Per la stima della profondità metrica, il modello Depth Anything viene ottimizzato utilizzando i dati di profondità metrica di NYUv2 o KITTI, consentendo prestazioni elevate sia in scenari in-domain che zero-shot. I dettagli possono essere trovati qui.
Inoltre, ControlNet condizionato in profondità viene riqualificato sulla base di Depth Anything, offrendo una sintesi più precisa rispetto alla precedente versione basata su MiDaS. Questo nuovo ControlNet può essere utilizzato in ControlNet WebUI o ControlNet di ComfyUI. Il codificatore Depth Anything può anche essere ottimizzato per compiti di percezione di alto livello come la segmentazione semantica, raggiungendo 86,2 milioni di U su paesaggi urbani e 59,4 milioni di U su ADE20K. Maggiori informazioni sono disponibili qui.
Applicazioni del modello Depth Anything
La stima della profondità monoculare ha una gamma di applicazioni, tra cui la ricostruzione 3D, la navigazione e la guida autonoma. Oltre a questi usi tradizionali, le applicazioni moderne stanno esplorando contenuti generati dall’intelligenza artificiale come immagini, video e scene 3D. DepthAnything v2 mira a eccellere nelle metriche chiave delle prestazioni, tra cui l'acquisizione di dettagli fini, la gestione di oggetti trasparenti, la gestione dei riflessi, l'interpretazione di scene complesse, la garanzia di efficienza e la forte trasferibilità tra domini diversi.
Considerazioni conclusive
Depth Anything V2 viene introdotto come modello di base più avanzato per la stima della profondità monoculare. Questo modello si distingue per le sue capacità di fornire una previsione della profondità potente e dettagliata, supportando varie applicazioni. La profondità delle dimensioni del modello varia da 25 milioni a 1,3 miliardi di parametri e funge da base eccellente per la messa a punto delle attività a valle.
Tendenze future
- Integrazione con altre tecnologie di intelligenza artificiale: combinazione di modelli MDE con altre tecnologie di intelligenza artificiale come GAN (Generative Adversarial Networks) e NLP (Natural Language Processing) per applicazioni più avanzate in AR/VR, robotica e sistemi autonomi.
- Spettro di applicazioni più ampio: ampliamento dell'uso della stima della profondità monoculare in aree quali l'imaging medico, la realtà aumentata e i sistemi avanzati di assistenza alla guida (ADAS).
- Stima della profondità in tempo reale: progressi verso il raggiungimento della stima della profondità in tempo reale sui dispositivi periferici, rendendola più accessibile e pratica per le applicazioni quotidiane.
- Generalizzazione interdominio: sviluppo di modelli in grado di generalizzare meglio tra domini diversi senza richiedere una riqualificazione approfondita, migliorandone l'adattabilità e la robustezza.
- Strumenti e interfacce intuitivi: creazione di strumenti e interfacce più intuitivi che consentano ai non esperti di sfruttare potenti modelli MDE per varie applicazioni.
Riferimenti
- Approfondimento Tutto quello che abbraccia il blog di Face
- Documento di ricerca ufficiale Depth Anything V2
- Liberare la potenza dei dati senza etichetta su larga scala
- Profondità Qualsiasi cosa su Github
- Panoramica della NVIDIA RTX A4000