DIODE深度データセット#
DIODE(高密度な屋内/屋外深度データ)は、測量用グレードのFARO Focusレーザースキャナーで取得した、非常に高品質で密な深度グラウンドトゥルースを持つ実世界データセットです。同一のセンサーで屋内と屋外の両方のシーンをカバーする独自の特徴があり、単眼深度推定において、短距離の屋内深度と長距離の屋外深度をつなぐ高精度なデータセットです。
主な機能#
- 測量用グレードのFARO Focusレーザースキャナーで取得した、非常に高品質で密な深度グラウンドトゥルースです。
- 同一のセンサーで撮影された屋内と屋外の両方のシーンをカバーします。
- 深度範囲は短距離の屋内から長距離の屋外まで広がり、Ultralyticsのミックスでは約80 mに達します。
- RGBフレームに位置合わせされた、高密度で正確なピクセル単位のグラウンドトゥルースです。
- 屋内と屋外のドメインをつなぐ、高精度で密なグラウンドトゥルースを提供します。
データセットの構成#
DIODE深度データセットは、次の2つのサブセットに分かれています。
- Train: トレーニング用の、深度マップとペアになった画像が25,458枚あります。
- Val: モデルのトレーニング中の検証用に、深度マップとペアになった画像が771枚あります。
各サンプルは、1メートルあたり256単位のuint16深度PNG(depth_scale: 256)とRGB画像1枚のペアで構成されており、Ultralytics深度データセット形式に準拠しています。これにより、屋外の全深度範囲80 mを表現しながら、3.90625 mmの解像度を実現します。データセットYAMLは、公式のDIODEアーカイブ(約84 GB)をダウンロードし、初回使用時にこの構成へ自動変換します。
YOLO26-Depthにおける役割#
DIODEは、約219万組の画像・深度ペアからなるUltralytics YOLO26-Depthの複数データセット事前学習ミックスにおけるトレーニングソースです。単一のセンサーで屋内と屋外のドメインをつなぐ、高精度で密なグラウンドトゥルースを提供し、短距離と長距離の両方のシーンに対するモデルの汎化を助けます。作成されたモデルは、標準的なNYU、KITTI、Make3D、ETH3D、iBims-1ベンチマークで評価されます。
データセットYAML#
データセット設定の定義には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モデルをトレーニングするには、以下のコードスニペットを使用できます。使用可能な引数の一覧については、モデルのトレーニングページを参照してください。
from ultralytics import YOLO
# モデルを読み込む
model = YOLO("yolo26n-depth.pt") # 事前学習済みの深度モデルを読み込む(トレーニングに推奨)
# モデルをトレーニングする
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}
}コンピュータビジョンコミュニティにとって価値あるこのリソースを作成し、維持している著者の皆様に感謝いたします。
よくある質問#
DIODEは、測量用グレードのFARO Focusレーザースキャナーを使って屋内と屋外の両方のシーンを撮影し、短距離の屋内から長距離の屋外まで、非常に密で正確な深度グラウンドトゥルースを生成します。この単一センサーによるカバレッジにより、YOLO26-Depthのトレーニングミックスにおいて、屋内と屋外のドメインをつなぐ高精度なデータセットとなっています。
Ultralyticsの設定には、トレーニング用の画像・深度ペアが25,458組、検証用が771組含まれています。深度は1メートルあたり256単位のuint16 PNG(
depth_scale: 256)で保存され、Ultralytics深度データセット形式で説明されている屋外の全範囲80 mをカバーしながら、3.9 mmの解像度を維持します。