Ultralytics YOLO27:
Get Started

Virtual KITTI 2-Tiefendatensatz#

Virtual KITTI 2 (vKITTI2) ist eine fotorealistische synthetische Nachbildung der KITTI-Fahrszenen. Der Datensatz übernimmt 5 Sequenzen aus dem ursprünglichen KITTI-Datensatz und rendert sie bei unterschiedlichen Wetter- und Lichtverhältnissen neu, wodurch dichte Grundwahrheit für jedes Pixel bereitgestellt wird.

Als synthetischer Datensatz für Fahrten im Außenbereich bietet vKITTI2 eine dichte Ergänzung zu den spärlichen realen KITTI-LiDAR-Messungen und ist damit eine nützliche Quelle sauberer Geometriedaten für Fahrten im Außenbereich beim Training monokularer Modelle zur Tiefenschätzung.

Wichtige Funktionen#

  • Fotorealistische synthetische Nachbildung von KITTI-Fahrszenen.
  • 5 übernommene Sequenzen, neu gerendert bei unterschiedlichen Wetter- und Lichtverhältnissen.
  • Umgebungen für Fahrten im Außenbereich.
  • Dichte Grundwahrheit für jedes Pixel (eine dichte Ergänzung zur spärlichen realen KITTI-LiDAR-Grundwahrheit).
  • Tiefenbereich ~80 m.
  • Trägt 42.520 Bilder (25.780 Training / 16.740 Validierung) zum Tiefen-Trainingsmix von Ultralytics bei.

Datensatzstruktur#

Der Virtual KITTI 2-Tiefendatensatz ist in zwei Teilmengen aufgeteilt:

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

Jedes RGB-Bild ist gemäß dem Ultralytics-Format für Tiefendatensätze einer skalierten uint16-Tiefen-PNG-Datei zugeordnet. Die Quelldaten und die konvertierten PNG-Dateien verwenden Zentimeter (depth_scale: 100), wodurch der Trainingsbereich von 80 m erhalten bleibt. Die YAML-Datei des Datensatzes lädt die Quellarchive (~15 GB) herunter und konvertiert sie bei der ersten Verwendung automatisch.

Rolle in YOLO26-Depth#

Virtual KITTI 2 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 bietet vKITTI2 eine dichte synthetische Ergänzung für Fahrten im Außenbereich zur spärlichen realen KITTI-LiDAR-Grundwahrheit.

In dieser Konfiguration gibt es keinen eigenständigen vKITTI2-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 Virtual KITTI 2 legt die Datei depth-vkitti2.yaml die Pfade und die einzige Klasse depth fest.

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

# Virtual KITTI 2 dataset for monocular depth estimation — photorealistic synthetic outdoor driving, dense per-pixel depth
# Documentation: https://docs.ultralytics.com/datasets/depth/vkitti2
# Example usage: yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── depth-vkitti2  ← downloads here (15 GB archives, ~85 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-vkitti2 dir and re-run to rebuild it.

path: depth-vkitti2 # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 25780 images
val: images/val # val images (relative to 'path') 16740 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: 100 # source PNG value 100 = 1 meter (centimeters)

# Download script/URL (optional)
download: |
  import shutil
  from pathlib import Path

  import cv2
  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 RGB + depth tars (~15 GB), then convert: Scene20 -> val, all
  # other scenes -> train; depth PNGs are uint16 centimeters (sky = 655.35 m), clipped at 80 m
  dir = Path(yaml["path"])  # dataset root dir
  urls = [f"https://download.europe.naverlabs.com/virtual_kitti_2.0.3/vkitti_2.0.3_{s}.tar" for s in ("rgb", "depth")]
  download(urls, 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").rglob("rgb_*.jpg")), desc="Converting"):
      scene, variation, camera = im.parts[-6], im.parts[-5], im.parts[-2]  # Scene01/clone/frames/rgb/Camera_0/rgb_00000.jpg
      split = "val" if scene == "Scene20" else "train"
      name = f"{scene}_{variation}_{camera}_{im.stem[4:]}"
      depth = cv2.imread(str(im.parents[2] / "depth" / camera / f"depth_{im.stem[4:]}.png"), cv2.IMREAD_ANYDEPTH)
      save_depth_png(dir / "depth" / split / f"{name}.png", (depth.astype(np.float32) / 100.0).clip(max=80), scale=100)  # cm -> m -> cm PNG
      im.replace(dir / "images" / split / f"{name}.jpg")
  shutil.rmtree(dir / "source")

Verwendung#

Um ein YOLO26n-Depth-Modell mit einer Bildgröße von 640 auf dem Virtual KITTI 2-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-vkitti2.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 Virtual KITTI 2 gehört. Entdecke YOLO26x-depth auf der Ultralytics Platform.

Zitate und Danksagungen#

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

Zitat
@article{cabon2020vkitti2,
      title={Virtual KITTI 2},
      author={Yohann Cabon and Naila Murray and Martin Humenberger},
      journal={arXiv preprint arXiv:2001.10773},
      year={2020}
}

Wir möchten den Erstellern von Virtual KITTI 2 dafür danken, dass sie diesen synthetischen Fahrdatensatz der Computer-Vision-Community zur Verfügung stellen.

Häufig gestellte Fragen#

  • Virtual KITTI 2 (vKITTI2) ist eine fotorealistische synthetische Nachbildung von fünf KITTI-Fahrsequenzen, die bei unterschiedlichen Wetter- und Lichtverhältnissen neu gerendert wurden. Der Datensatz steuert 42.520 Bilder (25.780 Training, 16.740 Validierung) mit dichter, pixelgenauer Tiefe bis zu etwa 80 m zum YOLO26-Depth-Trainingsmix bei.

  • Die Tiefe aus dem LiDAR des echten KITTI-Datensatzes ist spärlich: Nur etwa 16 bis 20 % der Pixel sind beschriftet. vKITTI2 liefert dagegen für jedes Pixel derselben Art von Fahrszene einen dichten Tiefenwert. Zusammen liefern sie dem Modell sowohl reale Sensorstatistiken als auch eine vollständige Geometrie des Außenbereichs.

  • Führe yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640 aus oder verwende das Python-Beispiel im Abschnitt Verwendung. Die Tiefen-PNG-Dateien verwenden Zentimeter (depth_scale: 100), was in der mitgelieferten YAML-Datei bereits festgelegt ist.

Kommentare