Lihe Yang 1 · Bingyi Kang 2† · Zilong Huang 2
Zhen Zhao · Xiaogang Xu · Jiashi Feng 2 · Hengshuang Zhao 1*
1 HKU 2 TikTok
†pemimpin proyek *penulis yang sesuai
Karya ini menghadirkan Depth Anything V2. Ini secara signifikan mengungguli V1 dalam detail dan kekokohan yang halus. Dibandingkan dengan model berbasis SD, model ini memiliki kecepatan inferensi yang lebih cepat, parameter yang lebih sedikit, dan akurasi kedalaman yang lebih tinggi.
Kami menyediakan empat model skala berbeda untuk estimasi kedalaman relatif yang kuat:
Model | Param | Pos pemeriksaan |
---|---|---|
Kedalaman-Apa Saja-V2-Kecil | 24,8 juta | Unduh |
Kedalaman-Apa Saja-V2-Basis | 97,5 juta | Unduh |
Kedalaman-Apa Saja-V2-Besar | 335,3M | Unduh |
Kedalaman-Apa Pun-V2-Raksasa | 1.3B | Segera hadir |
git clone https://github.com/DepthAnything/Depth-Anything-V2
cd Depth-Anything-V2
pip install -r requirements.txt
Unduh pos pemeriksaan yang tercantum di sini dan letakkan di bawah direktori checkpoints
.
import cv2
import torch
from depth_anything_v2 . dpt import DepthAnythingV2
DEVICE = '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 ) # HxW raw depth map in numpy
Jika Anda tidak ingin mengkloning repositori ini, Anda juga dapat memuat model kami melalui Transformers. Di bawah ini adalah cuplikan kode sederhana. Silakan merujuk ke halaman resmi untuk lebih jelasnya.
from transformers import pipeline
from PIL import Image
pipe = pipeline ( task = "depth-estimation" , model = "depth-anything/Depth-Anything-V2-Small-hf" )
image = Image . open ( 'your/image/path' )
depth = pipe ( image )[ "depth" ]
python run.py
--encoder < vits | vitb | vitl | vitg >
--img-path < path > --outdir < outdir >
[--input-size < size > ] [--pred-only] [--grayscale]
Pilihan:
--img-path
: Anda dapat 1) mengarahkannya ke direktori gambar yang menyimpan semua gambar yang diinginkan, 2) mengarahkannya ke satu gambar, atau 3) mengarahkannya ke file teks yang menyimpan semua jalur gambar.--input-size
(opsional): Secara default, kami menggunakan ukuran input 518
untuk inferensi model. Anda dapat memperbesar ukurannya untuk mendapatkan hasil yang lebih halus.--pred-only
(opsional): Hanya simpan peta kedalaman yang diprediksi, tanpa gambar mentah.--grayscale
(opsional): Simpan peta kedalaman skala abu-abu, tanpa menerapkan palet warna.Misalnya:
python run.py --encoder vitl --img-path assets/examples --outdir depth_vis
python run_video.py
--encoder < vits | vitb | vitl | vitg >
--video-path assets/examples_video --outdir video_depth_vis
[--input-size < size > ] [--pred-only] [--grayscale]
Model kami yang lebih besar memiliki konsistensi temporal yang lebih baik pada video.
Untuk menggunakan demo gradio kami secara lokal:
python app.py
Anda juga dapat mencoba demo online kami.
Catatan: Dibandingkan dengan V1, kami telah melakukan sedikit modifikasi pada arsitektur DINOv2-DPT (berasal dari masalah ini). Di V1, kami secara tidak sengaja menggunakan fitur dari empat lapisan terakhir DINOv2 untuk decoding. Di V2, kami menggunakan fitur perantara. Meskipun modifikasi ini tidak meningkatkan detail atau akurasi, kami memutuskan untuk mengikuti praktik umum ini.
Silakan lihat estimasi kedalaman metrik.
Silakan merujuk ke benchmark DA-2K.
Kami dengan tulus menghargai semua dukungan komunitas untuk seri Depth Anything kami. Terima kasih banyak!
Kami dengan tulus berterima kasih kepada tim Hugging Face yang luar biasa (@Pedro Cuenca, @Niels Rogge, @Merve Noyan, @Amy Roberts, dkk.) atas upaya besar mereka dalam mendukung model kami di Transformers dan Apple Core ML.
Kami juga berterima kasih kepada tim DINOv2 karena telah menyumbangkan model yang mengesankan kepada komunitas kami.
Model Depth-Anything-V2-Small berada di bawah lisensi Apache-2.0. Model Depth-Anything-V2-Base/Large/Giant berada di bawah lisensi CC-BY-NC-4.0.
Jika Anda merasa proyek ini bermanfaat, mohon pertimbangkan untuk mengutip:
@article { depth_anything_v2 ,
title = { Depth Anything V2 } ,
author = { Yang, Lihe and Kang, Bingyi and Huang, Zilong and Zhao, Zhen and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang } ,
journal = { arXiv:2406.09414 } ,
year = { 2024 }
}
@inproceedings { depth_anything_v1 ,
title = { Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data } ,
author = { Yang, Lihe and Kang, Bingyi and Huang, Zilong and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang } ,
booktitle = { CVPR } ,
year = { 2024 }
}