Virtual KITTI 2 深度数据集#
Virtual KITTI 2(vKITTI2)是对 KITTI 驾驶场景进行照片级真实感合成重建的数据集。它克隆了原始 KITTI 数据集中的 5 个序列,并在多种天气和光照条件下重新渲染这些序列,从而提供密集的逐像素真值。
作为合成的户外驾驶数据集,vKITTI2 为稀疏的真实 KITTI LiDAR 回波提供了密集对应数据,因此是训练单目深度估计模型时获取纯净户外驾驶几何信息的有用来源。
主要特性#
- 对 KITTI 驾驶场景进行照片级真实感的合成重建。
- 在多种天气和光照条件下渲染的5 个克隆序列。
- 户外驾驶环境。
- 密集的逐像素真值(是稀疏真实 KITTI LiDAR 的密集对应数据)。
- 深度范围**~80 米**。
- 为 Ultralytics 深度训练混合数据贡献42,520张图像(25,780 张训练图像 / 16,740 张验证图像)。
数据集结构#
Virtual KITTI 2 深度数据集分为两个子集:
- Train:25,780 张图像,包含用于训练的成对密集深度图。
- Val:16,740 张图像,包含用于训练期间验证的成对密集深度图。
每张 RGB 图像都与一张经过缩放的 uint16 深度 PNG 配对,并遵循 Ultralytics 深度数据集格式。源 PNG 和转换后的 PNG 均使用厘米(depth_scale: 100)作为单位,从而保留 80 米的训练范围。
在 YOLO26-Depth 中的作用#
Virtual KITTI 2 是用于预训练 Ultralytics YOLO26-Depth 模型的广泛多数据集混合数据(~219 万张图像)中的训练来源之一。在这一混合数据中,vKITTI2 为稀疏的真实 KITTI LiDAR 真值提供了密集合成户外驾驶对应数据。
在此设置中,没有单独留出的 vKITTI2 基准测试集。相反,最终模型会在标准单目深度基准上进行评估:NYU Depth V2、KITTI、Make3D、ETH3D 和 iBims-1。
数据集 YAML#
使用 YAML 文件定义数据集配置。它包含有关数据集路径、类别及其他相关信息的信息。对于 Virtual KITTI 2,depth-vkitti2.yaml 文件定义了路径和单项 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")使用方法#
要在 Virtual KITTI 2 数据集上以 640 的图像尺寸训练 YOLO26n-Depth 模型,可以使用以下代码片段。有关可用参数的完整列表,请参阅模型训练页面。
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)预训练模型#
YOLO26 深度系列(yolo26n-depth.pt、yolo26s-depth.pt、yolo26m-depth.pt、yolo26l-depth.pt、yolo26x-depth.pt)会从 Ultralytics 发布版本中自动下载,并在包含 Virtual KITTI 2 的广泛多数据集混合数据上进行训练。在 Ultralytics Platform 上探索 YOLO26x-depth。
引用和致谢#
如果你在研究或开发工作中使用 Virtual KITTI 2 数据集,请引用以下论文:
@article{cabon2020vkitti2,
title={Virtual KITTI 2},
author={Yohann Cabon and Naila Murray and Martin Humenberger},
journal={arXiv preprint arXiv:2001.10773},
year={2020}
}感谢 Virtual KITTI 2 的创建者,使这一合成驾驶数据集能够供计算机视觉社区使用。
常见问题#
Virtual KITTI 2 (vKITTI2) 是对五个 KITTI 驾驶序列的真实感合成再现,在不同的天气和光照条件下重新渲染。它为 YOLO26-Depth 训练组合贡献了 42,520 张图像(25,780 张用于训练,16,740 张用于验证),具有高达约 80 米的稠密逐像素深度。
真实 KITTI 激光雷达深度是稀疏的,只有约 16% 到 20% 的像素被标注,而 vKITTI2 为相同驾驶场景的每个像素提供稠密的深度值。它们一起为模型提供真实的传感器统计数据和完整的户外几何形状。
运行
yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640,或者使用用法部分中的 Python 示例。深度 PNG 使用厘米(depth_scale: 100),打包好的 YAML 已经进行了设置。