🚀 Depth Anything V2 (Metric Depth Estimation用にファインチューニング済み) - Transformersバージョン
このモデルは、合成Hypersimデータセットを使用した屋内の距離深度推定用に、Depth Anything V2 をファインチューニングしたバージョンです。
モデルのチェックポイントは、transformersライブラリと互換性があります。
Depth Anything V2は、Lihe Yangらによる 同名の論文 で紹介されました。元のDepth Anythingと同じアーキテクチャを使用しながら、合成データと大容量の教師モデルを用いることで、より細かく堅牢な深度予測を実現しています。この距離深度推定用のファインチューニング済みバージョンは、このリポジトリ で最初に公開されました。
屋内と屋外のシーンに対して、それぞれ3つのスケールの 6つの距離深度モデル が公開されており、利用可能です。
ベースモデル |
パラメータ |
屋内 (Hypersim) |
屋外 (Virtual KITTI 2) |
Depth-Anything-V2-Small |
2480万 |
モデルカード |
モデルカード |
Depth-Anything-V2-Base |
9750万 |
モデルカード |
モデルカード |
Depth-Anything-V2-Large |
3億3530万 |
モデルカード |
モデルカード |
📚 ドキュメント
モデルの説明
Depth Anything V2は、DINOv2 をバックボーンとする DPT アーキテクチャを利用しています。
このモデルは、約60万枚の合成ラベル付き画像と約6200万枚の実際のラベルなし画像で学習されており、相対深度推定と絶対深度推定の両方で最先端の結果を得ています。
Depth Anythingの概要。元の論文 から引用。
想定される用途と制限
この生モデルは、ゼロショット深度推定などのタスクに使用できます。興味のあるタスクに関する他のバージョンを探すには、モデルハブ を参照してください。
必要条件
transformers>=4.45.0
あるいは、ソースから最新バージョンの transformers
をインストールして使用することもできます。
pip install git+https://github.com/huggingface/transformers
使い方
このモデルを使用してゼロショット深度推定を行う方法は次の通りです。
💻 使用例
基本的な使用法
from transformers import pipeline
from PIL import Image
import requests
pipe = pipeline(task="depth-estimation", model="depth-anything/Depth-Anything-V2-Metric-Indoor-Base-hf")
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
depth = pipe(image)["depth"]
あるいは、モデルとプロセッサクラスを使用することもできます。
高度な使用法
from transformers import AutoImageProcessor, AutoModelForDepthEstimation
import torch
import numpy as np
from PIL import Image
import requests
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
image_processor = AutoImageProcessor.from_pretrained("depth-anything/Depth-Anything-V2-Metric-Indoor-Base-hf")
model = AutoModelForDepthEstimation.from_pretrained("depth-anything/Depth-Anything-V2-Metric-Indoor-Base-hf")
inputs = image_processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
predicted_depth = outputs.predicted_depth
prediction = torch.nn.functional.interpolate(
predicted_depth.unsqueeze(1),
size=image.size[::-1],
mode="bicubic",
align_corners=False,
)
より多くのコード例については、ドキュメント を参照してください。
📄 ライセンス
引用
@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}
}