YOLO Vision 2026:

Virtual KITTI 2 深度データセット#

Virtual KITTI 2 (vKITTI2) は、KITTI の運転シーンを写実的に再現した合成データセットです。オリジナルの KITTI データセットから 5 つのシーケンスを複製し、さまざまな天候や照明条件の下で再レンダリングすることで、高密度のピクセル単位のグラウンド・トゥルースを提供します。

合成された屋外運転データセットとして、vKITTI2 はスパースな実世界の KITTI LiDAR リターンに対する高密度な対抗データを提供し、単眼深度推定モデルのトレーニングに役立つクリーンな屋外運転ジオメトリのソースとなります。

主な特徴#

  • KITTI運転シーンのフォトリアリスティックな合成再現。
  • さまざまな天候や照明下でレンダリングされた5つのクローンシーケンス
  • 屋外運転環境。
  • 高密度な画素単位のグラウンドトゥルース(実際のKITTI LiDARの疎なデータに対する高密度な補完)。
  • 深度範囲 ~80 m
  • Ultralyticsの深度トレーニングミックスに対して42,520枚の画像(トレーニング用25,780枚、検証用16,740枚)を提供。

データセットの構造#

Virtual KITTI 2 深度データセットは、以下の2つのサブセットに分割されています。

  1. Train: トレーニング用の高密度深度マップがペアになった25,780枚の画像。
  2. Val: トレーニング中の検証用の高密度深度マップがペアになった16,740枚の画像。

各 RGB 画像は、ピクセルごとの距離をメートル単位で格納する .npy float32 深度マップとペアになっており、Ultralytics 深度データセット形式に準拠しています。

YOLO26-Depthにおける役割#

Virtual KITTI 2は、Ultralytics YOLO26-Depthモデルの事前トレーニングに使用される広範なマルチデータセット混合(約219万枚の画像)におけるトレーニングソースの1つです。この混合データセットの中で、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/cfg/datasets/depth-vkitti2.yaml
# 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 モデルをトレーニングするには、次のコードスニペットを使用できます。利用可能な引数の包括的なリストについては、モデルのトレーニングページを参照してください。

学習例
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.ptyolo26s-depth.ptyolo26m-depth.ptyolo26l-depth.ptyolo26x-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の開発者に感謝いたします。

コントリビューター

コメント