Jeu de données de profondeur Virtual KITTI 2#
Virtual KITTI 2 (vKITTI2) est une reconstitution synthétique photoréaliste des scènes de conduite de KITTI. Il reproduit 5 séquences du jeu de données KITTI original et les restitue dans différentes conditions météorologiques et d'éclairage, en fournissant une vérité terrain dense pour chaque pixel.
En tant que jeu de données synthétique de conduite en extérieur, vKITTI2 offre un équivalent dense des retours LiDAR réels et clairsemés de KITTI, ce qui en fait une source utile de géométrie propre de conduite en extérieur pour entraîner des modèles d'estimation de profondeur monoculaire.
Fonctionnalités clés#
- Reconstitution synthétique photoréaliste de scènes de conduite de KITTI.
- 5 séquences clonées rendues dans différentes conditions météorologiques et d'éclairage.
- Environnements de conduite en extérieur.
- Vérité terrain dense pour chaque pixel (un équivalent dense du LiDAR réel et clairsemé de KITTI).
- Plage de profondeur ~80 m.
- Contribue à hauteur de 42 520 images (25 780 pour l'entraînement / 16 740 pour la validation) au mélange d'entraînement de profondeur d'Ultralytics.
Structure du jeu de données#
Le jeu de données de profondeur Virtual KITTI 2 est divisé en deux sous-ensembles :
- Entraînement : 25 780 images avec des cartes de profondeur denses appariées pour l'entraînement.
- Validation : 16 740 images avec des cartes de profondeur denses appariées pour la validation pendant l'entraînement.
Chaque image RGB est appariée à un PNG de profondeur uint16 mis à l'échelle, conformément au format des jeux de données de profondeur d'Ultralytics. Les PNG sources et convertis utilisent des centimètres (depth_scale: 100), ce qui préserve la plage d'entraînement de 80 m.
Rôle dans YOLO26-Depth#
Virtual KITTI 2 est l'une des sources d'entraînement du vaste mélange multi-jeux de données (~2,19 M d'images) utilisé pour le préentraînement des modèles Ultralytics YOLO26-Depth. Dans ce mélange, vKITTI2 fournit un équivalent synthétique dense de conduite en extérieur à la vérité terrain LiDAR réelle et clairsemée de KITTI.
Il n'existe pas de benchmark vKITTI2 autonome avec un sous-ensemble de test séparé dans cette configuration. À la place, les modèles obtenus sont évalués sur les benchmarks standards de profondeur monoculaire : NYU Depth V2, KITTI, Make3D, ETH3D et iBims-1.
YAML du jeu de données#
Un fichier YAML est utilisé pour définir la configuration du dataset. Il contient des informations sur les chemins du dataset, les classes et d'autres informations pertinentes. Pour Virtual KITTI 2, le fichier depth-vkitti2.yaml définit les chemins et la classe unique depth.
# 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")Utilisation#
Pour entraîner un modèle YOLO26n-Depth sur le jeu de données Virtual KITTI 2 avec une taille d'image de 640, tu peux utiliser les extraits de code suivants. Pour consulter la liste complète des arguments disponibles, reporte-toi à la page Entraînement des modèles.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-depth.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="depth-vkitti2.yaml", epochs=100, imgsz=640)Modèles préentraînés#
La famille de modèles de profondeur YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) se télécharge automatiquement depuis les versions publiées par Ultralytics et est entraînée sur le vaste mélange multi-jeux de données dont Virtual KITTI 2 fait partie. Découvre YOLO26x-depth sur la plateforme Ultralytics.
Citations et remerciements#
Si tu utilises le jeu de données Virtual KITTI 2 dans tes travaux de recherche ou de développement, cite l'article suivant :
@article{cabon2020vkitti2,
title={Virtual KITTI 2},
author={Yohann Cabon and Naila Murray and Martin Humenberger},
journal={arXiv preprint arXiv:2001.10773},
year={2020}
}Nous souhaitons remercier les créateurs de Virtual KITTI 2 d'avoir mis ce jeu de données synthétique de conduite à la disposition de la communauté de la vision par ordinateur.
FAQ#
Virtual KITTI 2 (vKITTI2) est une reconstitution synthétique photoréaliste de cinq séquences de conduite KITTI, rendues à nouveau sous des conditions météorologiques et d'éclairage variées. Il apporte 42 520 images (25 780 pour l'entraînement, 16 740 pour la validation) avec une profondeur dense par pixel jusqu'à environ 80 m au mélange d'entraînement YOLO26-Depth.
La profondeur LiDAR réelle de KITTI est parcellaire, avec seulement environ 16 à 20 % des pixels étiquetés, tandis que vKITTI2 fournit une valeur de profondeur dense pour chaque pixel du même type de scène de conduite. Ensemble, ils confèrent au modèle à la fois des statistiques de capteurs réels et une géométrie extérieure complète.
Exécute
yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640, ou utilise l'exemple Python dans la section Usage. Les fichiers PNG de profondeur utilisent des centimètres (depth_scale: 100), ce que le fichier YAML fourni configure déjà.