MiDaS

MiDaSは混合データセット上でスケール・シフト不変損失を使って学習した単眼相対深度推定モデルです。後のファミリーも再利用するゼロショット深度転移プロトコルを確立した研究系列です。LibreYOLOは深度タスク向けに、学習経路なしで推論とゼロショット検証に対応します。

タスク
depth
サイズ
s, l at 256 to 384 px
インストール
pip install libreyolo
サポートティア
推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
アップストリーム
Intel Intelligent Systems Lab (Intel ISL)のMiDaS、MIT。論文ソース
ライセンス
コード:MIT、重み:MIT。商用利用

インストール

MiDaSにオプションの追加パッケージは不要です。インポートするものはすべて基本インストールに含まれます。

bash
pip install libreyolo

推論

MiDaSは、LibreYOLOが独自のHugging Face組織で再公開しない唯一の深度ファミリーです。LibreYOLOのファイル名でチェックポイントを要求すると、isl-org/MiDaS のGitHubリリースから対応する公式成果物を直接ダウンロードし、固定されたSHA-256と照合した後、最初の使用前にLibreYOLOのチェックポイントメタデータでラップします。その後の実行では、キャッシュ済みのローカルファイルを再利用します。理由は「ライセンス」を参照してください。

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # ディスクにない場合は公式isl-org/MiDaS GitHubリリースから取得し# 使用前に固定されたSHA-256と照合model = LibreYOLO("LibreMiDaSl-depth.pt")result = model(SAMPLE_IMAGE, save=True) depth = result.depth_mapprint(depth.min, depth.max, depth.mean)
CLI
libreyolo predict model=LibreMiDaSl-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
smallバリアント
from libreyolo import LibreYOLO, SAMPLE_IMAGE # EfficientNet-Lite3エンコーダーでDPT-Largeのlサイズより小型で高速model = LibreYOLO("LibreMiDaSs-depth.pt")result = model(SAMPLE_IMAGE, save=True)

result.depth_map は密な相対逆深度マップを保持します。大きい値ほどカメラに近いことを示し、値にはメートル単位も画像をまたぐ共通スケールもありません。save=True はそのマップをカラーマップで可視化してディスクへ書き出します。Results.plot() は表面法線とエッジだけに定義されているため、このファミリーには対応しません。ソース、ストリーミング、結果の処理については、推論を参照してください。

バリアント

2つのバリアントは同じモデルの単なるスケール違いではなく、異なるエンコーダーを使用します。s はEfficientNet-Lite3エンコーダーを持つMiDaS v2.1 Smallです。l はViT-L/16エンコーダーと、MiDaSが密な予測向けに導入したDPTデコーダーを持つDPT-Largeです。前処理も異なります。s はアスペクト比を維持する上限制約付きリサイズとImageNetの平均・標準偏差による正規化を使用し、l はアスペクト比を維持する最小制約付きリサイズと平均・標準偏差0.5を使用します。軽量なCNNには s、Transformerデコーダーの精度には l を選択してください。

このファミリーは学習を提供しません。LibreMiDaS.train() は無条件に NotImplementedError を発生させます。

検証

val() は共有の深度バリデーターを実行します。各推論を画像ごとの最小二乗スケールとシフトで正解データへ位置合わせし、標準のゼロショット相対深度指標であるAbsRel、RMSE、3つのdeltaしきい値を報告します。

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreMiDaSl-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=LibreMiDaSl-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("LibreMiDaSl-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreMiDaSl-depth.pt format=onnxlibreyolo export model=LibreMiDaSl-depth.pt format=tensorrt half=True
エクスポートしたファイルを使う
from libreyolo import LibreYOLO, SAMPLE_IMAGE # ファクトリーはファイル接尾辞で振り分けるためエクスポート済み成果物も# チェックポイントと同様に読み込まれて同じResultsオブジェクトを返すmodel = LibreYOLO("LibreMiDaSl-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

ライセンス

ダウンロードする特定の重みについて、Hugging Faceリポジトリのライセンスを確認してください。LibreYOLO orgの各チェックポイントにはライセンスが付与されており、同じファミリー内でも常に同一とは限りません。そのリポジトリが正式な情報源です。以下の概要は、このページを最後に検証した時点で適用されていた内容を示します。

これは関連するライセンスの説明であり、法的助言ではありません。商用上重要な場合は、自分でライセンスを読み、専門家の助言を受けてください。

原著作物
MiDaS, Intel Intelligent Systems Lab (Intel ISL)
アップストリームのライセンス
MIT
アップストリームのソース
github.com/isl-org/MiDaS
LibreYOLOのコード
MIT
重み
MIT、著者が配布。LibreYOLOではホストもミラーもしていません。
解釈
The isl-org/MiDaS repository, code and released checkpoints included, is MIT. LibreYOLO's own port code is MIT as well. LibreYOLO does not republish the checkpoints on its own Hugging Face organization, though: the family downloads the two official release assets directly from GitHub and checks them against a pinned SHA-256 before wrapping them, because an internal LibreYOLO policy (ADR 0006) requires the training-dataset mixture's commercial-redistribution terms to be cleared before LibreYOLO hosts a depth checkpoint itself, and that clearance has not happened for MiDaS. The bytes you get are upstream's own MIT-licensed release either way.

引用

@ARTICLE {Ranftl2022,
    author  = "Ren\'{e} Ranftl and Katrin Lasinger and David Hafner and Konrad Schindler and Vladlen Koltun",
    title   = "Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-Shot Cross-Dataset Transfer",
    journal = "IEEE Transactions on Pattern Analysis and Machine Intelligence",
    year    = "2022",
    volume  = "44",
    number  = "3"
}

@article{Ranftl2021,
	author    = {Ren\'{e} Ranftl and Alexey Bochkovskiy and Vladlen Koltun},
	title     = {Vision Transformers for Dense Prediction},
	journal   = {ICCV},
	year      = {2021},
}

著者によるgithub.com/isl-org/MiDaS#citationの引用ブロックからコピーしています。

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