Набор данных глубины Virtual KITTI 2#
Virtual KITTI 2 (vKITTI2) — фотореалистичная синтетическая реконструкция сцен вождения из KITTI. Он воспроизводит 5 последовательностей из исходного набора данных KITTI и повторно визуализирует их в различных погодных и световых условиях, предоставляя плотную эталонную разметку для каждого пикселя.
Как синтетический набор данных для вождения на открытом воздухе, vKITTI2 предлагает плотный аналог разреженных данных LiDAR из реального KITTI, что делает его полезным источником точной геометрии открытых дорожных сцен для обучения моделей оценки глубины по одному изображению.
Ключевые особенности#
- Фотореалистичная синтетическая реконструкция сцен вождения из KITTI.
- 5 склонированных последовательностей, визуализированных в различных погодных и световых условиях.
- Среды для вождения на открытом воздухе.
- Плотная эталонная разметка для каждого пикселя (плотный аналог разреженных данных LiDAR из реального KITTI).
- Диапазон глубины ~80 м.
- Вносит 42 520 изображений (25 780 для обучения / 16 740 для валидации) в состав набора данных, используемого Ultralytics для обучения моделей глубины.
Структура датасета#
Набор данных глубины Virtual KITTI 2 разделён на два поднабора:
- Train: 25 780 изображений с соответствующими плотными картами глубины для обучения.
- Val: 16 740 изображений с соответствующими плотными картами глубины для валидации во время обучения.
Каждому RGB-изображению соответствует масштабированная карта глубины в формате PNG uint16 согласно формату наборов данных глубины Ultralytics. В исходных и преобразованных PNG-файлах используются сантиметры (depth_scale: 100), что позволяет сохранить диапазон обучения до 80 м.
Роль в YOLO26-Depth#
Virtual KITTI 2 — один из источников обучения в составе широкой смеси из нескольких наборов данных (~2,19 млн изображений), используемой для предварительного обучения моделей Ultralytics YOLO26-Depth. В этой смеси vKITTI2 предоставляет плотный синтетический аналог открытых дорожных сцен, дополняющий разреженную эталонную разметку LiDAR из реального KITTI.
В этой конфигурации нет отдельного тестового бенчмарка 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")Использование#
Чтобы обучить модель YOLO26n-Depth на наборе данных Virtual KITTI 2 с размером изображения 640, можно использовать следующие фрагменты кода. Полный список доступных аргументов приведён на странице обучения модели.
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. Изучи YOLO26x-depth на платформе Ultralytics.
Цитирование и благодарности#
Если ты используешь набор данных 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 м.
Данные LiDAR реального датасета KITTI разрежены: размечено лишь около 16–20% пикселей, в то время как vKITTI2 предоставляет плотное значение глубины для каждого пикселя аналогичной сцены вождения. Вместе они дают модели как статистику реальных сенсоров, так и полную геометрию уличной среды.
Запусти
yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640или используй пример на Python в разделе Usage. PNG-файлы глубины используют сантиметры (depth_scale: 100), что уже настроено в поставляемом в комплекте YAML.