Ultralytics YOLO27:

DIODE深度データセット#

DIODE(高密度屋内・屋外深度)は、FARO Focusの測量グレードレーザースキャナーで取得された非常に高品質な高密度深度グラウンドトゥルースを備えた実世界データセットです。特に、同じセンサーで屋内と屋外の両方のシーンをカバーしているため、単眼深度推定における近距離の屋内深度と遠距離の屋外深度をつなぐ高精度な橋渡しとなります。

主な特徴#

  • FARO Focusの測量グレードレーザースキャナーによる非常に高品質な高密度深度グラウンドトゥルースです。
  • 同じセンサーで撮影された屋内と屋外の両方のシーンをカバーします。
  • 深度範囲は屋内の短距離から屋外の長距離まで広がり、Ultralyticsのミックスでは約80 mに達します。
  • RGBフレームに位置合わせされた、高密度で正確なピクセル単位のグラウンドトゥルースです。
  • 屋内と屋外のドメインを橋渡しする、高精度で高密度なグラウンドトゥルースを提供します。

データセットの構成#

DIODE深度データセットは、次の2つのサブセットに分割されています。

  1. Train: 学習用の深度マップがペアになった25,458枚の画像です。
  2. Val: モデル学習中の検証用に、深度マップがペアになった771枚の画像です。

各サンプルは、1枚のRGB画像と、1メートルあたり256単位のuint16深度PNG(depth_scale: 256)で構成され、Ultralytics深度データセット形式に従います。これにより、3.90625 mmの解像度を実現しながら、屋外の最大80 mの範囲全体を表現できます。

YOLO26-Depthにおける役割#

DIODEは、約219万の画像・深度ペアから成るUltralytics YOLO26-Depthのマルチデータセット事前学習ミックスにおける学習ソースです。単一のセンサーで屋内と屋外のドメインを橋渡しする高精度で高密度なグラウンドトゥルースを提供し、モデルが近距離と遠距離の両方のシーンに対して汎化するのに役立ちます。生成されたモデルは、標準的なNYU、KITTI、Make3D、ETH3D、iBims-1ベンチマークで評価されます。

データセット YAML#

データセット設定の定義にはYAMLファイルを使用します。データセットのパス、クラス、およびその他の関連情報が含まれています。

ultralytics/cfg/datasets/depth-diode.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DIODE dataset for monocular depth estimation — real indoor + outdoor, FARO Focus survey-grade laser, depth up to ~80 m
# Documentation: https://docs.ultralytics.com/datasets/depth/diode
# Example usage: yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── depth-diode  ← downloads here (84 GB archives, ~90 GB converted)
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)
# If an interrupted download leaves a partial dataset, delete the depth-diode dir and re-run to rebuild it.

path: depth-diode # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 25458 images
val: images/val # val images (relative to 'path') 771 images
max_depth: 80 # (m) maximum valid depth; GT beyond this is excluded from val metrics

nc: 1
names:
  0: depth

channels: 3
depth_scale: 256 # PNG value 256 = 1 meter; represents the 80 m outdoor range

# Download script/URL (optional)
download: |
  import shutil
  from pathlib import Path

  import numpy as np

  from ultralytics.data.utils import save_depth_png
  from ultralytics.utils import TQDM
  from ultralytics.utils.downloads import download

  # Download and extract the official archives (train ~81 GB, val ~2.6 GB), then convert:
  # flatten <split>/<scene>/<scan>/*.png into images/<split>/ and save the paired *_depth.npy
  # (masked invalid -> 0, clipped at 80 m) as depth/<split>/*.png
  dir = Path(yaml["path"])  # dataset root dir
  download([f"https://diode-dataset.s3.amazonaws.com/{s}.tar.gz" for s in ("train", "val")], dir=dir / "source", delete=True)
  for split in ("train", "val"):
      (dir / "images" / split).mkdir(parents=True, exist_ok=True)
      (dir / "depth" / split).mkdir(parents=True, exist_ok=True)
      for im in TQDM(sorted((dir / "source" / split).rglob("*.png")), desc=f"Converting {split}"):
          name = "_".join(im.relative_to(dir / "source").parts)  # train/indoors/scene/scan/x.png -> train_indoors_scene_scan_x.png
          depth = np.load(im.with_name(f"{im.stem}_depth.npy")).squeeze().astype(np.float32)
          depth[np.load(im.with_name(f"{im.stem}_depth_mask.npy")) == 0] = 0.0  # zero out invalid pixels
          save_depth_png(dir / "depth" / split / f"{name[:-4]}.png", depth.clip(max=80), scale=256)
          im.replace(dir / "images" / split / name)
  shutil.rmtree(dir / "source")

使用方法#

画像サイズ640でDIODEデータセット上のYOLO26n-depthモデルを学習するには、次のコードスニペットを使用できます。利用可能な引数の包括的な一覧については、モデルのTrainingページを参照してください。

トレーニング例
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load a pretrained depth model (recommended for training)

# Train the model
results = model.train(data="depth-diode.yaml", epochs=100, imgsz=640)

事前トレーニング済みモデル#

YOLO26深度ファミリーは、DIODEが含まれる広範なマルチデータセット深度事前学習ミックスで学習されます。これらのモデルは最新のUltralyticsリリースから自動的にダウンロードされます。例えば、v8.4.0のYOLO26x-depthなどがあり、精度とリソース要件に応じたさまざまなサイズが用意されています。

引用と謝辞#

研究または開発でDIODEデータセットを使用する場合は、次の論文を引用してください。

引用
@article{vasiljevic2019diode,
      title={DIODE: A Dense Indoor and Outdoor DEpth Dataset},
      author={Vasiljevic, Igor and Kolkin, Nick and Zhang, Shanyi and Luo, Ruotian and Wang, Haochen and Dai, Falcon Z. and Daniele, Andrea F. and Mostajabi, Mohammadreza and Basart, Steven and Walter, Matthew R. and Shakhnarovich, Gregory},
      journal={arXiv preprint arXiv:1908.00463},
      year={2019}
}

コンピュータビジョンコミュニティにこの貴重なリソースを作成し、維持してくださった著者の皆様に謝意を表します。

FAQ#

  • DIODEは、同じFARO Focus測量グレードのレーザースキャナを使用して屋内と屋外の両方のシーンを捉え、短い屋内範囲から長い屋外範囲にわたって非常に高密度かつ高精度な深度グラウンドトゥルースを生成します。この単一センサーによるカバレッジにより、YOLO26-Depthのトレーニングミックスにおける屋内ドメインと屋外ドメインの高精度な架け橋となります。

  • Ultralyticsの構成では、25,458件のトレーニング用および771件の検証用の画像と深度のペアが提供されます。深度は、1メートルあたり256単位のuint16 PNGとして保存され(depth_scale: 256)、Ultralytics depth dataset formatで説明されている80mの屋外全範囲をカバーしながら、3.9mmの解像度を維持します。

  • 事前学習済みの深度チェックポイントをロードし、バンドルされたYAMLにdataを指定します(例:yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640)。PythonのコードについてはUsageセクションを、すべての引数についてはTrainingページを参照してください。

コメント