docs/en/datasets/depth/vkitti2.md
Virtual KITTI 2 (vKITTI2) is a photorealistic synthetic recreation of the KITTI driving scenes. It clones 5 sequences from the original KITTI dataset and re-renders them under varied weather and lighting conditions, providing dense per-pixel ground truth.
As a synthetic outdoor-driving dataset, vKITTI2 offers a dense counterpart to the sparse real KITTI LiDAR returns, making it a useful source of clean outdoor driving geometry for training monocular depth estimation models.
The Virtual KITTI 2 depth dataset is split into two subsets:
Each RGB image is paired with a scaled uint16 depth PNG, following the Ultralytics depth dataset format. The source and converted PNGs use centimeters (depth_scale: 100), which preserves the 80 m training range.
Virtual KITTI 2 is one of the training sources in the broad multi-dataset mixture (~2.19M images) used to pretrain the Ultralytics YOLO26-Depth models. Within this mix, vKITTI2 provides a dense synthetic outdoor-driving counterpart to the sparse real KITTI LiDAR ground truth.
There is no standalone held-out vKITTI2 benchmark in this setup. Instead, the resulting models are evaluated on the standard monocular depth benchmarks: NYU Depth V2, KITTI, Make3D, ETH3D, and iBims-1.
A YAML file is used to define the dataset configuration. It contains information about the dataset's paths, classes, and other relevant information. For Virtual KITTI 2, the depth-vkitti2.yaml file defines the paths and the single depth class.
!!! example "ultralytics/cfg/datasets/depth-vkitti2.yaml"
```yaml
--8<-- "ultralytics/cfg/datasets/depth-vkitti2.yaml"
```
To train a YOLO26n-Depth model on the Virtual KITTI 2 dataset with an image size of 640, you can use the following code snippets. For a comprehensive list of available arguments, refer to the model Training page.
!!! example "Train Example"
=== "Python"
```python
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)
```
=== "CLI"
```bash
# Start training from a pretrained *.pt model
yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640
```
The YOLO26 depth family (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) auto-downloads from Ultralytics releases and is trained on the broad multi-dataset mix that Virtual KITTI 2 is part of. Explore YOLO26x-depth on Ultralytics Platform.
If you use the Virtual KITTI 2 dataset in your research or development work, please cite the following paper:
!!! quote ""
=== "BibTeX"
```bibtex
@article{cabon2020vkitti2,
title={Virtual KITTI 2},
author={Yohann Cabon and Naila Murray and Martin Humenberger},
journal={arXiv preprint arXiv:2001.10773},
year={2020}
}
```
We would like to acknowledge the creators of Virtual KITTI 2 for making this synthetic driving dataset available to the computer vision community.
Virtual KITTI 2 (vKITTI2) is a photorealistic synthetic recreation of five KITTI driving sequences, re-rendered under varied weather and lighting. It contributes 42,520 images (25,780 train, 16,740 val) with dense per-pixel depth to roughly 80 m to the YOLO26-Depth training mix.
Real KITTI LiDAR depth is sparse, with only about 16 to 20% of pixels labeled, while vKITTI2 provides a dense depth value for every pixel of the same kind of driving scene. Together they give the model both real sensor statistics and complete outdoor geometry.
Run yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640, or use the Python example in the Usage section. Depth PNGs use centimeters (depth_scale: 100), which the bundled YAML already sets.