ヤン・リーヘ1・カン・ビンイー2†・ファン・ジロン2
Zhen Zhao · Xiaogang Xu · Jiashi Feng 2 · Hengshuang Zhao 1*
1 HKU 2 TikTok
†プロジェクトリーダー *責任著者
本作はDepth Anything V2を紹介します。きめ細かいディテールと堅牢性の点で V1 を大幅に上回ります。 SD ベースのモデルと比較して、推論速度が速く、パラメーターが少なく、深度精度が高くなります。
堅牢な相対深度推定のために、さまざまなスケールの4 つのモデルを提供します。
モデル | パラメータ | チェックポイント |
---|---|---|
深さ-何でも-V2-小 | 24.8M | ダウンロード |
深さ-何でも-V2-ベース | 97.5M | ダウンロード |
深さ-何でも-V2-大 | 335.3M | ダウンロード |
Depth-Anything-V2-Giant | 1.3B | 近日公開 |
git clone https://github.com/DepthAnything/Depth-Anything-V2
cd Depth-Anything-V2
pip install -r requirements.txt
ここにリストされているチェックポイントをダウンロードし、 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
このリポジトリのクローンを作成したくない場合は、Transformers を通じてモデルをロードすることもできます。以下は簡単なコードスニペットです。詳細は公式ページをご確認ください。
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]
オプション:
--img-path
: 1) 対象となるすべての画像を保存する画像ディレクトリを指定する、2) 単一の画像を指定する、または 3) すべての画像パスを保存するテキスト ファイルを指定することができます。--input-size
(オプション): デフォルトでは、モデル推論に入力サイズ518
を使用します。サイズを大きくすると、さらに詳細な結果が得られます。--pred-only
(オプション): 生の画像は含まず、予測された深度マップのみを保存します。--grayscale
(オプション): カラー パレットを適用せずに、グレースケール深度マップを保存します。例えば:
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]
私たちの大規模なモデルは、ビデオ上でより優れた時間的一貫性を持っています。
Gradio デモをローカルで使用するには:
python app.py
オンラインデモを試すこともできます。
注: V1 と比較して、DINOv2-DPT アーキテクチャに若干の変更を加えました (この問題が原因です)。 V1 では、DINOv2 の最後の 4 層の機能をデコードに意図せず使用してしまいました。 V2 では、代わりに中間機能を使用します。この変更により詳細や精度は向上しませんでしたが、この一般的な慣例に従うことにしました。
メトリック深度の推定を参照してください。
DA-2Kベンチマークをご参照ください。
Depth Anything シリーズに対するコミュニティのサポートに心から感謝いたします。どうもありがとうございました!
トランスフォーマーと Apple Core ML のモデルをサポートするために多大な努力をしてくれた素晴らしい Hugging Face チーム (@Pedro Cuenca、@Niels Rogge、@Merve Noyan、@Amy Roberts など) に心から感謝しています。
また、このような印象的なモデルをコミュニティに提供してくれた DINOv2 チームにも感謝します。
Depth-Anything-V2-Small モデルは、Apache-2.0 ライセンスの下にあります。 Depth-Anything-V2-Base/Large/Giant モデルは CC-BY-NC-4.0 ライセンスの下にあります。
このプロジェクトが役立つと思われる場合は、以下を引用することを検討してください。
@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 }
}