مجموعة بيانات العمق Virtual KITTI 2#
Virtual KITTI 2 (vKITTI2) إعادة إنشاء اصطناعية واقعية بصريًا لمشاهد القيادة في KITTI. تستنسخ 5 تسلسلات من مجموعة بيانات KITTI الأصلية، ثم تعيد تصييرها في ظل ظروف طقس وإضاءة متنوعة، موفرةً حقيقة أرضية كثيفة لكل بكسل.
بوصفها مجموعة بيانات اصطناعية للقيادة في الهواء الطلق، توفر vKITTI2 نظيرًا كثيفًا لقياسات LiDAR الحقيقية المتناثرة في KITTI، ما يجعلها مصدرًا مفيدًا للهندسة النظيفة للقيادة الخارجية لتدريب نماذج تقدير العمق أحادي العين.
الميزات الرئيسية#
- إعادة إنشاء اصطناعية واقعية بصريًا لمشاهد القيادة في KITTI.
- 5 تسلسلات مستنسخة صُيّرت في ظل ظروف طقس وإضاءة متنوعة.
- بيئات قيادة خارجية.
- حقيقة أرضية كثيفة لكل بكسل (نظير كثيف لبيانات LiDAR الحقيقية المتناثرة في KITTI).
- مدى عمق ~80 m.
- تضيف 42,520 صورة (25,780 للتدريب / 16,740 للتحقق) إلى مزيج تدريب العمق من Ultralytics.
بنية مجموعة البيانات#
تنقسم مجموعة بيانات العمق Virtual KITTI 2 إلى مجموعتين فرعيتين:
- التدريب: 25,780 صورة مع خرائط عمق كثيفة مقترنة للتدريب.
- التحقق: 16,740 صورة مع خرائط عمق كثيفة مقترنة للتحقق أثناء التدريب.
تُقرن كل صورة RGB بملف PNG للعمق uint16 مُقاس، وفقًا لـتنسيق مجموعة بيانات العمق من Ultralytics. وتستخدم ملفات PNG المصدرية والمحوّلة السنتيمترات (depth_scale: 100)، ما يحافظ على نطاق التدريب البالغ 80 m. ينزّل ملف YAML لمجموعة البيانات أرشيفات المصدر (~15 GB) ويحوّلها تلقائيًا عند الاستخدام الأول.
دورها في YOLO26-Depth#
تُعد Virtual KITTI 2 أحد مصادر التدريب ضمن المزيج الواسع متعدد مجموعات البيانات (~2.19M صورة) المستخدم للتدريب المسبق لنماذج Ultralytics YOLO26-Depth. وفي هذا المزيج، توفر vKITTI2 نظيرًا اصطناعيًا كثيفًا للقيادة الخارجية، مقابل حقيقة العمق الأرضية المتناثرة لبيانات LiDAR الحقيقية في KITTI.
لا يوجد في هذا الإعداد معيار مستقل لـ vKITTI2 مع مجموعة اختبار محجوبة. وبدلًا من ذلك، تُقيّم النماذج الناتجة على معايير العمق أحادي العين القياسية: NYU Depth V2 وKITTI وMake3D وETH3D وiBims-1.
ملف YAML لمجموعة البيانات#
يُستخدم ملف YAML لتعريف إعدادات مجموعة البيانات. ويحتوي على معلومات حول مسارات مجموعة البيانات وفئاتها وغيرها من المعلومات ذات الصلة. وبالنسبة إلى Virtual KITTI 2، يحدد ملف depth-vkitti2.yaml المسارات وفئة depth الوحيدة.
# 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")الاستخدام#
لتدريب نموذج YOLO26n-Depth على مجموعة بيانات Virtual KITTI 2 بحجم صورة 640، يمكنك استخدام مقتطفات التعليمات البرمجية التالية. للاطلاع على قائمة شاملة بالوسائط المتاحة، راجع صفحة التدريب الخاصة بالنموذج.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n-depth.pt") # تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)
# تدريب النموذج
results = model.train(data="depth-vkitti2.yaml", epochs=100, imgsz=640)النماذج المدربة مسبقًا#
تُنزّل عائلة YOLO26 للعمق (yolo26n-depth.pt، yolo26s-depth.pt، yolo26m-depth.pt، yolo26l-depth.pt، yolo26x-depth.pt) تلقائيًا من إصدارات Ultralytics، وتُدرّب على المزيج الواسع متعدد مجموعات البيانات الذي تشكل Virtual KITTI 2 جزءًا منه. استكشف YOLO26x-depth على منصة Ultralytics.
الاستشهادات والشكر والتقدير#
إذا استخدمت مجموعة بيانات 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 لإتاحة مجموعة بيانات القيادة الاصطناعية هذه لمجتمع الرؤية الحاسوبية.
الأسئلة الشائعة#
Virtual KITTI 2 (vKITTI2) إعادة إنشاء اصطناعية واقعية بصريًا لخمسة تسلسلات قيادة من KITTI، أُعيد تصييرها في ظل ظروف طقس وإضاءة متنوعة. وتضيف إلى مزيج تدريب YOLO26-Depth عدد 42,520 صورة (25,780 للتدريب و16,740 للتحقق) بعمق كثيف لكل بكسل يصل إلى نحو 80 m.
بيانات عمق LiDAR في KITTI الحقيقية متناثرة، إذ لا تحمل سوى نحو 16 إلى 20% من البكسلات تسميات، بينما توفر vKITTI2 قيمة عمق كثيفة لكل بكسل في مشهد قيادة مماثل. وتمنح البيانات مجتمعةً النموذج إحصاءات المستشعرات الحقيقية والهندسة الخارجية الكاملة.
شغّل
yolo depth train data=depth-vkitti2.yaml model=yolo26n-depth.pt epochs=100 imgsz=640، أو استخدم مثال Python في قسم الاستخدام. تستخدم ملفات PNG للعمق السنتيمترات (depth_scale: 100)، وقد ضُبط ذلك مسبقًا في ملف YAML المضمّن.