Sicherheit auf Unternehmensebene: ISO 27001 + SOC 2 Typ I konform.

Link to this sectionÜ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 Tiefenkarte pro Pixel, die als .npy float32-Array gespeichert wird. Jeder Wert stellt den Abstand von der Kamera zum entsprechenden Punkt in der Szene dar.

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.

Link to this sectionUnterstütztes Datensatzformat#

Link to this sectionNPY 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 die entsprechende Bilddatei haben (z. B. scene_001.npy gehört zu 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 einer Tiefe von ≤ 0 werden als ungültig behandelt und von der Berechnung des Verlusts und der Metriken ausgeschlossen.

Das Standardlayout bewahrt Bilder und Tiefenkarten in parallelen Ordnern auf:

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

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

Link to this sectionDatensatz-YAML-Format#

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

SchlüsselBeschreibung
pathStammverzeichnis des Datensatzes.
trainPfad zu den Trainingsbildern relativ zu path oder ein absoluter Pfad.
valPfad zu den Validierungsbildern relativ zu path oder ein absoluter Pfad.
testOptionaler Pfad zu Testbildern.
ncAnzahl der Klassen – für die Tiefenschätzung immer 1.
namesKlassennamen-Mapping – 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

Link to this sectionVerwendung#

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)

Link to this sectionUnterstü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 Tests der Pipeline

Vortrainingsquellen

  • ARKitScenes – reale Innenaufnahmen, Apple ARKit LiDAR (die größte reale Quelle)
  • SUN RGB-D – reale Innenaufnahmen, Multisensor RGB-D
  • DIODE – reale Innen- und Außenaufnahmen, dichte Ground Truth per Laserscanner
  • Hypersim – synthetische fotorealistische Innenaufnahmen
  • TartanAir – synthetisch, diverse Umgebungen
  • Virtual KITTI 2 – synthetische Außenaufnahmen beim Fahren
  • KITTI – reale Außenaufnahmen beim Fahren, Velodyne LiDAR (auch ein Evaluations-Benchmark)
  • ImageNet (pseudo-labeled) – pseudo-gelabelter Destillationsdatensatz, die größte Einzelquelle

Evaluations-Benchmarks

  • NYU Depth V2 – primärer Innenraum-Benchmark
  • KITTI Eigen – Benchmark für Außenaufnahmen beim Fahren
  • ETH3D – hochpräzise Innen- und Außenaufnahmen
  • Make3D – Außenaufnahmen, Out-of-Distribution
  • iBims-1 – hochwertige Innenaufnahmen (Kanten und planare Flächen)

Die Genauigkeit pro Modell auf diesen Benchmarks und die herunterladbaren vortrainierten Gewichte sind auf der Seite zur Tiefenschätzungs-Aufgabe aufgeführt. Ein Datensatz-YAML, dessen train-Feld mehrere Bildverzeichnisse auflistet, kombiniert diese Quellen für groß angelegtes gemischtes Training.

Link to this sectionHinzufügen deines eigenen Datensatzes#

  1. Speichere RGB-Bilder unter Unterordnern wie images/train und images/val.
  2. Speichere eine .npy float32 Tiefen-Array pro Bild unter den entsprechenden depth/train und depth/val Ordnern unter Verwendung desselben Dateinamensstamms wie beim Bild.
  3. Stelle sicher, dass die Tiefenwerte in Metern angegeben sind und dass ungültige oder fehlende Pixel 0 oder negative Werte verwenden.
  4. Erstelle ein Datensatz-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

Link to this sectionFAQ#

Link to this sectionWelches Dateiformat sollten Tiefenkarten verwenden?#

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 Float-Arrays.

Link to this sectionWie wird mit ungültigen Tiefenpixeln umgegangen?#

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

Link to this sectionWelche Metriken werden für die Evaluierung verwendet?#

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 – Root Mean Squared Error (Wurzel aus dem mittleren quadratischen Fehler) in Metern. Niedriger ist besser.
  • silog – Skaleninvarianter logarithmischer Fehler. Niedriger ist besser.

Link to this sectionMüssen die Dateinamen der Tiefendateien mit den Dateinamen der Bilder übereinstimmen?#

Ja. Jede Tiefen-.npy-Datei muss denselben Stamm wie das entsprechende Bild haben. Der Loader leitet den Tiefenpfad ab, indem er die images-Verzeichniskomponente durch depth ersetzt und die Bilddateiendung durch .npy ersetzt. Bilder, deren Tiefendatei fehlt oder nicht lesbar ist, werden während des (gecachten) Datenscan-Vorgangs mit einer Warnung verworfen, genau wie korrupte Bilder; wenn überhaupt keine gültigen Bild-Tiefen-Paare gefunden werden, wird ein Fehler ausgelöst.

Mitwirkende

Kommentare