Ultralytics YOLO27:

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 diversas condiciones meteorológicas y de iluminación, proporcionando valores de referencia densos para cada píxel.

Como conjunto de datos sintético de conducción en exteriores, vKITTI2 ofrece una alternativa densa a los retornos dispersos de LiDAR de KITTI real, lo que lo convierte en una fuente útil de geometría limpia de conducción en exteriores para entrenar modelos monoculares de estimación de profundidad.

Características principales#

  • Recreación sintética fotorrealista de escenas de conducción de KITTI.
  • 5 secuencias clonadas renderizadas bajo diversas condiciones meteorológicas y de iluminación.
  • Entornos de conducción en exteriores.
  • Valores de referencia densos para cada píxel (una alternativa densa al LiDAR disperso de KITTI real).
  • Rango de profundidad de ~80 m.
  • Contribuye con 42,520 imágenes (25,780 de entrenamiento / 16,740 de validación) a la combinación de datos de entrenamiento de profundidad de Ultralytics.

Estructura del dataset#

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

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

Cada imagen RGB se empareja con un PNG de profundidad uint16 escalado, siguiendo el formato de conjunto de datos de profundidad de Ultralytics. Los PNG de origen y convertidos utilizan centímetros (depth_scale: 100), lo que conserva el rango de entrenamiento de 80 m.

Papel en YOLO26-Depth#

Virtual KITTI 2 es una de las fuentes de entrenamiento de la amplia combinación de múltiples conjuntos de datos (~2,19 M de imágenes) utilizada para preentrenar los modelos YOLO26-Depth de Ultralytics. Dentro de esta combinación, vKITTI2 proporciona una alternativa sintética densa de conducción en exteriores a los valores de referencia dispersos de LiDAR de KITTI real.

En esta configuración no existe ningún benchmark independiente de vKITTI2 con datos reservados. En su lugar, los modelos resultantes se evalúan en los benchmarks monoculares de profundidad estándar: NYU Depth V2, KITTI, Make3D, ETH3D e iBims-1.

YAML del dataset#

Se utiliza un archivo YAML para definir la configuración del conjunto de datos. Contiene información sobre las rutas, las clases y otra información relevante 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 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")

Uso#

Para entrenar un modelo YOLO26n-Depth con el conjunto de datos Virtual KITTI 2 y un tamaño de imagen de 640, puedes utilizar los siguientes fragmentos de código. Para consultar una lista completa de los argumentos disponibles, visita 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 modelos de profundidad YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) se descarga automáticamente de los lanzamientos 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 Ultralytics Platform.

Citas y agradecimientos#

Si utilizas el conjunto de datos Virtual KITTI 2 en tu trabajo de investigación o desarrollo, 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}
}

Queremos reconocer la labor de los creadores de Virtual KITTI 2 por poner este conjunto de datos sintético de conducción a disposición de la comunidad de visión artificial.

Preguntas frecuentes#

  • Virtual KITTI 2 (vKITTI2) es una recreación sintética fotorrealista de cinco secuencias de conducción de KITTI, renderizadas de nuevo bajo diversas condiciones meteorológicas y de iluminación. Contribuye con 42.520 imágenes (25.780 de entrenamiento, 16.740 de validación) con profundidad densa por píxel de hasta aproximadamente 80 m a la combinación de entrenamiento de YOLO26-Depth.

  • La profundidad de LiDAR del KITTI real es dispersa, con solo entre un 16 y un 20 % de los píxeles etiquetados, mientras que vKITTI2 proporciona un valor de profundidad denso para cada píxel del mismo tipo de escena de conducción. Juntos le proporcionan al modelo tanto las estadísticas de sensores reales como la geometría exterior completa.

  • Ejecuta yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640, o utiliza el ejemplo de Python en la sección Usage. Los PNG de profundidad utilizan centímetros (depth_scale: 100), lo cual el archivo YAML incluido ya configura.

Comentarios