Link to this sectionНабор данных Virtual KITTI 2 Depth#
Virtual KITTI 2 (vKITTI2) — это фотореалистичная синтетическая копия сцен вождения KITTI. Она клонирует 5 последовательностей из оригинального набора данных KITTI и повторно рендерит их в различных погодных условиях и при разном освещении, предоставляя плотные данные ground truth для каждого пикселя.
Будучи синтетическим набором данных для вождения на открытом воздухе, vKITTI2 предлагает плотный аналог разреженным реальным данным LiDAR из KITTI, что делает его полезным источником качественной геометрии для обучения моделей монокулярного depth estimation.
Link to this sectionКлючевые особенности#
- Фотореалистичная синтетическая копия сцен вождения KITTI.
- 5 клонированных последовательностей, отрендеренных в различных погодных условиях и при разном освещении.
- Среды вождения на открытом воздухе.
- Плотные данные per-pixel ground truth (плотный аналог разреженных реальных данных LiDAR из KITTI).
- Диапазон глубины ~80 м.
- Содержит 42 520 изображений (25 780 для обучения / 16 740 для валидации) в составе общего набора данных для обучения моделей глубины Ultralytics.
Link to this sectionСтруктура набора данных#
Набор данных глубины Virtual KITTI 2 разделен на два подмножества:
- Train: 25 780 изображений с парными картами плотной глубины для обучения.
- Val: 16 740 изображений с парными картами плотной глубины для валидации во время обучения.
Каждое RGB-изображение сопровождается картой глубины в формате .npy (float32), содержащей расстояния для каждого пикселя в метрах, в соответствии с форматом набора данных глубины Ultralytics.
Link to this sectionРоль в YOLO26-Depth#
Virtual KITTI 2 является одним из источников для обучения в широком наборе данных (~2,19 млн изображений), используемом для предварительного обучения моделей Ultralytics YOLO26-Depth. В этом наборе vKITTI2 предоставляет плотный синтетический аналог данных вождения на открытом воздухе для разреженных реальных данных ground truth LiDAR из KITTI.
В этой конфигурации нет отдельного независимого бенчмарка vKITTI2. Вместо этого результирующие модели оцениваются на стандартных бенчмарках монокулярной глубины: NYU Depth V2, KITTI, Make3D, ETH3D и iBims-1.
Link to this sectionYAML набора данных#
Файл YAML (Yet Another Markup Language) используется для определения конфигурации набора данных. Он содержит информацию о путях к данным, классах и другую соответствующую информацию. Для 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 *.npy, float32 meters (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
# Download script/URL (optional)
download: |
import shutil
from pathlib import Path
import cv2
import numpy as np
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)
np.save(dir / "depth" / split / f"{name}.npy", (depth.astype(np.float32) / 100.0).clip(max=80)) # cm -> m
im.replace(dir / "images" / split / f"{name}.jpg")
shutil.rmtree(dir / "source")Link to this sectionИспользование#
Чтобы обучить модель YOLO26n-Depth на наборе данных Virtual KITTI 2 с размером изображения 640, ты можешь использовать следующие фрагменты кода. Полный список доступных аргументов можно найти на странице Training модели.
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)Link to this sectionПредварительно обученные модели#
Семейство моделей YOLO26 depth (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) автоматически загружается из релиза v8.4.0 и обучается на широком мульти-наборе данных, в который входит Virtual KITTI 2.
Link to this sectionЦитирование и благодарности#
Если ты используешь набор данных 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 за предоставление этого синтетического набора данных по вождению сообществу компьютерного зрения.