Ultralytics YOLO27:

Bộ dữ liệu độ sâu Virtual KITTI 2#

Virtual KITTI 2 (vKITTI2) là bản tái tạo tổng hợp có tính chân thực ảnh của các cảnh lái xe KITTI. Bộ dữ liệu này sao chép 5 chuỗi từ bộ dữ liệu KITTI gốc và kết xuất lại chúng trong nhiều điều kiện thời tiết và ánh sáng khác nhau, cung cấp ground truth dày đặc trên từng pixel.

Là một bộ dữ liệu lái xe ngoài trời tổng hợp, vKITTI2 cung cấp phiên bản dày đặc tương ứng với các điểm trả về LiDAR thưa của KITTI thực, trở thành nguồn hình học lái xe ngoài trời sạch hữu ích để huấn luyện các model ước tính độ sâu đơn ảnh.

Tính năng chính#

  • Bản tái tạo tổng hợp có tính chân thực ảnh của các cảnh lái xe KITTI.
  • 5 chuỗi được sao chép và kết xuất trong nhiều điều kiện thời tiết, ánh sáng khác nhau.
  • Môi trường lái xe ngoài trời.
  • Ground truth dày đặc trên từng pixel (phiên bản dày đặc tương ứng với LiDAR KITTI thực thưa).
  • Phạm vi độ sâu ~80 m.
  • Đóng góp 42,520 ảnh (25,780 train / 16,740 val) vào tập dữ liệu kết hợp dùng để huấn luyện độ sâu của Ultralytics.

Cấu trúc bộ dữ liệu#

Bộ dữ liệu độ sâu Virtual KITTI 2 được chia thành hai tập con:

  1. Train: 25,780 ảnh kèm depth map dày đặc tương ứng để huấn luyện.
  2. Val: 16,740 ảnh kèm depth map dày đặc tương ứng để validation trong quá trình huấn luyện.

Mỗi ảnh RGB được ghép với một PNG độ sâu uint16 đã scale, tuân theo định dạng bộ dữ liệu độ sâu của Ultralytics. Ảnh PNG nguồn và ảnh PNG đã chuyển đổi sử dụng đơn vị centimet (depth_scale: 100), nhờ đó bảo toàn phạm vi huấn luyện 80 m.

Vai trò trong YOLO26-Depth#

Virtual KITTI 2 là một trong các nguồn huấn luyện của tập hợp nhiều bộ dữ liệu quy mô lớn (~2.19M ảnh) được sử dụng để pretrain các model YOLO26-Depth của Ultralytics. Trong tập hợp này, vKITTI2 cung cấp phiên bản tổng hợp lái xe ngoài trời dày đặc tương ứng với ground truth LiDAR KITTI thực thưa.

Thiết lập này không có benchmark vKITTI2 độc lập với tập kiểm tra riêng. Thay vào đó, các model tạo ra được đánh giá trên những benchmark độ sâu đơn ảnh tiêu chuẩn: NYU Depth V2, KITTI, Make3D, ETH3D và iBims-1.

YAML của bộ dữ liệu#

Một tệp YAML được sử dụng để định nghĩa cấu hình tập dữ liệu. Nó chứa thông tin về các đường dẫn, các lớp và các thông tin liên quan khác của tập dữ liệu. Đối với Virtual KITTI 2, tệp depth-vkitti2.yaml định nghĩa các đường dẫn và lớp depth duy nhất.

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 16-bit *.png depth maps (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
depth_scale: 100 # source PNG value 100 = 1 meter (centimeters)

# Download script/URL (optional)
download: |
  import shutil
  from pathlib import Path

  import cv2
  import numpy as np

  from ultralytics.data.utils import save_depth_png
  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)
      save_depth_png(dir / "depth" / split / f"{name}.png", (depth.astype(np.float32) / 100.0).clip(max=80), scale=100)  # cm -> m -> cm PNG
      im.replace(dir / "images" / split / f"{name}.jpg")
  shutil.rmtree(dir / "source")

Cách sử dụng#

Để huấn luyện model YOLO26n-Depth trên bộ dữ liệu Virtual KITTI 2 với kích thước ảnh 640, bạn có thể sử dụng các đoạn code sau. Để xem danh sách đầy đủ các argument khả dụng, hãy tham khảo trang Training của model.

Ví dụ huấn luyện
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)

Các model đã tiền huấn luyện#

Họ độ sâu YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) tự động tải xuống từ các bản phát hành của Ultralytics và được huấn luyện trên tập hợp nhiều bộ dữ liệu quy mô lớn mà Virtual KITTI 2 là một phần trong đó. Khám phá YOLO26x-depth trên Ultralytics Platform.

Trích dẫn và ghi nhận đóng góp#

Nếu bạn sử dụng bộ dữ liệu Virtual KITTI 2 trong nghiên cứu hoặc công việc phát triển, vui lòng trích dẫn bài báo sau:

Trích dẫn
@article{cabon2020vkitti2,
      title={Virtual KITTI 2},
      author={Yohann Cabon and Naila Murray and Martin Humenberger},
      journal={arXiv preprint arXiv:2001.10773},
      year={2020}
}

Chúng tôi xin ghi nhận những người tạo ra Virtual KITTI 2 vì đã cung cấp bộ dữ liệu lái xe tổng hợp này cho cộng đồng computer vision.

FAQ#

  • Virtual KITTI 2 (vKITTI2) là một bản tái tạo tổng hợp chân thực quang học của năm chuỗi lái xe KITTI, được kết xuất lại dưới các điều kiện thời tiết và ánh sáng khác nhau. Nó đóng góp 42.520 hình ảnh (25.780 cho huấn luyện, 16.740 cho xác thực) với độ sâu dày đặc trên từng điểm ảnh lên đến khoảng 80 m vào tập hợp huấn luyện YOLO26-Depth.

  • Dữ liệu LiDAR của KITTI thực tế rất thưa thớt, chỉ có khoảng 16 đến 20% số điểm ảnh được gán nhãn, trong khi vKITTI2 cung cấp giá trị độ sâu dày đặc cho mọi điểm ảnh của cùng một loại cảnh lái xe. Cùng nhau, chúng cung cấp cho model cả thống kê cảm biến thực tế và hình học ngoài trời hoàn chỉnh.

  • Chạy yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640, hoặc sử dụng ví dụ Python trong phần Usage. Các tệp PNG độ sâu sử dụng đơn vị centimet (depth_scale: 100), cái mà tệp YAML đi kèm đã thiết lập sẵn.

Những người đóng góp

Bình luận