MiDaS
MiDaSは混合データセット上でスケール・シフト不変損失を使って学習した単眼相対深度推定モデルです。後のファミリーも再利用するゼロショット深度転移プロトコルを確立した研究系列です。LibreYOLOは深度タスク向けに、学習経路なしで推論とゼロショット検証に対応します。
- タスク
- depth
- サイズ
- s, l at 256 to 384 px
- インストール
pip install libreyolo- サポートティア
- 推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
- ライセンス
- コード:MIT、重み:MIT。商用利用
インストール
MiDaSにオプションの追加パッケージは不要です。インポートするものはすべて基本インストールに含まれます。
pip install libreyolo推論
MiDaSは、LibreYOLOが独自のHugging Face組織で再公開しない唯一の深度ファミリーです。LibreYOLOのファイル名でチェックポイントを要求すると、isl-org/MiDaS のGitHubリリースから対応する公式成果物を直接ダウンロードし、固定されたSHA-256と照合した後、最初の使用前にLibreYOLOのチェックポイントメタデータでラップします。その後の実行では、キャッシュ済みのローカルファイルを再利用します。理由は「ライセンス」を参照してください。
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)libreyolo predict model=LibreMiDaSl-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom 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しきい値を報告します。
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"])libreyolo val model=LibreMiDaSl-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("LibreMiDaSl-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreMiDaSl-depth.pt format=onnxlibreyolo export model=LibreMiDaSl-depth.pt format=tensorrt half=Truefrom 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の引用ブロックからコピーしています。