YOLO Vision 2026:

Übersicht über Datensätze zur Tiefenschätzung#

Die monokulare Tiefenschätzung weist jedem Pixel in einem Bild einen Gleitkomma-Tiefenwert in Metern zu. Das Trainingsziel ist eine dichte Pixel-Tiefenkarte, die als .npy float32-Array gespeichert ist. Jeder Wert repräsentiert die Entfernung von der Kamera zum entsprechenden Szenenpunkt.

Dieser Leitfaden erläutert das von Ultralytics YOLO Tiefenschätzungsmodellen verwendete Datensatzformat und listet die integrierten Datensatzkonfigurationen auf, die für Training und Validierung verfügbar sind.

Unterstütztes Datensatzformat#

NPY Tiefenkartenformat#

Jedes Trainingsbeispiel besteht aus einem RGB-Bild und einer zugehörigen .npy Tiefendatei. Die Tiefendatei speichert ein 2D-float32-NumPy-Array mit der Form (H, W), wobei die Werte Tiefen in Metern sind.

  • Tiefendateien müssen die Endung .npy verwenden und ein float32-Array enthalten.
  • Jede Tiefendatei sollte denselben Dateinamenstamm wie ihre zugehörige Bilddatei haben (z. B. paart sich scene_001.npy mit scene_001.jpg).
  • Der Datensatz-Loader findet Tiefendateien, indem er die Verzeichniskomponente images im Dateipfad durch depth ersetzt und die Bilddateiendung gegen .npy austauscht.
  • Pixel mit der Tiefe ≤ 0 werden als ungültig behandelt und von der Verlust- und Metrikberechnung ausgeschlossen.

Das Standardlayout bewahrt Bilder und Tiefenkarten in parallelen Ordnern auf:

dataset/
├── images/
│   ├── train/
│   └── val/
└── depth/
    ├── train/
    └── val/

Beispielsweise wird ein Bild unter images/train/scene_001.jpg mit einer Tiefenkarte unter depth/train/scene_001.npy gepaart.

Datensatz-YAML-Format#

Datensätze zur Tiefenschätzung werden mit YAML-Dateien konfiguriert. Die wichtigsten Felder sind:

SchlüsselBeschreibung
pathStammverzeichnis des Datensatzes.
trainPfad des Trainingsbildes relativ zu path oder ein absoluter Pfad.
valPfad des Validierungsbildes relativ zu path oder ein absoluter Pfad.
testOptionaler Pfad zu Testbildern.
ncAnzahl der Klassen — für die Tiefenschätzung immer 1.
namesKlassennamen-Zuordnung — immer {0: depth}.
ultralytics/cfg/datasets/nyu-depth.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html
# 795 train + 654 val (Eigen test split) images, 480x640, indoor scenes, depth in meters
# Example usage: yolo depth train data=nyu-depth.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── nyu-depth  ← downloads here (≈1.5 GB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: nyu-depth # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 795 images
val: images/val # val images (relative to 'path') 654 images

# Depth maps are paired .npy files (float32, meters) under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.

# Classes
nc: 1
names:
  0: depth

channels: 3

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth.zip

Verwendung#

Trainiere ein YOLO26 Tiefenschätzungsmodell mit Python oder CLI:

Beispiel
from ultralytics import YOLO

# Load a pretrained depth model
model = YOLO("yolo26n-depth.pt")

# Train on the NYU Depth V2 dataset
results = model.train(data="nyu-depth.yaml", epochs=100, imgsz=640)

Unterstützte Datensätze#

Die YOLO26 Tiefenmodelle sind auf einem breiten Mix aus mehreren Datensätzen (~2,19 Mio. Bilder) vortrainiert, die von Innenräumen (≤10 m) bis zu Außenbereichen (~80 m) reichen, und wurden dann Zero-Shot auf fünf Benchmarks evaluiert. Jeder Datensatz hat eine eigene Seite:

Debugging

  • Depth8 — 8 SUN RGB-D-Bilder in einem 1,3 MB großen, automatisch herunterladbaren Archiv für schnelle Pipeline-Tests

