Lihe Yang 1 · Bingyi Kang 2† · Zilong Huang 2
Zhen Zhao · Xiaogang Xu · Jiashi Feng 2 · Hengshuang Zhao 1*
1 HKU 2 TikTok
†Projektleiter *korrespondierender Autor
Diese Arbeit präsentiert Depth Anything V2. Es übertrifft V1 deutlich in Bezug auf feinkörnige Details und Robustheit. Im Vergleich zu SD-basierten Modellen zeichnet es sich durch eine schnellere Inferenzgeschwindigkeit, weniger Parameter und eine höhere Tiefengenauigkeit aus.
06.07.2024: Depth Anything V2 wird in Transformers unterstützt. Sehen Sie sich die Anweisungen zur bequemen Verwendung an.
25.06.2024: Depth Anything ist in Apple Core ML-Modelle integriert. Zur Verwendung siehe Gebrauchsanweisung (V1, V2).
22.06.2024: Wir veröffentlichen kleinere metrische Tiefenmodelle basierend auf Depth-Anything-V2-Small und Base.
20.06.2024: Unser Repository und unsere Projektseite werden von GitHub gekennzeichnet und für 6 Tage aus der Öffentlichkeit entfernt. Entschuldigen Sie die Unannehmlichkeiten.
14.06.2024: Papier, Projektseite, Code, Modelle, Demo und Benchmark werden veröffentlicht.
Wir bieten vier Modelle mit unterschiedlichen Maßstäben für eine robuste relative Tiefenschätzung:
Modell | Parameter | Kontrollpunkt |
---|---|---|
Depth-Anything-V2-Small | 24,8 Mio | Herunterladen |
Depth-Anything-V2-Base | 97,5 Mio | Herunterladen |
Depth-Anything-V2-Large | 335,3 Mio | Herunterladen |
Depth-Anything-V2-Giant | 1,3B | Kommt bald |
Git-Klon https://github.com/DepthAnything/Depth-Anything-V2cd Depth-Anything-V2 pip install -r Anforderungen.txt
Laden Sie die hier aufgeführten Checkpoints herunter und legen Sie sie im checkpoints
Verzeichnis ab.
import cv2import Torchfrom Depth_anything_v2.dpt Import DepthAnythingV2DEVICE = 'cuda' if Torch.cuda.is_available() else 'mps' if Torch.backends.mps.is_available() else 'cpu'model_configs = {'vits': {'encoder': 'vits', 'features': 64, 'out_channels': [48, 96, 192, 384]},'vitb': {'encoder': 'vitb', 'features': 128, 'out_channels': [96, 192, 384, 768]},'vitl': {'encoder': ' vitl', 'features': 256, 'out_channels': [256, 512, 1024, 1024]},'vitg': {'encoder': 'vitg', 'features': 384, 'out_channels': [1536, 1536, 1536, 1536]} }encoder = 'vitl' # or 'vits', 'vitb', 'vitg'model = DepthAnythingV2(**model_configs[encoder])model.load_state_dict(torch.load(f'checkpoints/ Depth_anything_v2_{encoder}.pth', map_location='cpu'))model = model.to(DEVICE).eval()raw_img = cv2.imread('your/image/path') Depth = model.infer_image(raw_img) # Rohe HxW-Tiefenkarte in Numpy
Wenn Sie dieses Repository nicht klonen möchten, können Sie unsere Modelle auch über Transformers laden. Unten finden Sie einen einfachen Codeausschnitt. Weitere Informationen finden Sie auf der offiziellen Seite.
Hinweis 1: Stellen Sie sicher, dass Sie eine Verbindung zu Hugging Face herstellen können und die neuesten Transformers installiert haben.
Hinweis 2: Aufgrund des Upsampling-Unterschieds zwischen OpenCV (von uns verwendet) und Pillow (von HF verwendet) können die Vorhersagen geringfügig abweichen. Es wird daher eher empfohlen, unsere Modelle auf die oben beschriebene Weise zu verwenden.
from Transformers Import Pipelinefrom PIL Import Imagepipe = Pipeline(task=" Depth-estimation", Model=" Depth-Anything/Depth-Anything-V2-Small-hf")image = Image.open('your/image/path') Tiefe = Rohr(Bild)["Tiefe"]
Python run.py --encoder <vits | vitb | vitl | vitg> --img-path <Pfad> --outdir <outdir> [--input-size <Größe>] [--pred-only] [--grayscale]
Optionen:
--img-path
: Sie können entweder 1) auf ein Bildverzeichnis verweisen, in dem alle gewünschten Bilder gespeichert sind, 2) auf ein einzelnes Bild verweisen oder 3) auf eine Textdatei verweisen, in der alle Bildpfade gespeichert sind.
--input-size
(optional): Standardmäßig verwenden wir die Eingabegröße 518
für die Modellinferenz. Sie können die Größe erhöhen, um noch feinere Ergebnisse zu erzielen.
--pred-only
(optional): Nur die vorhergesagte Tiefenkarte speichern, ohne Rohbild.
--grayscale
(optional): Speichern Sie die Graustufen-Tiefenkarte, ohne eine Farbpalette anzuwenden.
Zum Beispiel:
python run.py --encoder vitl --img-path asset/examples --outdir Depth_vis
python run_video.py --encoder <vits | vitb | vitl | vitg> --video-path asset/examples_video --outdir video_ Depth_vis [--input-size <Größe>] [--pred-only] [--grayscale]
Unser größeres Modell bietet eine bessere zeitliche Konsistenz bei Videos.
So nutzen Sie unsere Gradio-Demo vor Ort:
Python app.py
Sie können auch unsere Online-Demo ausprobieren.
Hinweis: Im Vergleich zu V1 haben wir eine geringfügige Änderung an der DINOv2-DPT-Architektur vorgenommen (die auf dieses Problem zurückzuführen ist). In V1 haben wir unbeabsichtigt Features aus den letzten vier Schichten von DINOv2 zur Dekodierung verwendet. In V2 verwenden wir stattdessen Zwischenfunktionen. Obwohl diese Änderung weder die Details noch die Genauigkeit verbesserte, haben wir uns entschieden, dieser gängigen Praxis zu folgen.
Bitte beachten Sie die metrische Tiefenschätzung.
Bitte beachten Sie den DA-2K-Benchmark.
Wir freuen uns sehr über die Unterstützung der Community für unsere Depth Anything-Serie. Vielen Dank!
Apple Core ML:
https://developer.apple.com/machine-learning/models
https://huggingface.co/apple/coreml- Depth-anything-v2-small
https://huggingface.co/apple/coreml- Depth-anything-small
Transformatoren:
https://huggingface.co/docs/transformers/main/en/model_doc/ Depth_anything_v2
https://huggingface.co/docs/transformers/main/en/model_doc/ Depth_anything
TensorRT:
https://github.com/spacewalk01/ Depth-anything-tensorrt
https://github.com/zhujiajian98/Depth-Anythingv2-TensorRT-python
ONNX: https://github.com/fabio-sim/Depth-Anything-ONNX
ComfyUI: https://github.com/kijai/ComfyUI-DepthAnythingV2
Transformers.js (Echtzeittiefe im Web): https://huggingface.co/spaces/Xenova/webgpu-realtime- Depth-estimation
Android:
https://github.com/shubham0204/Depth-Anything-Android
https://github.com/FeiGeChuanShu/ncnn-android- Depth_anything
Wir sind dem großartigen Hugging Face-Team (@Pedro Cuenca, @Niels Rogge, @Merve Noyan, @Amy Roberts, et al.) aufrichtig dankbar für ihren großen Einsatz bei der Unterstützung unserer Modelle in Transformers und Apple Core ML.
Wir danken auch dem DINOv2-Team dafür, dass es so beeindruckende Modelle zu unserer Community beigetragen hat.
Das Modell Depth-Anything-V2-Small steht unter der Apache-2.0-Lizenz. Die Modelle Depth-Anything-V2-Base/Large/Giant unterliegen der CC-BY-NC-4.0-Lizenz.
Wenn Sie dieses Projekt nützlich finden, denken Sie bitte darüber nach, Folgendes zu zitieren:
@article{Tiefe_Anything_v2, Titel={Depth Anything V2}, Autor={Yang, Lihe und Kang, Bingyi und Huang, Zilong und Zhao, Zhen und Xu, Xiaogang und Feng, Jiashi und Zhao, Hengshuang}, Zeitschrift={arXiv: 2406.09414}, Jahr={2024}}@inproceedings{ Depth_anything_v1, title={Depth Anything: Die Kraft großer unbeschrifteter Daten entfesseln}, Autor={Yang, Lihe und Kang, Bingyi und Huang, Zilong und Xu, Xiaogang und Feng, Jiashi und Zhao, Hengshuang}, Buchtitel={CVPR}, Jahr={2024}}