単眼深度推定#
単眼深度推定は、単一のRGB画像からピクセルごとの深度マップを予測します。各出力ピクセルは、カメラからその表面点までの推定距離を表すメートル単位の深度値を保持します。
深度モデルの出力は、入力画像に整列された (H, W) の形状を持つ高密度な float マップです。このピクセルごとの表現により、単眼深度推定は3Dシーン再構成、ロボットナビゲーション、AR/VRコンテンツ作成、および単一カメラからの空間レイアウトを必要とするあらゆるアプリケーションに最適です。
単眼深度推定には task=depth または yolo depth CLI タスクを使用します。YOLO26 深度モデルファイルには、yolo26n-depth.pt などの -depth サフィックスが使用されます。
Watch: Monocular Depth Estimation with Ultralytics YOLO26 | Python Tutorial | Vision AI 🚀
モデル#
広範なマルチデータセットの組み合わせ(屋内 + 屋外、~219万枚の画像)で事前学習された YOLO26 深度モデルを以下に示します。メトリクス列は NYU Depth V2 の Eigen テスト分割で報告されています。
モデルは、初回使用時に最新の Ultralytics リリースから自動的にダウンロードされます。
| モデル | サイズ (ピクセル) | delta1NYU | abs_relNYU | rmseNYU | 速度 CPU ONNX (ms) | 速度 T4 TensorRT10 (ms) | パラメータ (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|---|
| YOLO26n-depth | 768 | 0.882 | 0.109 | 0.414 | 272.0 ± 27.2 | 2.7 ± 0.1 | 6.4 | 46.9 |
| YOLO26s-depth | 768 | 0.896 | 0.104 | 0.399 | 393.7 ± 13.1 | 3.8 ± 0.0 | 13.2 | 67.9 |
| YOLO26m-depth | 768 | 0.921 | 0.089 | 0.364 | 621.5 ± 49.7 | 6.0 ± 0.1 | 23.3 | 130.7 |
| YOLO26l-depth | 768 | 0.930 | 0.083 | 0.351 | 821.9 ± 50.7 | 7.7 ± 0.1 | 27.7 | 157.2 |
| YOLO26x-depth | 768 | 0.933 | 0.080 | 0.344 | 1240.9 ± 73.3 | 13.6 ± 0.2 | 57.0 | 302.0 |
- delta1NYU は、マルチスケール + 水平フリップTTAおよびlog-least-squaresアライメントを使用したNYU Depth V2 Eigenテスト分割(654画像)において、予測された深度が正解値の1.25倍以内であるピクセルの割合です。
- TTAなしの単一スケール精度は
yolo depth val model=yolo26n-depth.pt data=nyu-depth.yaml imgsz=768 device=0(各サイズについてmodel=に置き換えてください)で再現可能です。これはメディアン(スケールのみ)アライメントを使用し、スコアは低くなります:delta1 0.783 (n)、0.793 (s)、0.840 (m)、0.853 (l)、0.860 (x)。 - abs_rel は、予測深度と正解深度値間の平均絶対相対誤差です。
- rmse は、メートル単位の二乗平均平方根誤差です。
- **Speed(速度)**は、
imgsz=768およびbatch=1での推論のみのレイテンシ(前処理/後処理を除く)であり、ウォームアップ後の時間計測実行における平均値 ± 標準偏差として報告されます。CPU ONNX は 32コア Intel Xeon (Skylake) での ONNX Runtime fp32、T4 TensorRT10 は Tesla T4 での TensorRT fp16 です。 - params および FLOPs は、公開された重みの学習解像度である768×768で測定されています。
Depth Anything V2 との速度比較#
Depth Anything V2 は、単眼深度の広く使用されているオープンなベースラインです。その DINOv2 ビジョン Transformer バックボーンと DPT デコーダーは計算量が多いため、同じ Tesla T4 上の TensorRT fp16 において、リリースされた中で最小の Depth Anything V2 モデルでも、2倍以上のパラメータを持つ YOLO26x-depth を含むすべての YOLO26 深度モデルよりも遅くなります。
~768 px(YOLO26 用の imgsz=768、リリースされた重みがトレーニングされた解像度)および Depth Anything V2 用の 770 px(その DINOv2 バックボーンがパッチサイズ 14 の倍数を要求するため)の場合:
| モデル | パラメータ数 (M) | FLOPs (B) | T4 TensorRT10 (ms) | FPS | V2 Small に対する速度向上 | V2 Base に対する速度向上 |
|---|---|---|---|---|---|---|
| Depth Anything V2 Base | 97.5 | 1025.5 | 55.40 | 18.1 | — | — |
| Depth Anything V2 Small | 24.8 | 346.9 | 20.99 | 47.6 | — | — |
| YOLO26x-depth | 57.0 | 302.0 | 13.57 | 73.7 | 1.5× | 4.1× |
| YOLO26l-depth | 27.7 | 157.2 | 7.68 | 130.2 | 2.7× | 7.2× |
| YOLO26m-depth | 23.3 | 130.7 | 6.00 | 166.7 | 3.5× | 9.2× |
| YOLO26s-depth | 13.2 | 67.9 | 3.82 | 261.6 | 5.5× | 14.5× |
| YOLO26n-depth | 6.4 | 46.9 | 2.73 | 365.8 | 7.7× | 20.3× |
~640 px(それぞれ imgsz=640 および 644 px)の場合、順序は変わらず、YOLO26n-depth は Depth Anything V2 Small よりも 5.9倍高速です:
| モデル | T4 TensorRT10 (ms) | FPS |
|---|---|---|
| Depth Anything V2 Base | 35.10 | 28.5 |
| Depth Anything V2 Small | 13.62 | 73.4 |
| YOLO26x-depth | 10.26 | 97.5 |
| YOLO26l-depth | 6.14 | 162.8 |
| YOLO26m-depth | 4.71 | 212.1 |
| YOLO26s-depth | 3.08 | 324.4 |
| YOLO26n-depth | 2.29 | 436.9 |
- レイテンシは推論のみ、
batch=1、Tesla T4 上の TensorRT fp16 であり、上記のモデルテーブルと同じハーネスを使用し、ここでは小数第2位まで示されています。FPS は丸められていないレイテンシの逆数です。**Speedup(高速化)**列は、Depth Anything V2 Small (20.99 ms) および Base (55.40 ms) のレイテンシを YOLO26 のレイテンシで割ったものです。 - Depth Anything V2 Small および Base は、公開されている ViT-S および ViT-B チェックポイントです。
- この比較はレイテンシのみを対象としており、両モデルファミリーはここでは共通の精度プロトコルに基づいて評価されていません。
深度範囲と対数深度ヘッド#
深度ヘッドは exp(logit) を予測します — 無制限(~0.02〜150 m)であり、シーンの形状を絶対スケールから切り離します。ネットワークは相対的な対数深度フィールドを予測し、絶対メートルは、評価時に復元される個別の2パラメータ変換(exp(a·log d + b))、軽量なキャリブレーション、またはファインチューニングによって設定されます。一般的な代替手段である制限付き sigmoid × max_depth ヘッドは、代わりに固定の上限をアーキテクチャに組み込むため、max_depth を超える深度はすべてクリップされ、長距離シーンのトレーニングや予測が妨げられます。
ヘッドが非境界である理由:深度範囲全体にわたるエビデンス#
制御されたA/Bテスト — 同じデータ、同じスケジュール、ヘッドのみが異なる。 屋内(≤10 m)と屋外(≤80 m)のデータからなる同一の組み合わせで、両方のヘッドをゼロから学習させた場合:
| ヘッド | 出力範囲 | 混合範囲の検証 δ1 | 学習の挙動 |
|---|---|---|---|
sigmoid × max_depth (10 m) | 有界 0–10 m | 0.221 | エポック1で停滞 |
log (無制限) | 0–~150 m | 0.367 (+66%) | 全体を通じて改善 |
制限付きヘッドは屋外ピクセルの大部分(>10 m)を表現できないため、ほぼ即座に改善が停止します。一方、log ヘッドは全範囲から学習します。
修正された失敗モード — 単一データセットのファインチューニング、範囲による層別化。 有界(10 m)ヘッドを個々のデータセットでファインチューニングする場合、データが上限に収まる場合は機能しますが、それを超えると崩壊します:
| データセット | 深度範囲 | 有界ヘッド δ1 |
|---|---|---|
| SUN RGB-D | ≤10 m | 0.78 ✅ |
| Hypersim | 大部分 ≤10 m | 0.74 ✅ |
| KITTI | ~80 m | 0.08 ❌ (abs_rel ≈ 7.0 — 80/10のスケール不一致) |
| vKITTI2 | 80 m | 0.04 ❌ |
崩壊はキャップの境界で正確に発生します。log ヘッドにはそのような境界はありません。
リリースされたモデル — クロスレンジ性能。 出荷されている log ヘッドファミリーは、10 m(NYU、iBims-1)から 80 m(KITTI)にわたるベンチマークで、スケール調整された δ1 で評価されています:
| ベンチマーク | 範囲 | YOLO26x-depth (log) | 以前の有界リリース |
|---|---|---|---|
| NYU Eigen | 10 m | 0.933 | 0.934 |
| iBims-1 | 10 m | 0.961 | 0.945 |
| ETH3D | ~60 m | 0.959 | 0.931 |
| Make3D | ~70 m | 0.302 | 0.296 |
| KITTI Eigen | 80 m | 0.942 | 0.891 |
| 平均 | — | 0.819 | 0.799 |
両方のカラムは公開された通りのものです。他の行は、それぞれのデータセットページで説明されているTTAおよびlog-least-squaresプロトコルでスコア付けされていますが、このリポジトリのバリデーターではそれが実装されていないため、KITTIの行を同じ条件で再測定することはできません。KITTI pageには、カノニカルな652フレームのEigenスプリットで測定された数値が記載されています。
最大のゲインは、固定された10 mの上限が最も悪影響を与える長距離の屋外ベンチマーク(KITTI, ETH3D)で見られ、同時に屋内性能も維持されています。
トレーニング#
Depth8 データセットで画像サイズ 640 で 100 エポックにわたって YOLO26n-depth をトレーニングします。利用可能な引数の完全なリストについては、設定ページを参照してください。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.yaml") # build a new model from YAML
model = YOLO("yolo26n-depth.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-depth.yaml").load("yolo26n-depth.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="depth8.yaml", epochs=100, imgsz=640)完全な train モードの詳細については、トレーニングページを参照してください。
独自のデータでのファインチューニング#
事前学習済みの深度モデルをカスタムデータセットに適応させる場合は、学習率を下げ、AdamW オプティマイザを使用してください。デフォルトのオプティマイザ設定はゼロからのトレーニング(lr0=0.01 を使用した SGD)向けに調整されており、すでに収束している深度モデルに適用すると、事前学習済みの知識が上書きされ、結果が低下する可能性があります(特に単一ドメインでファインチューニングを行う場合)。
from ultralytics import YOLO
model = YOLO("yolo26s-depth.pt") # start from pretrained weights
model.train(
data="path/to/your_dataset.yaml",
epochs=20,
imgsz=640,
optimizer="AdamW",
lr0=1e-4, # ~100x below the from-scratch default
warmup_bias_lr=1e-4, # keep warmup gentle too
)追加のヒント:
- データ拡張は標準の引数(
degrees、translate、scale、shear、perspective、flipud、fliplr、hsv_h、hsv_s、hsv_v)によって制御されます。幾何学的ワープと反転は、ペアの深度マップに同じように適用されます。リリースされた YOLO26-Depth の重みに使用された正確なレシピを確認するには、チェックポイントに保存されているtrain_argsを検査してください — YOLO26 チェックポイントのトレーニング引数の検査を参照してください。 mosaic、mixup、cutmix、およびcopy_pasteは深度用に実装されていません。 深度データセットローダーはこれらの確率を自動的に 0 に設定するため、これらを渡しても効果はありません。これらのデータ拡張は、複数の画像を組み合わせるため無効なペアの深度マップを生成してしまうためサポートされていません。- どの深度範囲でもすぐに機能します。
logヘッドモデルは無制限の深度を予測するため、変更なしで近距離(マクロ)または長距離(屋外/運転)のデータに適応します。データセットの YAML でmax_depth:(メートル単位)を設定すると、検証メトリクスにカウントされる GT ピクセルが制限されます。 - 一般的な性能を維持します。 モデルが学習セットを超えたシーンでも正確さを維持する必要がある場合は、多様な汎用画像を少量(約5〜10%)学習データに混ぜてください。これにより、ファインチューニング中の知識の忘却を大幅に減らすことができます。
- ドメインが非常に異なり大規模なデータセットがある場合にのみ、ゼロからトレーニング(
model=yolo26s-depth.yaml)を行います。保存すべき事前学習済みの重みがないため、デフォルトの SGDlr0=0.01が適切です。
深度スケールのキャリブレーション#
深度ヘッドは形状(相対的なシーン構造)とスケール(絶対メートル)を分離します。モデルがすでにシーンに対して良好な相対深度を生成しているにもかかわらず、カメラに対して絶対値がずれている場合は、少数のラベル付きセットに対する 2 パラメータの対数アフィンの閉形式フィットである model.calibrate() を使用して、数秒でスケールを修正できます。これは勾配トレーニングを行わず、ネットワークの重みを変更しないため、相対構造を低下させることはありません。
from ultralytics import YOLO
model = YOLO("yolo26s-depth.pt")
# Fit scale on a labeled split (~100+ images is enough), then persist it
model.calibrate(data="path/to/your_dataset.yaml")
model.save("yolo26s-depth-calibrated.pt")キャリブレーションには、フィットさせるための正解(グランドトゥルース)深度が必要であるため、ラベル付きの分割で実行されます。これは盲目的な推論時には実行できません。検証メトリクスが評価するのと同じピクセルでフィットしスコアを算出します。データセット YAML の max_depth(デフォルト 100 m)以上にある GT は除外されます。相対深度がすでに良好であり、スケール/範囲のみが間違っている場合に使用してください。ドメインに合わせて相対構造自体を変更する必要がある場合は、代わりにファインチューニングを行ってください。
トレーニングによりこれが自動的に実行されます。model.train(...) が完了すると、最適および最後のチェックポイントが検証セットでキャリブレーションされるため、そのままメトリックにスケーリングされた深度が出力されます。
リリースされた yolo26*-depth.pt チェックポイントには、このキャリブレーションがあらかじめ組み込まれており、事前学習の検証ミックスでフィットされています。これはすべてのドメインにわたる単一のグローバルなスケールであるため、特定のカメラやシーンタイプで最も正確な絶対深度を得るには、独自のデータからの少数のラベル付き分割で model.calibrate() を実行してください。これにより、組み込みのフィットが置き換えられます。
データセット形式#
深度推定データセットは、各 RGB 画像に対応する深度ファイルをペアにします。深度ターゲットは、メートル単位の float32 値を含む .npy 配列として保存されます。データセットの YAML は images/ ディレクトリを指しており、ローダーは images コンポーネントを depth に置き換え、画像拡張子を .npy に置き換えることによって深度ファイルのパスを導出します。
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/たとえば、images/train/scene_001.jpg の画像は、depth/train/scene_001.npy の深度マップとペアになります。完全なフォーマット仕様については、深度推定データセットガイドを参照してください。
検証#
深度推定データセットで、トレーニング済みの YOLO26n-depth モデルの精度を検証します。意図したデータセット YAML が検証で使用されるように、data を明示的に渡します。リリースされた重みは imgsz=768 でトレーニングされているため、最高の精度を得るにはそのサイズで検証および予測を行ってください。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val(data="nyu-depth.yaml")
metrics.delta1 # percentage of pixels within threshold δ=1.25
metrics.abs_rel # mean absolute relative error
metrics.rmse # root mean squared error (meters)
metrics.silog # scale-invariant logarithmic error予測#
学習済みのYOLO26n-depthモデルを使用して画像に対する予測を実行します。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
# Access the results
for result in results:
depth_map = result.depth.data.cpu().numpy() # torch.Tensor -> NumPy float32, shape (H, W), meterspredict モードの詳細については、Predict ページを参照してください。
結果の出力#
YOLO 深度推定は、画像ごとに 1 つの Results オブジェクトを返します。各結果には、画像全体に対する 1 つの高密度な float 深度マップが保存されます。
| 属性 | タイプ | 形状 | 説明 |
|---|---|---|---|
result.depth | DepthMap | (H,W) | 密なピクセルごとの深度マップ。 |
result.depth.data | torch.Tensor | (H,W) | 深度値はメートル単位です。NumPy の場合は .cpu().numpy() を呼び出します。 |
result.boxes | - | - | インスタンスボックスはありません。 |
result.masks | - | - | インスタンスマスクなし。 |
すべてのタスクに共通するタスク固有の Results フィールドについては、Predict Results by Task セクションを参照してください。
デプスマップのカラー化#
生データとしての深度マップはメートル単位の単一チャンネル float 配列であり、計算には便利ですが直接読み取るのは困難です。カラー画像に変換するには、ultralytics.utils.plotting 内の colorize_depth ヘルパーを使用します。これにより、(H, W) の深度配列が (H, W, 3) BGR uint8 画像にマッピングされます(無効なピクセル <= 0 は黒で描画されます)。
result.plot() は、デフォルト(cmap="jet"、mode="disparity")を使用して、このカラー化を入力画像にすでにブレンドしています。単体のカラー深度画像、または異なるカラーマップや正規化が必要な場合は、colorize_depth を直接呼び出してください。
import cv2
from ultralytics import YOLO
from ultralytics.utils.plotting import colorize_depth
model = YOLO("yolo26n-depth.pt")
result = model("https://ultralytics.com/images/bus.jpg")[0]
depth = result.depth.data.cpu().numpy() # (H, W) float32, meters
# Colorize with near = warm and save
cv2.imwrite("depth_colored.png", colorize_depth(depth, cmap="spectral")) # (H, W, 3) BGR uint8
# Fix the range to 0-20 m so the same color means the same distance across frames
cv2.imwrite("depth_metric.png", colorize_depth(depth, vmin=0.0, vmax=20.0, cmap="inferno", mode="metric"))
# Blended overlay straight from the Results object (uses cmap="jet", mode="disparity")
result.save("depth_overlay.png")すべてのカラーマップは、寒色/暗い色 → 暖色/明るい色へと実行されます。mode はどちらの端が近いかを決定し、vmin/vmax はフレーム間で範囲を固定するため、色は常に同じ距離を意味します。
| 引数 | 値 | 説明 |
|---|---|---|
cmap | jet (デフォルト) | 高コントラストの青 → 緑 → 赤で、result.plot() が使用するパレットです。 |
cmap | inferno | 黒 → 紫 → オレンジ → 黄。知覚的に均一で、色覚多様性に対応しており、グレースケールでも読みやすいです。 |
cmap | spectral | 赤 → 黄 → 緑 → 青(matplotlib の Spectral_r)。 |
mode | disparity (デフォルト) | 逆深度(1/d)を第 2 パーセンタイルと第 98 パーセンタイルの間で正規化します。暖色でマークされた近距離および遠距離の外れ値が吸収されます。 |
mode | metric | vmin と vmax の間でメートル単位の深度を線形に正規化します。暖色は遠距離をマークするため、色は実際の距離を追跡します。 |
エクスポート#
YOLO26n-depthモデルをONNX、CoreMLなどの異なるフォーマットにエクスポートします。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Export the model
model.export(format="onnx")利用可能な YOLO26 深度推定のエクスポート形式は、以下の表に示されています。format 引数(例:format='onnx' または format='engine')を使用して、任意の形式にエクスポートできます。エクスポートされたモデルに対して直接予測または検証を行うこともできます(例:yolo predict model=yolo26n-depth.onnx)。使用例は、エクスポート完了後にモデル用に表示されます。
| 形式 | format 引数 | モデル | メタデータ | 引数 |
|---|---|---|---|---|
| PyTorch | - | yolo26n-depth.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-depth.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-depth.onnx | ✅ | imgsz、quantize、dynamic、simplify、opset、nms、batch、data、fraction、device |
| OpenVINO | openvino | yolo26n-depth_openvino_model/ | ✅ | imgsz、quantize、dynamic、nms、batch、data、fraction、device |
| TensorRT | engine | yolo26n-depth.engine | ✅ | imgsz、quantize、dynamic、simplify、opset、workspace、nms、batch、data、fraction、device |
| CoreML | coreml | yolo26n-depth.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-depth_saved_model/ | ✅ | imgsz、keras、quantize、opset、nms、batch、data、fraction、device |
| TF GraphDef | pb | yolo26n-depth.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-depth_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-depth_paddle_model/ | ✅ | imgsz、batch、device |
| MNN | mnn | yolo26n-depth.mnn | ✅ | imgsz、batch、dynamic、quantize、simplify、opset、nms、device |
| NCNN | ncnn | yolo26n-depth_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-depth_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-depth_rknn_model/ | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| ExecuTorch | executorch | yolo26n-depth_executorch_model/ | ✅ | imgsz、batch、device |
| Axelera | axelera | yolo26n-depth_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-depth_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-depth_qnn.onnx | ✅ | imgsz、batch、name、quantize、simplify、opset、data、fraction、device |
| LiteRT | litert | yolo26n-depth.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-depth_hailo_model/ | ✅ | imgsz、name、quantize、data、fraction、simplify、conf、iou |
| Huawei Ascend | ascend | yolo26n-depth_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
詳細な export については、Export ページをご覧ください。
よくある質問 (FAQ)#
ペアの RGB 画像と
.npyの深度ファイルを準備し、images/ディレクトリを指すデータセット YAML を作成します。ローダーは、パス内のimagesをdepthに置き換え、画像拡張子を.npyにスワップすることで、深度ファイルを自動的に見つけます。事前学習済みの重みから開始し、AdamW を用いて低い学習率を使用することで、ファインチューニングがモデルですでに学習済みの内容を保持できるようにします(理由については独自データでのファインチューニングを参照してください):
例from ultralytics import YOLO # Load a pretrained YOLO26 depth model model = YOLO("yolo26s-depth.pt") # Fine-tune on a custom depth dataset results = model.train( data="path/to/your_dataset.yaml", epochs=20, imgsz=640, optimizer="AdamW", lr0=1e-4, warmup_bias_lr=1e-4, )利用可能なその他の引数については、設定ページを確認してください。
深度推定のバリデーションでは、Depth Anythingや関連する単眼深度推定の研究で使用されるメトリクスセットがレポートされます:
- delta1 / delta2 / delta3 — 予測深度と正解深度(またはその逆数)の比率がそれぞれ1.25、1.25²、1.25³未満であるピクセルの割合です。値が高いほど良好です。
- abs_rel — 平均絶対相対誤差です。値が低いほど良好です。
- rmse — 二乗平均平方根誤差(メートル単位)です。値が低いほど良好です。
- silog — スケール不変対数誤差です。値が低いほど良好です。
各予測は画像ごとにグランド真値に中央値合わせされ、各メトリクスはその画像上で確定され、それらの画像ごとの結果が検証セット全体で平均化されるため、有効なデプス(深度)ピクセルがいくつ含まれているかに関係なく、すべての画像が同じ重みで扱われます。少数のピクセルの中央値を合わせることは無意味であるため、有効なグランド真値ピクセルが10個未満の画像はスキップされ、その平均には含まれません。また、有限でない予測は代わりにデプスの境界でスコア付けされます。これは、Depth Anything V2で使用されているサンプルごとの平均化および10ピクセルの下限と一致しています。
深度マップは、各値が予測された深度(メートル単位)である
(H, W)の形状を持つtorch.Tensorとして保存されます(NumPyfloat32配列にするにはresult.depth.data.cpu().numpy()を使用します)。予測を実行した後にresult.depth.dataを通じてアクセスします。マップは入力画像の解像度に整列されます。Ultralytics YOLO26 は、NYU Depth V2、KITTI、Hypersim、SUN RGB-D、ARKitScenes を含むいくつかの深度推定データセット向けの組み込みデータセット YAML 設定を提供します。完全なリストとフォーマットの詳細については、深度推定データセットガイドを参照してください。
評価に使用するデータセットYAMLを指定して、事前学習済みのYOLO26深度モデルをバリデーションします:
例from ultralytics import YOLO # Load a pretrained model model = YOLO("yolo26n-depth.pt") # Validate the model metrics = model.val(data="nyu-depth.yaml") print("delta1:", metrics.delta1) print("abs_rel:", metrics.abs_rel) print("rmse:", metrics.rmse)PythonまたはCLIを使用して、YOLO26深度モデルをONNXにエクスポートします:
例from ultralytics import YOLO # Load a pretrained model model = YOLO("yolo26n-depth.pt") # Export the model to ONNX format model.export(format="onnx")さまざまな形式へのエクスポートの詳細については、エクスポートページを参照してください。