Ultralytics YOLOによる単眼深度推定#
単眼深度推定は、1枚のRGB画像からピクセルごとの深度マップを予測します。各出力ピクセルには、カメラからその表面点までの推定距離をメートル単位で表す深度値が格納されます。
深度モデルの出力は、入力画像と位置合わせされた (H, W) 形状の密なfloatマップです。このピクセル単位の表現により、単眼深度推定は3Dシーン再構成、ロボットナビゲーション、AR/VRコンテンツ作成など、単一カメラから空間レイアウトを必要とするあらゆるアプリケーションに適しています。
単眼深度推定には、task=depth または yolo depth CLIタスクを使用します。YOLO26の深度モデルファイルには -depth サフィックスが使用されます。例: yolo26n-depth.pt。
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.3 | 46.9 |
| YOLO26s-depth | 768 | 0.896 | 0.104 | 0.399 | 393.7 ± 13.1 | 3.8 ± 0.0 | 13.2 | 68.0 |
| YOLO26m-depth | 768 | 0.921 | 0.089 | 0.364 | 621.5 ± 49.7 | 6.0 ± 0.1 | 23.3 | 130.4 |
| YOLO26l-depth | 768 | 0.930 | 0.083 | 0.351 | 821.9 ± 50.7 | 7.7 ± 0.1 | 27.7 | 157.0 |
| YOLO26x-depth | 768 | 0.933 | 0.080 | 0.344 | 1240.9 ± 73.3 | 13.6 ± 0.2 | 57.0 | 301.7 |
- **delta1NYU**は、NYU Depth V2のEigenテスト分割(654枚)において、マルチスケール + 水平方向反転TTAおよび対数最小二乗アライメントを適用した場合に、予測深度が正解深度の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は、メートル単位の二乗平均平方根誤差です。
- 速度は、
imgsz=768、batch=1における推論のみのレイテンシ(前処理と後処理を除く)で、ウォームアップ後の計測実行における平均 ± 標準偏差として報告しています。CPU ONNXは32コアIntel Xeon(Skylake)上のONNX Runtime fp32です。T4 TensorRT10はTesla T4上のTensorRT fp16です。 - paramsとFLOPsは、公開済み重みのトレーニング解像度である768×768で測定されています。
NYU Depth V2の予備的な結果については、未公開のYOLO27プレビューをご覧ください。
Depth Anything V2との速度比較#
Depth Anything V2は、単眼深度で広く使用されているオープンベースラインです。DINOv2のビジョントランスフォーマーバックボーンとDPTデコーダーは計算負荷が高いため、同じTesla T4上でTensorRT fp16を使用した場合、公開済みのDepth Anything V2の最小モデルは、YOLO26x-depthを含むすべてのYOLO26深度モデルより低速です。YOLO26x-depthは、パラメータ数が2倍以上あります。
約768 pxの場合 — YOLO26では imgsz=768(公開済み重みがトレーニングされた解像度)、Depth Anything V2では770 pxです。Depth Anything V2の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 | 301.7 | 13.57 | 73.7 | 1.5× | 4.1× |
| YOLO26l-depth | 27.7 | 157.0 | 7.68 | 130.2 | 2.7× | 7.2× |
| YOLO26m-depth | 23.3 | 130.4 | 6.00 | 166.7 | 3.5× | 9.2× |
| YOLO26s-depth | 13.2 | 68.0 | 3.82 | 261.6 | 5.5× | 14.5× |
| YOLO26n-depth | 6.3 | 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は丸める前のレイテンシの逆数です。高速化率列は、Depth Anything V2 Small(20.99 ms)およびBase(55.40 ms)のレイテンシをYOLO26のレイテンシで割った値です。 - Depth Anything V2 SmallとBaseは、公開済みのViT-SおよびViT-Bチェックポイントです。
- この比較はレイテンシのみを対象としており、ここでは2つのモデルファミリーを共通の精度プロトコルで評価していません。
深度範囲と対数深度ヘッド#
深度ヘッドは exp(logit) を予測します。これは上限のない値(~0.02–150 m)であり、シーン形状と絶対スケールを分離します。ネットワークは相対的な対数深度フィールドを予測し、絶対メートル値は、評価時、軽量キャリブレーション、またはファインチューニングによって復元される、別個の2パラメータ変換(exp(a·log d + b))で設定されます。一般的な代替方式である上限付き sigmoid × max_depth ヘッドでは、アーキテクチャに固定上限が組み込まれるため、max_depth を超える深度はクリップされます。その結果、より遠距離のシーンでのトレーニングも予測もできません。
ヘッドに上限がない理由: 深度範囲全体にわたる検証#
**管理されたA/B比較 — 同じデータ、同じスケジュールで、異なるのはヘッドのみです。**屋内(≤10 m)と屋外(≤80 m)の同一構成データで、両方のヘッドをゼロからトレーニングします。
| ヘッド | 出力範囲 | 混合範囲val δ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および対数最小二乗プロトコルでスコアリングされています。このプロトコルはこのリポジトリのバリデーターでは実装されていないため、KITTI行は同じ条件では再測定できません。KITTIページには、標準の652フレームEigen分割で測定した値が掲載されています。
最大の向上は、より長距離の屋外ベンチマーク(KITTI、ETH3D)で見られます。これは固定10 m上限の影響が最も大きい範囲であり、屋内性能は維持されています。
トレーニング#
Depth8データセットで、YOLO26n-depthを画像サイズ640、100 エポック学習します。使用可能な引数の一覧については、Configurationページを参照してください。
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ページで 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
)追加のヒント:
- データ拡張は標準argsで制御されます(
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が適しています。
深度スケールのキャリブレーション#
深度ヘッドは、形状(相対的なシーン構造)とスケール(絶対メートル値)を分離します。モデルがシーンの相対深度を適切に出力しているものの、カメラに対して絶対値がずれている場合は、model.calibrate() を使用して数秒でスケールを補正できます。これは少量のラベル付きデータセットに対する2パラメータの対数アフィン変換の閉形式フィッティングであり、勾配トレーニングもネットワーク重みの変更も必要ないため、相対構造が悪化することはありません。
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")キャリブレーションには適合させるためのグラウンドトゥルース深度が必要なため、ラベル付き分割で実行されます。ブラインド推論で実行することはできません。valメトリクスが評価するものと同じピクセルで適合とスコアリングを行います。データセット YAML の max_depth(デフォルトは100 m)以上の GT は除外されます。相対深度がすでに良好で、スケールや範囲だけが正しくない場合に使用してください。ドメインに合わせて相対構造自体を変更する必要がある場合は、代わりにファインチューニングを行ってください。
トレーニングではこれが自動的に行われます。model.train(...) の完了後、bestおよびlastチェックポイントが検証セットでキャリブレーションされるため、すぐにメートルスケールの深度を出力できます。
リリース済みの yolo26*-depth.pt チェックポイントには、このキャリブレーションがすでに組み込まれており、事前トレーニングの検証ミックスで適合されています。これはすべてのドメインに対する単一のグローバルスケールであるため、特定のカメラやシーンタイプで最も正確な絶対深度を得るには、自分のデータから作成した小規模なラベル付き分割で model.calibrate() を実行してください。組み込み済みの適合結果が置き換えられます。
データセット形式#
深度推定データセットでは、各 RGB 画像に、スケーリングされた uint16 深度 PNG またはメートル単位の浮動小数点 NPY 深度マップを対応付けます。PNG の値はデフォルトでミリメートル単位です。別の規約を使用するデータセットでは、YAML に depth_scale を設定します。ローダーは、images コンポーネントを depth に置き換えて深度パスを生成し、.png を優先して、利用できない場合は .npy にフォールバックします。
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/たとえば、images/train/scene_001.jpg にある画像には、depth/train/scene_001.png にある深度マップが対応します。形式の完全な仕様については、深度推定データセットガイドを参照してください。
検証#
深度推定データセットで、トレーニング済み 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つの高密度な浮動小数点深度マップが格納されます。
| 属性 | 型 | 形状 | 説明 |
|---|---|---|---|
result.depth | DepthMap | (H,W) | ピクセルごとの高密度深度マップです。 |
result.depth.data | torch.Tensor | (H,W) | 深度値はメートル単位です。NumPy の場合は .cpu().numpy() を呼び出してください。 |
result.boxes | - | - | インスタンスボックスはありません。 |
result.masks | - | - | インスタンスマスクはありません。 |
すべてのタスクにおけるタスク固有の Results フィールドについては、タスク別の予測結果セクションを参照してください。
深度マップのカラー化#
生の深度マップはメートル単位の単一チャネル浮動小数点配列です。計算には便利ですが、直接読み取るのは困難です。カラー画像に変換するには、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 |
| Apple Core AI | coreai | yolo26n-depth.aimodel | ✅ | imgsz、batch、quantize |
nms=None は、外部 NMS の場合は生出力をデフォルトとします。nms=False を設定して利用可能な NMS なしのヘッドを選択します。サポートされていないフォーマットは、ネイティブ出力パスにフォールバックします。上記の nms エントリは、nms=True を使用して NMS を埋め込むことができるフォーマットを特定します。
Exportページで、export の詳細をすべて確認できます。
FAQ#
対応する RGB 画像と、16ビット深度 PNG またはメートル単位の浮動小数点 NPY 深度マップを準備し、
images/ディレクトリを指すデータセット YAML を作成します。ローダーは、パス内のimagesをdepthに置き換えて深度ファイルを自動的に検出し、.pngを優先して、利用できない場合は.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, )その他に利用可能な引数については、Configurationページを確認してください。
深度推定の検証では、Depth Anything および関連する単眼深度研究で使用されるメトリクスセットが報告されます。
- delta1 / delta2 / delta3 — 予測深度とグラウンドトゥルース深度の比(またはその逆)が、それぞれ1.25、1.25²、1.25³未満となるピクセルの割合です。高いほど良好です。
- abs_rel — 平均絶対相対誤差です。低いほど良好です。
- rmse — メートル単位の二乗平均平方根誤差です。低いほど良好です。
- silog — スケール不変対数誤差です。低いほど良好です。
各予測は画像ごとにグラウンドトゥルースへ中央値アラインメントされ、その画像上で各メトリクスが確定されます。次に、画像ごとの結果が検証セット全体で平均されるため、有効な深度ピクセル数にかかわらず、すべての画像が同じ重みを持ちます。有効なグラウンドトゥルースピクセルが10個未満の画像はスキップされ、その平均には含まれません。少数のピクセルの中央値をアラインメントしても意味がないためです。一方、有限でない予測は深度境界値でスコアリングされます。これは、Depth Anything V2 で使用されるサンプル単位の平均化と10ピクセルの下限に一致します。
深度マップは、形状
(H, W)のtorch.Tensorとして格納されます。各値はメートル単位の予測深度です(NumPy のfloat32配列には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")さまざまな形式へのエクスポートの詳細については、Exportページを参照してください。