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. Ele replica 5 sequências do conjunto de dados KITTI original e as renderiza novamente sob condições variadas de clima e iluminação, fornecendo ground truth denso por pixel.
Como conjunto de dados sintético de condução em ambientes externos, o vKITTI2 oferece uma contraparte densa aos retornos esparsos do LiDAR do KITTI real, tornando-o uma fonte útil de geometria limpa de condução em ambientes externos 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 replicadas, renderizadas sob condições variadas de clima e iluminação.
- Ambientes de condução em áreas externas.
- Ground truth denso por pixel (uma contraparte densa ao LiDAR esparso do KITTI real).
- Alcance de profundidade de ~80 m.
- Contribui com 42.520 imagens (25.780 para treino / 16.740 para validação) para a combinação de treinamento de profundidade da Ultralytics.
Estrutura do conjunto de dados#
O conjunto de dados de profundidade Virtual KITTI 2 está dividido em dois subconjuntos:
- Treino: 25.780 imagens com mapas de profundidade densos correspondentes para treinamento.
- Val: 16.740 imagens com mapas de profundidade densos correspondentes para validação durante o treinamento.
Cada imagem RGB é pareada com um PNG de profundidade uint16 escalado, seguindo o formato de conjunto de dados de profundidade da Ultralytics. As imagens PNG de origem e convertidas usam centímetros (depth_scale: 100), o que preserva o alcance de treinamento de 80 m. O YAML do conjunto de dados baixa os arquivos de origem (~15 GB) e os converte automaticamente no primeiro uso.
Papel no YOLO26-Depth#
O Virtual KITTI 2 é uma das fontes de treinamento na ampla combinação multiconjunto de dados (~2,19 milhões de imagens) usada para pré-treinar os modelos Ultralytics YOLO26-Depth. Nessa combinação, o vKITTI2 oferece uma contraparte sintética densa de condução em ambientes externos ao ground truth esparso do LiDAR do KITTI real.
Essa configuração não inclui um benchmark vKITTI2 independente com dados reservados. 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 outros dados relevantes do conjunto de dados. Para o Virtual KITTI 2, o arquivo depth-vkitti2.yaml define os caminhos e a única classe 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")Uso#
Para treinar um modelo YOLO26n-Depth no conjunto de dados Virtual KITTI 2 com tamanho de imagem 640, use os trechos de código a seguir. Para ver uma lista completa dos argumentos disponíveis, consulte a página de Treinamento do modelo.
from ultralytics import YOLO
# Carregar um modelo
model = YOLO("yolo26n-depth.pt") # carregue um modelo pré-treinado (recomendado para treinamento)
# Treinar o modelo
results = model.train(data="depth-vkitti2.yaml", epochs=100, imgsz=640)Modelos pré-treinados#
A família de modelos de profundidade YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) é baixada automaticamente dos lançamentos da Ultralytics e treinada com a ampla combinação multiconjunto de dados da qual o Virtual KITTI 2 faz parte. Explore o YOLO26x-depth na Ultralytics Platform.
Citações e agradecimentos#
Se você usar o conjunto de dados Virtual KITTI 2 em seu trabalho de pesquisa ou desenvolvimento, cite o artigo a seguir:
@article{cabon2020vkitti2,
title={Virtual KITTI 2},
author={Yohann Cabon and Naila Murray and Martin Humenberger},
journal={arXiv preprint arXiv:2001.10773},
year={2020}
}Agradecemos aos criadores do Virtual KITTI 2 por disponibilizarem este conjunto de dados sintético de condução à comunidade de visão computacional.
Perguntas frequentes#
Virtual KITTI 2 (vKITTI2) é uma recriação sintética fotorrealista de cinco sequências de condução do KITTI, renderizadas novamente sob condições variadas de clima e iluminação. Ele contribui com 42.520 imagens (25.780 para treino, 16.740 para validação) com profundidade densa por pixel de até aproximadamente 80 m para a combinação de treinamento do YOLO26-Depth.
A profundidade 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 em cenas de condução semelhantes. Juntos, eles dão ao modelo tanto estatísticas de sensores reais quanto uma geometria externa completa.
Execute
yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640ou use o exemplo em Python na seção Uso. Os PNGs de profundidade usam centímetros (depth_scale: 100), configuração que o YAML incluído já define.