Link to this sectionVirtual 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 sekansı klonlar ve bunları çeşitli hava ve ışık koşullarında yeniden oluşturarak yoğun piksel bazlı yer gerçeği sağlar.
Sentetik bir dış mekan sürüş veri kümesi olarak vKITTI2, seyrek gerçek KITTI LiDAR verilerine yoğun bir karşılık sunar ve bu da onu monoküler derinlik tahmini modellerini eğitmek için temiz bir dış mekan sürüş geometrisi kaynağı haline getirir.
Link to this sectionTemel Ö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.
Link to this sectionVeri 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ü.
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'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.
Link to this sectionVeri Kümesi YAML#
Veri kümesi yapılandırmasını tanımlamak için bir YAML (Yet Another Markup Language) dosyası kullanılır. Bu dosya, veri kümesinin yolları, sınıfları ve diğer ilgili bilgiler hakkında veriler içerir. Virtual KITTI 2 için depth-vkitti2.yaml dosyası yolları ve tek 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")Link to this sectionKullanım#
Virtual KITTI 2 veri kümesi üzerinde 640 görüntü boyutuyla bir YOLO26n-Depth modeli eğitmek için aşağıdaki kod parçacıklarını kullanabilirsin. Kullanılabilir bağımsız değişkenlerin kapsamlı bir listesi için model Eğitim sayfasına başvur.
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Önceden Eğitilmiş Modeller#
YOLO26 derinlik ailesi (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) v8.4.0 sürümünden otomatik olarak indirilir ve Virtual KITTI 2'nin de parçası olduğu geniş çoklu veri kümesi karışımı üzerinde eğitilmiştir.
Link to this sectionAlı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.