YOLO Vision 2026:

Conjunto de datos de profundidad Virtual KITTI 2#

Virtual KITTI 2 (vKITTI2) es una recreación sintética fotorrealista de las escenas de conducción de KITTI. Clona 5 secuencias del conjunto de datos KITTI original y las vuelve a renderizar bajo diferentes condiciones meteorológicas y de iluminación, proporcionando datos reales (ground truth) densos por píxel.

Como conjunto de datos sintético de conducción en exteriores, vKITTI2 ofrece una contraparte densa a los dispersos datos LiDAR del KITTI real, convirtiéndose en una fuente útil de geometría limpia de conducción en exteriores para entrenar modelos de estimación de profundidad monocular.

Características clave#

  • Recreación sintética fotorrealista de escenas de conducción de KITTI.
  • 5 secuencias clonadas renderizadas bajo condiciones climáticas y de iluminación variadas.
  • Entornos de conducción en exteriores.
  • Información veraz densa por píxel (una contrapartida densa al LiDAR disperso del KITTI real).
  • Rango de profundidad ~80 m.
  • Aporta 42 520 imágenes (25 780 de entrenamiento / 16 740 de validación) a la mezcla de entrenamiento de profundidad de Ultralytics.

Estructura del dataset#

El conjunto de datos de profundidad Virtual KITTI 2 se divide en dos subconjuntos:

  1. Train: 25 780 imágenes con mapas de profundidad densos emparejados para entrenamiento.
  2. Val: 16 740 imágenes con mapas de profundidad densos emparejados para validación durante el entrenamiento.

Cada imagen RGB se combina con un mapa de profundidad float32 de .npy que almacena las distancias por píxel en metros, siguiendo el formato del conjunto de datos de profundidad de Ultralytics.

Rol en YOLO26-Depth#

Virtual KITTI 2 es una de las fuentes de entrenamiento en la amplia mezcla de múltiples conjuntos de datos (~2,19 millones de imágenes) utilizada para preentrenar los modelos YOLO26-Depth de Ultralytics. Dentro de esta mezcla, vKITTI2 proporciona una contrapartida sintética densa de conducción en exteriores al LiDAR disperso del KITTI real.

No existe un punto de referencia vKITTI2 independiente en esta configuración. En su lugar, los modelos resultantes se evalúan en los puntos de referencia de profundidad monocular estándar: NYU Depth V2, KITTI, Make3D, ETH3D e iBims-1.

YAML del dataset#

Se utiliza un archivo YAML (Yet Another Markup Language) para definir la configuración del conjunto de datos. Contiene información sobre las rutas, las clases y otros datos relevantes del conjunto de datos. Para Virtual KITTI 2, el archivo depth-vkitti2.yaml define las rutas y la única clase depth.

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 *.npy, float32 meters (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

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

  import cv2
  import numpy as np

  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)
      np.save(dir / "depth" / split / f"{name}.npy", (depth.astype(np.float32) / 100.0).clip(max=80))  # cm -> m
      im.replace(dir / "images" / split / f"{name}.jpg")
  shutil.rmtree(dir / "source")

Uso#

Para entrenar un modelo YOLO26n-Depth en el conjunto de datos Virtual KITTI 2 con un tamaño de imagen de 640, puedes utilizar los siguientes fragmentos de código. Para ver una lista completa de los argumentos disponibles, consulta la página de Entrenamiento del modelo.

Ejemplo de entrenamiento
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)

Modelos preentrenados#

La familia de profundidad YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) se descarga automáticamente desde las versiones de Ultralytics y se entrena con la amplia combinación de múltiples conjuntos de datos de la que forma parte Virtual KITTI 2. Explora YOLO26x-depth en la plataforma de Ultralytics.

Citas y agradecimientos#

Si utilizas el conjunto de datos Virtual KITTI 2 en tu trabajo de investigación o desarrollo, por favor cita el siguiente artículo:

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

Nos gustaría agradecer a los creadores de Virtual KITTI 2 por hacer que este conjunto de datos de conducción sintética esté disponible para la comunidad de visión artificial.

Comentarios