🚀 DepthPro: 単眼深度推定
DepthProは、ゼロショットメトリック単眼深度推定のための基盤モデルです。高解像度で、鮮鋭度と細かい詳細に優れた深度マップを生成することができます。
🚀 クイックスタート
以下のコードを使用して、モデルを使い始めることができます。
import requests
from PIL import Image
import torch
from transformers import DepthProImageProcessorFast, DepthProForDepthEstimation
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
url = 'https://huggingface.co/datasets/mishig/sample_images/resolve/main/tiger.jpg'
image = Image.open(requests.get(url, stream=True).raw)
image_processor = DepthProImageProcessorFast.from_pretrained("apple/DepthPro-hf")
model = DepthProForDepthEstimation.from_pretrained("apple/DepthPro-hf").to(device)
inputs = image_processor(images=image, return_tensors="pt").to(device)
with torch.no_grad():
outputs = model(**inputs)
post_processed_output = image_processor.post_process_depth_estimation(
outputs, target_sizes=[(image.height, image.width)],
)
field_of_view = post_processed_output[0]["field_of_view"]
focal_length = post_processed_output[0]["focal_length"]
depth = post_processed_output[0]["predicted_depth"]
depth = (depth - depth.min()) / (depth.max() - depth.min())
depth = depth * 255.
depth = depth.detach().cpu().numpy()
depth = Image.fromarray(depth.astype("uint8"))
✨ 主な機能
DepthProは、ゼロショットメトリック単眼深度推定のための基盤モデルです。多尺度のVision Transformer (ViT)ベースのアーキテクチャを採用しており、画像をダウンサンプリングし、パッチに分割し、共有のDinov2エンコーダを使用して処理します。抽出されたパッチレベルの特徴は、結合、アップサンプリングされ、DPTのような融合ステージを使用して精緻化され、正確な深度推定を可能にします。
論文からの要約は以下の通りです。
我々は、ゼロショットメトリック単眼深度推定のための基盤モデルを提案します。我々のモデルであるDepth Proは、比類のない鮮鋭度と高周波の詳細を持つ高解像度の深度マップを合成します。予測はメトリックであり、カメラの内部パラメータなどのメタデータの可用性に依存することなく、絶対スケールを持ちます。また、モデルは高速で、標準的なGPUで0.3秒で225万画素の深度マップを生成します。これらの特性は、高密度予測のための効率的な多尺度ビジョントランスフォーマー、高いメトリック精度と細かい境界追跡を実現するために実データセットと合成データセットを組み合わせたトレーニングプロトコル、推定された深度マップの境界精度のための専用の評価指標、および単一画像からの最先端の焦点距離推定など、多くの技術的貢献によって可能になっています。広範な実験により、特定の設計選択が分析され、Depth Proが複数の次元で先行研究を上回っていることが示されています。
これは、🤗 transformersモデルのモデルカードであり、Hubに公開されています。
- 開発者: Aleksei Bochkovskii, Amaël Delaunoy, Hugo Germain, Marcel Santos, Yichao Zhou, Stephan R. Richter, Vladlen Koltun.
- モデルタイプ: DepthPro
- ライセンス: Apple-ASCL
モデルソース
- HF Docs: DepthPro
- リポジトリ: https://github.com/apple/ml-depth-pro
- 論文: https://arxiv.org/abs/2410.02073
📦 インストール
このセクションでは、インストールに関する具体的な手順が提供されていません。
📚 ドキュメント
モデルの詳細
DepthProは、ゼロショットメトリック単眼深度推定のための基盤モデルです。多尺度のVision Transformer (ViT)ベースのアーキテクチャを採用しており、画像をダウンサンプリングし、パッチに分割し、共有のDinov2エンコーダを使用して処理します。抽出されたパッチレベルの特徴は、結合、アップサンプリングされ、DPTのような融合ステージを使用して精緻化され、正確な深度推定を可能にします。
トレーニングの詳細
トレーニングデータ
DepthProモデルは、以下のデータセットでトレーニングされました。

前処理
画像は以下の前処理ステップを経ます。
1/225.
でリスケール
mean=[0.5, 0.5, 0.5]
とstd=[0.5, 0.5, 0.5]
で正規化
1536x1536
ピクセルにリサイズ
トレーニングハイパーパラメータ

評価

モデルアーキテクチャと目的

DepthProForDepthEstimation
モデルは、入力画像をエンコードするDepthProEncoder
と、エンコーダからの出力特徴を融合するFeatureFusionStage
を使用します。
DepthProEncoder
はさらに2つのエンコーダを使用します。
patch_encoder
- 入力画像は、
scaled_images_ratios
構成で指定された複数の比率でスケーリングされます。
- 各スケーリングされた画像は、
scaled_images_overlap_ratios
によって決定される重複領域を持つpatch_size
の小さなパッチに分割されます。
- これらのパッチは、**
patch_encoder
**によって処理されます。
image_encoder
- 入力画像はまた、
patch_size
にリスケールされ、**image_encoder
**によって処理されます。
これらのエンコーダは、それぞれpatch_model_config
とimage_model_config
を介して構成することができ、デフォルトでは両方とも別々のDinov2Model
です。
両方のエンコーダからの出力 (last_hidden_state
) と、**patch_encoder
**から選択された中間状態 (hidden_states
) は、深度推定のためにDPT
ベースのFeatureFusionStage
によって融合されます。
ネットワークには、焦点距離推定ヘッドが追加されています。小さな畳み込みヘッドは、深度推定ネットワークからの凍結特徴と、別のViT画像エンコーダからのタスク固有の特徴を取り込み、水平方向の角度視野を予測します。
引用
@misc{bochkovskii2024depthprosharpmonocular,
title={Depth Pro: Sharp Monocular Metric Depth in Less Than a Second},
author={Aleksei Bochkovskii and Amaël Delaunoy and Hugo Germain and Marcel Santos and Yichao Zhou and Stephan R. Richter and Vladlen Koltun},
year={2024},
eprint={2410.02073},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2410.02073},
}
モデルカードの作成者
Armaghan Shakir
📄 ライセンス
このモデルは、Apple-ASCLライセンスの下で提供されています。