Ultralytics YOLO27:

TartanAir-Tiefendatensatz#

TartanAir ist ein groß angelegter synthetischer Datensatz, der im Simulator AirSim erzeugt wurde. Er wurde entwickelt, um die Grenzen des visuellen SLAM auszuloten, und umfasst vielfältige Umgebungen – Innenräume, Außenbereiche, Städte und Naturlandschaften – sowie unterschiedliche Jahreszeiten, Wetter- und Lichtverhältnisse und anspruchsvolle Bedingungen.

Da TartanAir in einer Simulation gerendert wird, bietet der Datensatz dichte Tiefen-Grundwahrheit für diese vielfältigen Szenen. Damit ist er eine wertvolle Quelle für Umweltvielfalt und Geometrie über große Entfernungen beim Training monokularer Modelle zur Tiefenschätzung.

Wichtige Funktionen#

  • Synthetische Daten, die im Simulator AirSim erzeugt wurden.
  • Vielfältige Innen- und Außenbereiche (Städte, Naturlandschaften) mit wechselnden Jahreszeiten, Wetter- und Lichtverhältnissen sowie anspruchsvollen Bedingungen.
  • Dichte Tiefen-Grundwahrheit in allen Szenen.
  • Tiefenbereich bis ~80 m.
  • Trägt 61.470 Bilder (55.660 Training / 5.810 Validierung) zum Tiefen-Trainingsmix von Ultralytics bei.

Datensatzstruktur#

Der TartanAir-Tiefendatensatz ist in zwei Teilmengen aufgeteilt:

  1. Training: 55.660 Bilder mit zugehörigen dichten Tiefenkarten für das Training.
  2. Validierung: 5.810 Bilder mit zugehörigen dichten Tiefenkarten zur Validierung während des Trainings.

Jedes RGB-Bild ist einer skalierten uint16-Tiefen-PNG-Datei mit 256 Einheiten pro Meter (depth_scale: 256) gemäß dem Ultralytics-Format für Tiefendatensätze zugeordnet. Damit wird der gesamte Tiefenbereich von 80 m mit einer Auflösung von 3,90625 mm abgebildet.

Daten beschaffen#

TartanAir wird nicht automatisch heruntergeladen – die Daten werden von CMU's AirLab bereitgestellt (Bedingungen findest du auf der Datensatzseite) und mit den Skripten von tartanair_tools heruntergeladen:

git clone https://github.com/castacks/tartanair_tools && cd tartanair_tools
python download_training.py --output-dir ./data --rgb --depth --only-left --unzip

