Link to this sectionVirtual KITTI 2 깊이 데이터셋#
Virtual KITTI 2 (vKITTI2)는 KITTI 주행 장면을 사실적으로 재현한 합성 데이터셋입니다. 원본 KITTI 데이터셋의 5개 시퀀스를 복제하여 다양한 날씨와 조명 조건에서 다시 렌더링했으며, 픽셀 단위의 밀집된 정답(ground truth)을 제공합니다.
합성 실외 주행 데이터셋인 vKITTI2는 희소한 실제 KITTI LiDAR 데이터에 대응하는 밀집 데이터를 제공하며, 단안 depth estimation 모델 학습을 위한 정제된 실외 주행 지오메트리 소스로 활용됩니다.
Link to this section주요 특징#
- KITTI 주행 장면을 사실적으로 재현한 합성 데이터셋입니다.
- 다양한 날씨와 조명 환경에서 렌더링된 5개의 복제된 시퀀스를 포함합니다.
- 실외 주행 환경을 제공합니다.
- 밀집된 픽셀 단위 정답(희소한 실제 KITTI LiDAR 데이터에 대응하는 밀집 데이터)을 포함합니다.
- 깊이 범위 ~80 m.
- Ultralytics 깊이 학습 믹스에 42,520개의 이미지(학습용 25,780장 / 검증용 16,740장)를 제공합니다.
Link to this section데이터셋 구조#
Virtual KITTI 2 깊이 데이터셋은 다음 두 개의 하위 세트로 나뉩니다:
- Train: 학습을 위한 밀집 깊이 맵이 포함된 이미지 25,780장입니다.
- Val: 학습 중 검증을 위한 밀집 깊이 맵이 포함된 이미지 16,740장입니다.
Each RGB image is paired with a .npy float32 depth map storing per-pixel distances in meters, following the Ultralytics depth dataset format.
Link to this sectionYOLO26-Depth에서의 역할#
Virtual KITTI 2는 Ultralytics YOLO26-Depth 모델을 사전 학습하는 데 사용되는 광범위한 다중 데이터셋 혼합(~2.19M 이미지)의 학습 소스 중 하나입니다. 이 혼합 데이터 내에서 vKITTI2는 희소한 실제 KITTI LiDAR 정답에 대응하는 밀집 합성 실외 주행 데이터를 제공합니다.
이 설정에는 별도의 vKITTI2 벤치마크가 존재하지 않습니다. 대신, 결과 모델은 NYU Depth V2, KITTI, Make3D, ETH3D, iBims-1과 같은 표준 단안 깊이 벤치마크에서 평가됩니다.
Link to this section데이터셋 YAML#
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사용법#
640 이미지 크기로 Virtual KITTI 2 데이터셋에서 YOLO26n-Depth 모델을 학습하려면 다음 코드 스니펫을 사용할 수 있습니다. 사용 가능한 인수에 대한 전체 목록은 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 깊이 제품군(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 제작자들에게 감사를 표합니다.