Conjunto de Dados de Profundidade Virtual KITTI 2#
Virtual KITTI 2 (vKITTI2) é uma recriação sintética fotorrealista das cenas de condução do KITTI. Clona 5 sequências do conjunto de dados KITTI original e renderiza-as novamente sob diversas condições meteorológicas e de iluminação, fornecendo ground truth denso por pixel.
Como conjunto de dados sintético de condução ao ar livre, o vKITTI2 oferece uma alternativa densa aos retornos esparsos de LiDAR do KITTI real, tornando-o uma fonte útil de geometria limpa de condução ao ar livre para treinar modelos de estimativa de profundidade monocular.
Principais funcionalidades#
- Recriação sintética fotorrealista de cenas de condução do KITTI.
- 5 sequências clonadas renderizadas sob diversas condições meteorológicas e de iluminação.
- Ambientes de condução ao ar livre.
- Ground truth denso por pixel (uma alternativa densa ao LiDAR esparso do KITTI real).
- Intervalo de profundidade de ~80 m.
- Contribui com 42,520 imagens (25,780 para treino / 16,740 para validação) para a combinação de dados de treino de profundidade da Ultralytics.
Estrutura do Conjunto de Dados#
O conjunto de dados de profundidade Virtual KITTI 2 está dividido em dois subconjuntos:
- Train: 25,780 imagens com mapas de profundidade densos emparelhados para treino.
- Val: 16,740 imagens com mapas de profundidade densos emparelhados para validação durante o treino.
Cada imagem RGB é emparelhada com um PNG de profundidade uint16 escalado, seguindo o formato de conjunto de dados de profundidade da Ultralytics. Os PNGs de origem e convertidos usam centímetros (depth_scale: 100), preservando o intervalo de treino de 80 m.
Função no YOLO26-Depth#
O Virtual KITTI 2 é uma das fontes de treino na combinação ampla de vários conjuntos de dados (~2,19 milhões de imagens) usada para pré-treinar os modelos Ultralytics YOLO26-Depth. Nesta combinação, o vKITTI2 fornece uma alternativa sintética densa de condução ao ar livre ao ground truth esparso de LiDAR do KITTI real.
Não existe um benchmark vKITTI2 independente com dados reservados para teste nesta configuração. Em vez disso, os modelos resultantes são avaliados nos benchmarks padrão de profundidade monocular: NYU Depth V2, KITTI, Make3D, ETH3D e iBims-1.
YAML do Conjunto de Dados#
Um arquivo YAML é usado para definir a configuração do conjunto de dados. Ele contém informações sobre os caminhos, as classes e outras informações relevantes do conjunto de dados. Para o Virtual KITTI 2, o arquivo depth-vkitti2.yaml define os caminhos e a classe única 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")Utilização#
Para treinar um modelo YOLO26n-Depth no conjunto de dados Virtual KITTI 2 com um tamanho de imagem de 640, podes utilizar os seguintes trechos de código. Para obteres uma lista completa dos argumentos disponíveis, consulta a página de Treino do modelo.
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 pré-treinados#
A família de profundidade YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) é transferida automaticamente das versões da Ultralytics e treinada na combinação ampla de vários conjuntos de dados da qual o Virtual KITTI 2 faz parte. Explora o YOLO26x-depth na Ultralytics Platform.
Citações e agradecimentos#
Se utilizares o conjunto de dados Virtual KITTI 2 no teu trabalho de investigação ou desenvolvimento, cita o seguinte artigo:
@article{cabon2020vkitti2,
title={Virtual KITTI 2},
author={Yohann Cabon and Naila Murray and Martin Humenberger},
journal={arXiv preprint arXiv:2001.10773},
year={2020}
}Gostaríamos de agradecer aos criadores do Virtual KITTI 2 por disponibilizarem este conjunto de dados sintético de condução à comunidade de visão computacional.
Perguntas frequentes#
O Virtual KITTI 2 (vKITTI2) é uma recriação sintética fotorrealista de cinco sequências de direção do KITTI, renderizadas novamente sob clima e iluminação variados. Ele contribui com 42.520 imagens (25.780 de treino, 16.740 de validação) com profundidade densa por pixel de até aproximadamente 80 m para a composição de treinamento do YOLO26-Depth.
A profundidade de LiDAR do KITTI real é esparsa, com apenas cerca de 16 a 20% dos pixels rotulados, enquanto o vKITTI2 fornece um valor de profundidade denso para cada pixel do mesmo tipo de cena de direção. Juntos, eles fornecem ao modelo tanto as estatísticas reais do sensor quanto a geometria externa completa.
Execute
yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640, ou use o exemplo em Python na seção Usage. Os PNGs de profundidade usam centímetros (depth_scale: 100), o que o YAML empacotado já define.