Markdownで表示

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にオプションの追加パッケージは不要です。インポートするものはすべて基本インストールに含まれます。

bash
pip install libreyolo

推論

重みは初回使用時にHugging Faceからダウンロードされ、ローカルにキャッシュされます。

Python
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)
CLI
libreyolo predict model=LibreDepthAnythingV2s-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
深度マップを読み取る
from 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しきい値を報告します。

Python
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"])
CLI
libreyolo val model=LibreDepthAnythingV2s-depth.pt data=my-dataset.yaml

エクスポート

タスクONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
depthdepth 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 を返します。エクスポートでは、すべての形式が受け付ける引数を説明しています。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDepthAnythingV2s-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreDepthAnythingV2s-depth.pt format=onnxlibreyolo export model=LibreDepthAnythingV2s-depth.pt format=tensorrt half=True
エクスポートしたファイルを使う
from 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.ptapache-2.0
LibreDepthAnythingV2l-depth.ptcc-by-nc-4.0
LibreDepthAnythingV2b-depth.ptcc-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の引用ブロックからコピーしています。

LibreYOLO v1.5.0で検証済みです。このページのサポート表、チェックポイント、ベンチマーク値は手作業で記述したものではなく、リリース済みライブラリと公開済みの重みから生成されています。