Die Tiefe liegt bereits als float32-.npy in Metern vor (depth_left/*_left_depth.npy neben image_left/*_left.png), daher beschränkt sich die Konvertierung auf das Umordnen und das Ungültigmachen des Himmels (der als extreme Entfernung gerendert wird; der veröffentlichte Mix begrenzt die Werte auf 80 m, passend zur YAML-Datei des Datensatzes). TartanAir enthält keine offizielle Validierungsaufteilung – halte eine oder mehrere Umgebungen zurück. Eine Referenzkonvertierung in das Ultralytics-Format für Tiefendatensätze:

import shutil
from pathlib import Path

import numpy as np

from ultralytics.data.utils import save_depth_png

VAL_ENVS = {"neighborhood"}  # environments held out for validation
src, dst = Path("data"), Path("datasets/depth-tartanair")
for depth_file in sorted(src.rglob("depth_left/*_left_depth.npy")):
    env, level, traj = depth_file.parts[-5:-2]  # e.g. neighborhood, Easy, P000
    out = "val" if env.lower() in VAL_ENVS else "train"
    (dst / f"images/{out}").mkdir(parents=True, exist_ok=True)
    (dst / f"depth/{out}").mkdir(parents=True, exist_ok=True)
    depth = np.load(depth_file)
    depth[depth > 80.0] = 0.0  # sky/extreme range → 0 = invalid
    frame = depth_file.name.replace("_depth.npy", "")  # e.g. 000000_left
    name = f"{env}_{level}_{traj}_{frame}"  # Easy and Hard reuse trajectory names such as P000
    save_depth_png(dst / f"depth/{out}/{name}.png", depth, scale=256)
    shutil.copy(depth_file.parents[1] / "image_left" / f"{frame}.png", dst / f"images/{out}/{name}.png")

Rolle in YOLO26-Depth#

TartanAir ist eine der Trainingsquellen im umfangreichen Multi-Datensatz-Mix (~2.19M Bilder), der zum Vortrainieren der Ultralytics-YOLO26-Depth-Modelle verwendet wird. In diesem Mix steuert TartanAir synthetische Umweltvielfalt und Geometrie im Außenbereich über große Entfernungen bei und ergänzt damit Innenraum- und reale Datenquellen.

In dieser Konfiguration gibt es keinen eigenständigen TartanAir-Benchmark mit zurückgehaltenen Daten. Stattdessen werden die resultierenden Modelle anhand der Standardbenchmarks für monokulare Tiefenschätzung evaluiert: NYU Depth V2, KITTI, Make3D, ETH3D und iBims-1.

YAML-Datei des Datensatzes#

Eine YAML-Datei dient zum Festlegen der Datensatzkonfiguration. Sie enthält Informationen zu den Pfaden, Klassen und weiteren relevanten Angaben des Datensatzes. Für TartanAir legt die Datei depth-tartanair.yaml die Pfade und die einzige Klasse depth fest.

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

# TartanAir dataset for monocular depth estimation — synthetic indoor + outdoor (AirSim), dense depth up to ~80 m
# Documentation: https://docs.ultralytics.com/datasets/depth/tartanair
# Example usage: yolo depth train data=depth-tartanair.yaml model=yolo26n-depth.pt
# No autodownload — obtain the source data (see docs) and arrange it as below.
# parent
# ├── ultralytics
# └── datasets
#     └── depth-tartanair
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)

path: depth-tartanair # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 55660 images
val: images/val # val images (relative to 'path') 5810 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

Verwendung#

Um ein YOLO26n-Depth-Modell mit einer Bildgröße von 640 auf dem TartanAir-Datensatz 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 Modell laden (für das Training empfohlen)

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

Vortrainierte Modelle#

Die YOLO26-Tiefenmodellfamilie (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) wird automatisch aus den Ultralytics-Veröffentlichungen heruntergeladen und mit dem umfangreichen Multi-Datensatz-Mix trainiert, zu dem TartanAir gehört. Entdecke YOLO26x-depth auf der Ultralytics Platform.

Zitate und Danksagungen#

Wenn du den TartanAir-Datensatz in deiner Forschung oder Entwicklungsarbeit verwendest, zitiere bitte die folgende Veröffentlichung:

Zitat
@inproceedings{wang2020tartanair,
      title={TartanAir: A Dataset to Push the Limits of Visual SLAM},
      author={Wenshan Wang and Delong Zhu and Xiangwei Wang and Yaoyu Hu and Yuheng Qiu and Chen Wang and Yafei Hu and Ashish Kapoor and Sebastian Scherer},
      booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
      year={2020}
}

Wir möchten den Erstellern von TartanAir dafür danken, dass sie diesen vielfältigen synthetischen Datensatz der Computer-Vision-Community zur Verfügung stellen.

Häufig gestellte Fragen#

  • TartanAir ist ein großer synthetischer Datensatz, der im Simulator AirSim gerendert wurde und ursprünglich dafür entwickelt wurde, visuelles SLAM auf die Probe zu stellen. Er umfasst Innenräume, Außenbereiche, Städte und Naturlandschaften unter unterschiedlichen Jahreszeiten, Wetter- und Lichtverhältnissen und steuert 61.470 Bilder (55.660 Training, 5.810 Validierung) mit dichter Tiefe bis zu etwa 80 m zum YOLO26-Depth-Trainingsmix bei.

  • TartanAir wird nicht automatisch heruntergeladen. Lade die RGB- und Tiefendaten mit den Skripten von tartanair_tools herunter und konvertiere anschließend die float32-Tiefe .npy in Metern mit depth_scale: 256 in uint16-PNG-Dateien. Begrenze dabei Himmelspixel jenseits von 80 m auf 0. Halte eine oder mehrere Umgebungen zur Validierung zurück, wie unter Daten beschaffen gezeigt.

  • Führe yolo depth train data=depth-tartanair.yaml model=yolo26n-depth.pt epochs=100 imgsz=640 aus oder verwende das Python-Beispiel im Abschnitt Verwendung. Auf der Seite zum Training findest du alle verfügbaren Argumente.

Kommentare