Depth Anything V2
Depth Anything V2はDINOv2エンコーダーとDPTデコーダーを組み合わせ、1枚の画像から密な相対逆深度マップを予測します。LibreYOLOは深度タスク向けに、学習経路なしで推論とゼロショット検証に対応します。
- タスク
- depth
- サイズ
- s, b, l, g at 518 px
- インストール
pip install libreyolo- サポートティア
- 推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
- アップストリーム
- The University of Hong Kong and TikTokのDepth Anything V2、Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)。論文、ソース
- ライセンス
- コード:Apache-2.0、重み:Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)。商用利用
インストール
Depth Anything V2にオプションの追加パッケージは不要です。インポートするものはすべて基本インストールに含まれます。
pip install libreyolo推論
重みは初回使用時にHugging Faceからダウンロードされ、ローカルにキャッシュされます。
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")result = model(SAMPLE_IMAGE, save=True) depth = result.depth_mapprint(depth.min, depth.max, depth.mean)libreyolo predict model=LibreDepthAnythingV2s-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")result = model(SAMPLE_IMAGE) depth = result.depth_map # DepthMapは密な(H, W)で大きいほど近いraw = depth.data # テンソルでメートル単位や画像間スケールはないnormalized = depth.normalized() # 可視化用に[0, 1]へ再スケーリングresult.depth_map は密な相対逆深度マップを保持します。大きい値ほどカメラに近いことを示し、値にはメートル単位も画像をまたぐ共通スケールもありません。save=True はそのマップをカラーマップで可視化してディスクへ書き出します。Results.plot() は表面法線とエッジだけに定義されているため、このファミリーには対応しません。入力解像度は、DPTヘッドの基になるDINOv2パッチグリッドの14で割り切れる必要があります。LibreYOLOは実行前に確認し、割り切れなければエラーになります。ソース、ストリーミング、結果の処理については、推論を参照してください。
バリアント
エンコーダーサイズはViT-S/B/L/Gに対応するs/b/l/gの4つです。下のチェックポイント表に記載されているのはs、b、lだけで、Giantチェックポイントは公開されていません。4つすべてが同じ入力解像度を共有するため、サイズの選択によって変わるのは画像サイズではなくエンコーダー容量です。ライセンスも選択要因です。SmallチェックポイントはApache-2.0で、BaseとLargeはCC-BY-NC-4.0です。下の「ライセンス」を参照してください。
このファミリーは学習もファインチューニングも提供しません。LibreDepthAnythingV2.train() は無条件に NotImplementedError を発生させます。代わりに、weights/convert_depth_anything_v2_weights.py で互換性のあるアップストリームチェックポイントを変換してください。
検証
val() は共有の深度バリデーターを実行します。各推論を画像ごとの最小二乗スケールとシフトで正解データへ位置合わせし、標準のゼロショット相対深度指標であるAbsRel、RMSE、3つのdeltaしきい値を報告します。
from libreyolo import LibreYOLO model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/abs_rel"])print(metrics["metrics/rmse"])print(metrics["metrics/delta1"])libreyolo val model=LibreDepthAnythingV2s-depth.pt data=my-dataset.yamlエクスポート
| タスク | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| depth | depth to ONNX:対応 | depth to TorchScript:対応 | depth to ExecuTorch:対応 | depth to TensorRT:対応 | depth to OpenVINO:対応 | depth to Paddle:非対応 | depth to MNN:非対応 | depth to RKNN:非対応 | depth to ncnn:非対応 | depth to TFLite:非対応 | depth to CoreML:非対応 | depth to Core AI:対応 |
エクスポート済み成果物はファイル接尾辞によって LibreYOLO() から再度読み込まれるため、.onnx または .engine ファイルはチェックポイントのように動作し、ボックスの代わりに depth_map を持つ同じ Results を返します。エクスポートでは、すべての形式が受け付ける引数を説明しています。
from libreyolo import LibreYOLO model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreDepthAnythingV2s-depth.pt format=onnxlibreyolo export model=LibreDepthAnythingV2s-depth.pt format=tensorrt half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # ファクトリーはファイル接尾辞で振り分けるためエクスポート済み成果物も# チェックポイントと同様に読み込まれて同じResultsオブジェクトを返すmodel = LibreYOLO("LibreDepthAnythingV2s-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)チェックポイント
このファミリーで公開されているすべての重みファイルです。
| ファイル | 入力(px) | 重みのライセンス |
|---|---|---|
| depth | ||
| LibreDepthAnythingV2s-depth.pt | apache-2.0 | |
| LibreDepthAnythingV2l-depth.pt | cc-by-nc-4.0 | |
| LibreDepthAnythingV2b-depth.pt | cc-by-nc-4.0 | |
上記のすべてのファイルは現在LibreYOLO orgにあり、初回使用時にダウンロードされます。
ライセンス
ダウンロードする特定の重みについて、Hugging Faceリポジトリのライセンスを確認してください。LibreYOLO orgの各チェックポイントにはライセンスが付与されており、同じファミリー内でも常に同一とは限りません。そのリポジトリが正式な情報源です。以下の概要は、このページを最後に検証した時点で適用されていた内容を示します。
これは関連するライセンスの説明であり、法的助言ではありません。商用上重要な場合は、自分でライセンスを読み、専門家の助言を受けてください。
- 原著作物
- Depth Anything V2, The University of Hong Kong and TikTok
- アップストリームのライセンス
- Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)
- アップストリームのソース
- github.com/DepthAnything/Depth-Anything-V2
- LibreYOLOのコード
- MIT
- 重み
- Apache-2.0 (Small checkpoint); CC-BY-NC-4.0 (Base and Large checkpoints)、huggingface.co/LibreYOLOで再公開
- 解釈
- The two licenses are not interchangeable. The Small checkpoint is Apache-2.0, a permissive license: it can be used in commercial and closed-source products, it asks you to keep its license text and attribution notices with any redistributed copy, and it grants a patent license. The Base and Large checkpoints are CC-BY-NC-4.0, which forbids commercial use outright and requires attribution on any redistribution, so treat them as research and evaluation weights unless you obtain separate terms from the authors. LibreYOLO's own code for this family is MIT throughout, and training is not offered for this family so there is no self-trained-weights exception to reach for.
引用
@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}
}著者によるgithub.com/DepthAnything/Depth-Anything-V2#citationの引用ブロックからコピーしています。