Virtual KITTI 2 Derinlik Veri Kümesi#
Virtual KITTI 2 (vKITTI2), KITTI sürüş sahnelerinin fotogerçekçi sentetik bir yeniden yaratımıdır. Orijinal KITTI veri kümesinden 5 diziyi klonlar ve bunları değişen hava ve aydınlatma koşullarında yeniden oluşturarak piksel başına yoğun yertruth (ground truth) sağlar.
Sentetik bir dış mekan sürüş veri kümesi olarak vKITTI2, seyrek gerçek KITTI LiDAR dönüşlerine yoğun bir karşılık sunarak monoküler derinlik tahmini modellerini eğitmek için temiz bir dış mekan sürüş geometrisi kaynağı sağlar.
Temel Özellikler#
- KITTI sürüş sahnelerinin fotogerçekçi sentetik yeniden yaratımı.
- Çeşitli hava ve ışık koşullarında oluşturulmuş 5 klonlanmış sekans.
- Dış mekan sürüş ortamları.
- Yoğun piksel bazlı yer gerçeği (seyrek gerçek KITTI LiDAR verisine yoğun bir karşılık).
- Derinlik aralığı ~80 m.
- Ultralytics derinlik eğitim karışımına 42.520 görüntü (25.780 eğitim / 16.740 doğrulama) katkıda bulunur.
Veri Kümesi Yapısı#
Virtual KITTI 2 derinlik veri kümesi iki alt kümeye ayrılmıştır:
- Train (Eğitim): Eğitim için eşleştirilmiş yoğun derinlik haritalarına sahip 25.780 görüntü.
- Val (Doğrulama): Eğitim sırasında doğrulama için eşleştirilmiş yoğun derinlik haritalarına sahip 16.740 görüntü.
Her bir RGB görüntüsü, piksel başına mesafeleri metre cinsinden depolayan bir .npy float32 derinlik haritası ile Ultralytics depth dataset format formatını takip edecek şekilde eşleştirilmiştir.
YOLO26-Depth'teki Rolü#
Virtual KITTI 2, Ultralytics YOLO26-Depth modellerini önceden eğitmek için kullanılan geniş çoklu veri kümesi karışımındaki (~2.19M görüntü) eğitim kaynaklarından biridir. Bu karışım içinde vKITTI2, seyrek gerçek KITTI LiDAR yer gerçeğine yoğun bir sentetik dış mekan sürüş karşılığı sağlar.
Bu kurulumda bağımsız bir ayrı tutulan vKITTI2 kıyaslaması yoktur. Bunun yerine, elde edilen modeller standart monoküler derinlik kıyaslamalarında değerlendirilir: NYU Depth V2, KITTI, Make3D, ETH3D ve iBims-1.
Veri Kümesi YAML#
Bir YAML (Yet Another Markup Language) dosyası, veri kümesi yapılandırmasını tanımlamak için kullanılır. Veri kümesinin yolları, sınıfları ve diğer ilgili bilgiler hakkında bilgi içerir. Virtual KITTI 2 için depth-vkitti2.yaml dosyası yolları ve tek bir depth sınıfını tanımlar.
# 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")Kullanım#
640 resim boyutuyla Virtual KITTI 2 veri kümesinde bir YOLO26n-Depth modeli eğitmek için aşağıdaki kod parçacıklarını kullanabilirsin. Mevcut argümanların kapsamlı bir listesi için model Eğitim sayfasına göz at.
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)Önceden Eğitilmiş Modeller#
YOLO26 depth ailesi (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) Ultralytics sürümlerinden otomatik olarak indirilir ve Virtual KITTI 2'nin de dahil olduğu geniş çoklu veri kümesi karışımı üzerinde eğitilir. Ultralytics Platform üzerinde YOLO26x-depth seçeneğini keşfet.
Alıntılar ve Teşekkür#
Virtual KITTI 2 veri kümesini araştırma veya geliştirme çalışmalarında kullanırsan lütfen şu makaleye atıfta bulun:
@article{cabon2020vkitti2,
title={Virtual KITTI 2},
author={Yohann Cabon and Naila Murray and Martin Humenberger},
journal={arXiv preprint arXiv:2001.10773},
year={2020}
}Bu sentetik sürüş veri kümesini bilgisayarlı görü topluluğuna sundukları için Virtual KITTI 2'nin yaratıcılarına teşekkür ederiz.