Vortrainingsquellen

  • ARKitScenes — reale Innenaufnahmen, Apple ARKit LiDAR (größte reale Quelle)
  • SUN RGB-D — reale Innenaufnahmen, Multi-Sensor-RGB-D
  • DIODE — reale Innen- und Außenaufnahmen, Ground Truth durch dichten Laserscanner
  • Hypersim — synthetische, fotorealistische Innenaufnahmen
  • TartanAir — synthetisch, diverse Umgebungen
  • Virtual KITTI 2 — synthetisches Fahren im Freien
  • KITTI — reales Fahren im Freien, Velodyne LiDAR (auch ein Evaluierungs-Benchmark)
  • ImageNet (pseudo-labeled) — pseudo-label-Distillationsset, die größte einzelne Quelle

Evaluations-Benchmarks

  • NYU Depth V2 — wichtigster Indoor-Benchmark
  • KITTI Eigen — Outdoor-Fahr-Benchmark
  • ETH3D — hochpräzise Innen- und Außenbereiche
  • Make3D — Outdoor, Out-of-Distribution
  • iBims-1 — hochwertiger Indoor-Bereich (Kanten und ebene Flächen)

Modellspezifische Genauigkeiten auf diesen Benchmarks sowie die herunterladbaren vortrainierten Gewichte sind auf der Depth Estimation task page aufgeführt. Eine Dataset-YAML, deren train-Feld mehrere Bildverzeichnisse auflistet, kombiniert diese Quellen für ein großflächiges, gemischtes Training.

Hinzufügen deines eigenen Datensatzes#

  1. Speichere RGB-Bilder in Unterteilungsordnern wie images/train und images/val.
  2. Speichere pro Bild ein .npy float32-Tiefenarray unter den passenden Ordnern depth/train und depth/val ab und verwende dabei denselben Dateinamenstamm wie beim Bild.
  3. Stelle sicher, dass Tiefenwerte in Metern vorliegen und dass für ungültige oder fehlende Pixel 0 oder negative Werte verwendet werden.
  4. Erstelle ein Dataset-YAML mit path, train, val, nc: 1 und names: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val

nc: 1
names:
    0: depth

FAQ#

  • Tiefenkarten müssen als NumPy .npy-Dateien gespeichert werden, die float32-Arrays der Form (H, W) enthalten. Jedes Element speichert die Tiefe in Metern für das entsprechende Bildpixel. Verwende keine PNG- oder 16-Bit-Integer-Formate – der Loader erwartet rohe Gleitkomma-Arrays.

  • Pixel mit Tiefenwerten ≤ 0 werden als ungültig behandelt und sowohl bei der Verlustberechnung als auch bei der Metrikauswertung maskiert. Dies deckt Sensormuscheln bzw. -rauschen, Himmelsregionen und reflektierende Oberflächen ab, bei denen die Tiefe nicht zuverlässig gemessen werden kann.

  • Die Validierung der Tiefenschätzung berichtet das Standard-Metrik-Set von Depth Anything:

    • delta1 / delta2 / delta3 – Prozentsatz der Pixel innerhalb der Schwellenwerte 1,25×, 1,25²×, 1,25³×. Höher ist besser.
    • abs_rel — mittlerer absoluter relativer Fehler. Niedriger ist besser.
    • rmse — Wurzel aus dem mittleren quadratischen Fehler in Metern. Niedriger ist besser.
    • silog — skaleninvarianter logarithmischer Fehler. Niedriger ist besser.
  • Ja. Jede Tiefen-.npy-Datei muss denselben Stamm wie das entsprechende Bild haben. Der Loader leitet den Tiefenpfad ab, indem er die Verzeichniskomponente images durch depth ersetzt und die Bilddateiendung gegen .npy austauscht. Bilder, deren Tiefendatei fehlt oder nicht lesbar ist, werden während des (zwischengespeicherten) Datensatz-Scans unter Ausgabe einer Warnung verworfen, genau wie korrupte Bilder; wenn überhaupt keine gültigen Bild-Tiefen-Paare gefunden werden, wird ein Fehler ausgelöst.

Mitwirkende

Kommentare