Depth Anything V2: Ein leistungsstarkes, monokulares Tiefenschätzungsmodell
Einführung
In diesem Artikel geht es um Depth Anything V2, eine praktische Lösung für eine robuste monokulare Tiefenschätzung. Das Depth Anything-Modell zielt darauf ab, ein einfaches, aber leistungsstarkes Grundmodell zu erstellen, das mit jedem Bild und unter allen Bedingungen gut funktioniert. Um dies zu erreichen, wurde der Datensatz mithilfe einer Daten-Engine erheblich erweitert, um rund 62 Millionen unbeschriftete Bilder zu sammeln und automatisch zu kommentieren. Diese umfangreichen Daten tragen dazu bei, Generalisierungsfehler zu reduzieren.
Dieses leistungsstarke Modell nutzt zwei Schlüsselstrategien, um die Datenskalierung effektiv zu gestalten. Zunächst wird mithilfe von Datenerweiterungstools ein anspruchsvolleres Optimierungsziel festgelegt, wodurch das Modell dazu gebracht wird, robustere Darstellungen zu lernen. Zweitens wird eine zusätzliche Überwachung hinzugefügt, um dem Modell zu helfen, umfangreiches semantisches Wissen von vorab trainierten Encodern zu erben. Die Zero-Shot-Fähigkeiten des Modells wurden ausführlich anhand von sechs öffentlichen Datensätzen und zufälligen Fotos getestet und zeigten eine beeindruckende Generalisierungsfähigkeit.
Auch die Feinabstimmung mit metrischen Tiefeninformationen von NYUv2 und KITTI hat neue Maßstäbe auf dem neuesten Stand der Technik gesetzt. Dieses verbesserte Tiefenmodell verbessert auch das tiefenkonditionierte ControlNet erheblich.
Verwandte Arbeiten zur monokularen Tiefenschätzung (MDE)
Jüngste Fortschritte bei der monokularen Tiefenschätzung haben sich in Richtung einer Null-Schuss-Relativtiefenschätzung und verbesserten Modellierungstechniken wie stabiler Diffusion zur Tiefenentrauschung verlagert. Werke wie MiDaS und Metric3D haben Millionen beschrifteter Bilder gesammelt und sich damit der Herausforderung der Datensatzskalierung gestellt. Depth Anything V1 verbesserte die Robustheit durch die Nutzung von 62 Millionen unbeschrifteten Bildern und hob die Einschränkungen beschrifteter realer Daten hervor und plädierte für synthetische Daten zur Verbesserung der Tiefenpräzision. Dieser Ansatz integriert großformatige pseudogekennzeichnete reale Bilder und skaliert Lehrermodelle, um Generalisierungsprobleme aus synthetischen Daten zu lösen. Beim halbüberwachten Lernen hat sich der Schwerpunkt auf reale Anwendungen verlagert, mit dem Ziel, die Leistung durch die Einbeziehung großer Mengen unbeschrifteter Daten zu verbessern. Bei der Wissensdestillation wird in diesem Zusammenhang der Wissenstransfer durch Destillation auf Vorhersageebene unter Verwendung unbeschrifteter realer Bilder betont, was die Bedeutung umfangreicher unbeschrifteter Daten und größerer Lehrermodelle für einen effektiven Wissenstransfer über verschiedene Modellskalen hinweg verdeutlicht.
Stärken des Modells
Die Forschung zielt darauf ab, einen vielseitigen Bewertungsmaßstab für die relative monokulare Tiefenschätzung zu erstellen, der Folgendes kann:
Stellen Sie eine präzise Tiefenbeziehung bereit
Decken Sie umfangreiche Szenen ab
Enthält überwiegend hochauflösende Bilder für den modernen Gebrauch.
Das Forschungspapier zielt außerdem darauf ab, ein Grundlagenmodell für MDE zu entwickeln, das die folgenden Stärken aufweist:
- Liefern Sie zuverlässige Vorhersagen für komplexe Szenen, einschließlich komplizierter Layouts, transparenter Objekte wie Glas und reflektierender Oberflächen wie Spiegel und Bildschirme.
- Erfassen Sie feine Details in den vorhergesagten Tiefenkarten, vergleichbar mit der Präzision von Marigold, einschließlich dünner Objekte wie Stuhlbeine und kleine Löcher.
- Bieten Sie eine Reihe von Modellmaßstäben und effiziente Inferenzfunktionen zur Unterstützung verschiedener Anwendungen.
- Seien Sie äußerst anpassungsfähig und für Transferlernen geeignet, um eine Feinabstimmung nachgelagerter Aufgaben zu ermöglichen. Beispielsweise war Depth Anything V1 das vorab trainierte Modell der Wahl für alle führenden Teams im 3. MDEC1.
Was ist die monokulare Tiefenschätzung (MDE)?
Mit der monokularen Tiefenschätzung lässt sich ermitteln, wie weit entfernte Objekte auf einem mit nur einer Kamera aufgenommenen Bild entfernt sind.
Vergleichsergebnis des Originalbildes mit V1 und V2 (Bildquelle)
Stellen Sie sich vor, Sie betrachten ein Foto und können erkennen, welche Objekte sich in Ihrer Nähe und welche in weiter Entfernung befinden. Die monokulare Tiefenschätzung nutzt Computeralgorithmen, um dies automatisch durchzuführen. Es berücksichtigt visuelle Hinweise im Bild, wie die Größe und Überlappung von Objekten, um deren Entfernungen abzuschätzen.
Diese Technologie ist in vielen Bereichen nützlich, beispielsweise bei selbstfahrenden Autos, virtueller Realität und Robotern, wo es wichtig ist, die Tiefe von Objekten in der Umgebung zu verstehen, um sicher navigieren und interagieren zu können.
Die beiden Hauptkategorien sind:
- Absolute Tiefenschätzung: Diese Aufgabenvariante oder metrische Tiefenschätzung zielt darauf ab, genaue Tiefenmessungen der Kamera in Metern oder Fuß zu liefern. Absolute Tiefenschätzungsmodelle erzeugen Tiefenkarten mit numerischen Werten, die reale Entfernungen darstellen.
- Relative Tiefenschätzung: Die relative Tiefenschätzung sagt die relative Reihenfolge von Objekten oder Punkten in einer Szene voraus, ohne genaue Messungen bereitzustellen. Diese Modelle erstellen Tiefenkarten, die zeigen, welche Teile der Szene näher oder weiter voneinander entfernt sind, ohne die Entfernungen in Metern oder Fuß anzugeben.
Modellrahmen
Die Modellpipeline zum Trainieren von Depth Anything V2 umfasst drei Hauptschritte:
- Trainieren eines Lehrermodells, das auf dem DINOv2-G-Encoder basiert, anhand hochwertiger synthetischer Bilder.
- Generieren einer genauen Pseudotiefe für großformatige, unbeschriftete reale Bilder.
- Trainieren eines endgültigen Studentenmodells anhand der pseudogekennzeichneten realen Bilder für eine robuste Verallgemeinerung.
Hier ist eine einfachere Erklärung des Trainingsprozesses für Depth Anything V2:
Zunächst wird ein kompetentes Lehrermodell mithilfe präziser synthetischer Bilder trainiert. Um der Verteilungsverschiebung und der mangelnden Diversität synthetischer Daten entgegenzuwirken, werden als Nächstes unbeschriftete reale Bilder mithilfe des Lehrermodells mit Anmerkungen versehen. Abschließend werden die Schülermodelle mithilfe hochwertiger, pseudogekennzeichneter Bilder trainiert, die in diesem Prozess generiert werden. Bildquelle
Modellarchitektur: Depth Anything V2 verwendet den Dense Prediction Transformer (DPT) als Tiefendecoder, der auf DINOv2-Encodern aufbaut. Bildverarbeitung: Die Größe aller Bilder wird so geändert, dass ihre kürzeste Seite 518 Pixel beträgt, und dann wird ein zufälliger 518×518-Ausschnitt erstellt. Um die Eingabegröße für das Training zu standardisieren. Training des Lehrermodells: Das Lehrermodell wird zunächst anhand synthetischer Bilder trainiert. In dieser Phase: Batch-Größe: Es wird eine Batch-Größe von 64 verwendet. Iterationen: Das Modell ist für 160.000 Iterationen trainiert. Optimierer: Der Adam-Optimierer wird verwendet. Lernraten: Die Lernrate für den Encoder ist auf 5e-6 und für den Decoder auf 5e-5 eingestellt. Training auf pseudo-beschrifteten realen Bildern: In der dritten Stufe wird das Modell auf pseudo-beschrifteten realen Bildern trainiert, die vom Lehrermodell generiert wurden. In dieser Phase: Batch-Größe: Es wird eine größere Batch-Größe von 192 verwendet. Iterationen: Das Modell ist für 480.000 Iterationen trainiert. Optimierer: Es wird derselbe Adam-Optimierer verwendet. Lernraten: Die Lernraten bleiben die gleichen wie in der vorherigen Phase. Datensatzhandhabung: In beiden Trainingsphasen werden die Datensätze nicht ausgeglichen, sondern einfach verkettet, d. h. sie werden ohne Anpassung ihrer Proportionen kombiniert. Verlustfunktionsgewichte: Das Gewichtsverhältnis der Verlustfunktionen Lssi (selbstüberwachter Verlust) und Lgm (Ground Truth Matching Loss) ist auf 1:2 festgelegt. Dies bedeutet, dass Lgm im Vergleich zu Lssi im Training die doppelte Bedeutung beigemessen wird.
Dieser Ansatz trägt dazu bei, sicherzustellen, dass das Modell robust ist und bei verschiedenen Bildtypen eine gute Leistung erbringt.
Um die Modellleistung zu überprüfen, wurde das Modell Depth Anything V2 mit Depth Anything V1 und MiDaS V3.1 unter Verwendung von 5 Testdatensätzen verglichen. Das Modell ist MiDaS überlegen. Allerdings etwas schlechter als V1.
Modellvergleich (Bildquelle)
Demonstration
Depth Anything bietet eine praktische Lösung für die monokulare Tiefenschätzung; Das Modell wurde auf 1,5 Millionen beschrifteten und über 62 Millionen unbeschrifteten Bildern trainiert.
Die folgende Liste enthält Modelldetails für die Tiefenschätzung und ihre jeweiligen Inferenzzeiten.
Tiefenschätzung zusammen mit der Inferenzzeit (Bildquelle)
Für diese Demonstration empfehlen wir die Verwendung einer NVIDIA RTX A4000. Die NVIDIA RTX A4000 ist eine leistungsstarke professionelle Grafikkarte, die für Kreative und Entwickler entwickelt wurde. Die NVIDIA Ampere-Architektur verfügt über 16 GB GDDR6-Speicher, 6144 CUDA-Kerne, 192 Tensor-Kerne der dritten Generation und 48 RT-Kerne. Der RTX A4000 bietet außergewöhnliche Leistung in anspruchsvollen Arbeitsabläufen, einschließlich 3D-Rendering, KI und Datenvisualisierung, was ihn zur idealen Wahl für Architektur-, Medien- und wissenschaftliche Forschungsprofis macht.
Lassen Sie uns den folgenden Code ausführen, um die GPU zu überprüfen
!nvidia-smi
Klonen Sie als Nächstes das Repo und importieren Sie die erforderlichen Bibliotheken.
from PIL import Image
import requests
!git clone https://github.com/LiheYoung/Depth-Anything
cd Depth-Anything
Installieren Sie die Datei „requirements.txt“.
!pip install -r requirements.txt
!python run.py --encoder vitl --img-path /notebooks/Image/image.png --outdir depth_vis
Argumente:
--img-path
: 1) geben Sie ein Verzeichnis an, das alle gewünschten Bilder enthält, 2) geben Sie ein einzelnes Bild an oder 3) geben Sie eine Textdatei an, die alle Bildpfade auflistet.- Wenn Sie
--pred-only
festlegen, wird nur die vorhergesagte Tiefenkarte gespeichert. Ohne diese Option besteht das Standardverhalten darin, das Bild und die Tiefenkarte nebeneinander anzuzeigen. - Wenn Sie
--grayscale
festlegen, wird die Tiefenkarte in Graustufen gespeichert. Ohne diese Option wird standardmäßig eine Farbpalette auf die Tiefenkarte angewendet.
Wenn Sie Depth Anything für Videos verwenden möchten:
!python run_video.py --encoder vitl --video-path assets/examples_video --outdir video_depth_vis
0:00
/0:02
1×
Führen Sie die Gradio-Demo aus: –
So führen Sie die Gradio-Demo lokal aus: –
!python app.py
Hinweis: Wenn Sie auf KeyError: „ Depth_anything“ stoßen, installieren Sie bitte die neuesten Transformer aus der Quelle:
!pip install git+https://github.com/huggingface/transformers.git
Hier sind einige Beispiele, die zeigen, wie wir das Tiefenschätzungsmodell zur Analyse verschiedener Bilder verwendet haben.
Merkmale des Modells
Die Modelle bieten eine zuverlässige relative Tiefenschätzung für jedes Bild, wie in den obigen Bildern gezeigt. Für die metrische Tiefenschätzung wird das Depth Anything-Modell mithilfe der metrischen Tiefendaten von NYUv2 oder KITTI verfeinert, was eine starke Leistung sowohl in domäneninternen als auch in Zero-Shot-Szenarien ermöglicht. Einzelheiten finden Sie hier.
Darüber hinaus wird das tiefenkonditionierte ControlNet auf Basis von Depth Anything neu trainiert und bietet so eine präzisere Synthese als die vorherige MiDaS-basierte Version. Dieses neue ControlNet kann in ControlNet WebUI oder ComfyUIs ControlNet verwendet werden. Der Depth Anything-Encoder kann auch für anspruchsvolle Wahrnehmungsaufgaben wie die semantische Segmentierung feinabgestimmt werden und erreicht 86,2 Mio. IoU bei Stadtansichten und 59,4 Mio. IoU bei ADE20K. Weitere Informationen finden Sie hier.
Anwendungen des Depth Anything-Modells
Die monokulare Tiefenschätzung hat eine Reihe von Anwendungen, darunter 3D-Rekonstruktion, Navigation und autonomes Fahren. Zusätzlich zu diesen traditionellen Verwendungszwecken erforschen moderne Anwendungen KI-generierte Inhalte wie Bilder, Videos und 3D-Szenen. DepthAnything v2 zielt darauf ab, sich bei wichtigen Leistungskennzahlen hervorzuheben, einschließlich der Erfassung feiner Details, der Handhabung transparenter Objekte, der Verwaltung von Reflexionen, der Interpretation komplexer Szenen, der Gewährleistung von Effizienz und der Bereitstellung einer starken Übertragbarkeit über verschiedene Domänen hinweg.
Abschließende Gedanken
Depth Anything V2 wird als fortschrittlicheres Basismodell für die monokulare Tiefenschätzung eingeführt. Dieses Modell zeichnet sich durch seine Fähigkeit aus, leistungsstarke und feinkörnige Tiefenvorhersagen bereitzustellen und verschiedene Anwendungen zu unterstützen. Die Tiefe aller Modellgrößen reicht von 25 Millionen bis 1,3 Milliarden Parametern und dient als hervorragende Basis für die Feinabstimmung nachgelagerter Aufgaben.
Zukünftige Trends
- Integration mit anderen KI-Technologien: Kombination von MDE-Modellen mit anderen KI-Technologien wie GANs (Generative Adversarial Networks) und NLP (Natural Language Processing) für fortgeschrittenere Anwendungen in AR/VR, Robotik und autonomen Systemen.
- Breiteres Anwendungsspektrum: Ausweitung des Einsatzes der monokularen Tiefenschätzung in Bereichen wie medizinische Bildgebung, Augmented Reality und fortschrittliche Fahrerassistenzsysteme (ADAS).
- Echtzeit-Tiefenschätzung: Fortschritte bei der Erzielung einer Echtzeit-Tiefenschätzung auf Edge-Geräten, wodurch diese für alltägliche Anwendungen zugänglicher und praktischer wird.
- Domänenübergreifende Generalisierung: Entwicklung von Modellen, die sich besser über verschiedene Domänen hinweg verallgemeinern lassen, ohne dass umfangreiche Umschulungen erforderlich sind, wodurch ihre Anpassungsfähigkeit und Robustheit verbessert wird.
- Benutzerfreundliche Tools und Schnittstellen: Erstellen benutzerfreundlicherer Tools und Schnittstellen, die es Laien ermöglichen, leistungsstarke MDE-Modelle für verschiedene Anwendungen zu nutzen.
Referenzen
- Depth Anything Hugging Face-Blog
- Offizielles Forschungspapier von Depth Anything V2
- Entfesseln Sie die Kraft großer, unbeschrifteter Daten
- Tiefe Alles Github
- NVIDIA RTX A4000 Übersicht