Virtual KITTI 2 깊이 데이터셋#
Virtual KITTI 2(vKITTI2)는 KITTI 주행 장면에 대한 포토리얼리스틱한 합성 재현입니다. 원본 KITTI 데이터셋의 5가지 시퀀스를 복제하여 다양한 날씨와 조명 조건에서 다시 렌더링하며, 픽셀 단위의 조밀한 정답 데이터를 제공합니다.
합성 실외 주행 데이터셋인 vKITTI2는 희소한 실제 KITTI LiDAR 반환값에 대한 조밀한 대응 데이터를 제공하므로, 단안 depth estimation 모델을 학습하는 데 유용한 깔끔한 실외 주행 지오메트리 소스가 됩니다.
주요 특징#
- KITTI 주행 장면을 사실적으로 재현한 합성 데이터셋입니다.
- 다양한 날씨와 조명 환경에서 렌더링된 5개의 복제된 시퀀스를 포함합니다.
- 실외 주행 환경을 제공합니다.
- 밀집된 픽셀 단위 정답(희소한 실제 KITTI LiDAR 데이터에 대응하는 밀집 데이터)을 포함합니다.
- 깊이 범위 ~80 m.
- Ultralytics 깊이 학습 믹스에 42,520개의 이미지(학습용 25,780장 / 검증용 16,740장)를 제공합니다.
데이터셋 구조#
Virtual KITTI 2 깊이 데이터셋은 다음 두 개의 하위 세트로 나뉩니다:
- Train: 학습을 위한 밀집 깊이 맵이 포함된 이미지 25,780장입니다.
- Val: 학습 중 검증을 위한 밀집 깊이 맵이 포함된 이미지 16,740장입니다.
각 RGB 이미지는 미터 단위의 픽셀별 거리를 저장하는 .npy float32 깊이 맵과 쌍을 이루며, Ultralytics depth dataset format을 따릅니다.
YOLO26-Depth에서의 역할#
Virtual KITTI 2는 Ultralytics YOLO26-Depth 모델을 사전 학습하는 데 사용되는 광범위한 다중 데이터셋 혼합(~2.19M 이미지)의 학습 소스 중 하나입니다. 이 혼합 데이터 내에서 vKITTI2는 희소한 실제 KITTI LiDAR 정답에 대응하는 밀집 합성 실외 주행 데이터를 제공합니다.
이 설정에는 별도의 vKITTI2 벤치마크가 존재하지 않습니다. 대신, 결과 모델은 NYU Depth V2, KITTI, Make3D, ETH3D, iBims-1과 같은 표준 단안 깊이 벤치마크에서 평가됩니다.
데이터셋 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")사용법#
이미지 크기 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)사전 학습된 모델#
YOLO26 깊이 패밀리(yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt)는 Ultralytics 릴리즈에서 자동으로 다운로드되며, Virtual KITTI 2가 포함된 광범위한 다중 데이터셋 믹스로 학습됩니다. Ultralytics 플랫폼에서 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 제작자들에게 감사를 표합니다.