Ultralytics YOLO27:

DIODE-Tiefendatensatz#

DIODE (Dense Indoor/Outdoor DEpth) ist ein realer Datensatz mit sehr hochwertigen, dichten Tiefenreferenzdaten, die mit einem FARO Focus-Laserscanner in Vermessungsqualität erfasst wurden. Ein besonderes Merkmal ist, dass der Datensatz Innen- und Außenszenen mit demselben Sensor abdeckt. Damit bildet er für die monokulare Tiefenschätzung eine hochpräzise Brücke zwischen kurzen Tiefenbereichen in Innenräumen und großen Tiefenbereichen im Freien.

Wichtige Funktionen#

  • Sehr hochwertige dichte Tiefenreferenzdaten, aufgenommen mit einem FARO Focus-Laserscanner in Vermessungsqualität.
  • Deckt Innen- und Außenszenen ab, die mit demselben Sensor aufgenommen wurden.
  • Der Tiefenbereich reicht von kurzen Entfernungen in Innenräumen bis zu großen Entfernungen im Freien und beträgt im Ultralytics-Mix bis zu etwa 80 m.
  • Dichte, genaue Referenzdaten für jedes Pixel, abgestimmt auf die RGB-Bilder.
  • Liefert hochpräzise, dichte Referenzdaten und verbindet damit die Bereiche Innenräume und Außenbereiche.

Datensatzstruktur#

Der DIODE-Tiefendatensatz ist in zwei Teilmengen aufgeteilt:

  1. Train: 25.458 Bilder mit zugehörigen Tiefenkarten für das Training.
  2. Val: 771 Bilder mit zugehörigen Tiefenkarten für die Validierung während des Modelltrainings.

Jedes Sample besteht aus einem RGB-Bild und einer zugehörigen uint16-Tiefen-PNG-Datei mit 256 Einheiten pro Meter (depth_scale: 256) gemäß dem Tiefendatensatzformat von Ultralytics. Das ermöglicht eine Auflösung von 3,90625 mm bei gleichzeitiger Abdeckung des gesamten Außenbereichs bis 80 m. Die YAML-Datei des Datensatzes lädt die offiziellen DIODE-Archive (~84 GB) herunter und konvertiert sie bei der ersten Verwendung automatisch in dieses Format.

Rolle in YOLO26-Depth#

DIODE ist eine Trainingsquelle im Multi-Datensatz-Vortrainingsmix für Ultralytics YOLO26-Depth, der etwa 2,19 Mio. Bild-Tiefen-Paare umfasst. Der Datensatz liefert hochpräzise, dichte Referenzdaten, die Innen- und Außenbereiche mit einem einzigen Sensor abdecken und dem Modell helfen, sowohl auf Szenen mit kurzer als auch mit großer Reichweite zu verallgemeinern. Die resultierenden Modelle werden anhand der Standard-Benchmarks NYU, KITTI, Make3D, ETH3D und iBims-1 bewertet.

YAML-Datei des Datensatzes#

Eine YAML-Datei legt die Dataset-Konfiguration fest. Sie enthält Angaben zu den Pfaden, Klassen und weiteren relevanten Informationen des Datensatzes.

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")

Verwendung#

Um ein YOLO26n-depth-Modell mit einer Bildgröße von 640 auf dem Datensatz DIODE zu trainieren, kannst du die folgenden Codebeispiele verwenden. Eine vollständige Liste der verfügbaren Argumente findest du auf der Seite zum Training des Modells.

Trainingsbeispiel
from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n-depth.pt")  # Ein vortrainiertes Tiefenmodell laden (für das Training empfohlen)

# Das Modell trainieren
results = model.train(data="depth-diode.yaml", epochs=100, imgsz=640)

Vortrainierte Modelle#

Die YOLO26-Tiefenmodellfamilie wird mit dem umfangreichen Multi-Datensatz-Tiefen-Vortrainingsmix trainiert, zu dem auch DIODE gehört. Diese Modelle werden bei der ersten Verwendung automatisch aus der Ultralytics-Version v8.4.0 assets release heruntergeladen, zum Beispiel YOLO26x-depth. Es gibt sie in verschiedenen Größen für unterschiedliche Genauigkeits- und Ressourcenanforderungen.

Zitate und Danksagungen#

Wenn du den Datensatz DIODE für deine Forschungs- oder Entwicklungsarbeit verwendest, zitiere bitte die folgende Arbeit:

Zitat
@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}
}

Wir möchten den Autorinnen und Autoren dafür danken, dass sie diese wertvolle Ressource für die Bildverarbeitungsgemeinschaft erstellt haben und pflegen.

Häufig gestellte Fragen#

  • DIODE erfasst Innen- und Außenszenen mit demselben FARO Focus-Laserscanner in Vermessungsqualität und liefert sehr dichte und genaue Tiefenreferenzdaten für kurze Entfernungen in Innenräumen und große Entfernungen im Freien. Diese Abdeckung mit einem einzigen Sensor bildet im YOLO26-Depth-Trainingsmix eine hochpräzise Brücke zwischen Innen- und Außenbereichen.

  • Die Ultralytics-Konfiguration umfasst 25.458 Trainings- und 771 Validierungs-Bild-Tiefen-Paare. Die Tiefenwerte werden in uint16-PNG-Dateien mit 256 Einheiten pro Meter gespeichert (depth_scale: 256). Das ermöglicht eine Auflösung von 3,9 mm und deckt gleichzeitig den gesamten Außenbereich bis 80 m ab, wie im Tiefendatensatzformat von Ultralytics beschrieben.

  • Lade einen vortrainierten Tiefen-Checkpoint und verweise mit data auf die mitgelieferte YAML-Datei, zum Beispiel yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. Im Abschnitt Verwendung findest du das entsprechende Beispiel in Python und auf der Seite zum Training alle Argumente.

Kommentare