أمن جاهز للمؤسسات: متوافقة مع ISO 27001 و SOC 2 Type I.

Link to this sectionمجموعة بيانات العمق Virtual KITTI 2#

Virtual KITTI 2 (vKITTI2) هي إعادة إنشاء اصطناعية واقعية لمشاهد القيادة في KITTI. تستنسخ 5 تسلسلات من مجموعة بيانات KITTI الأصلية وتعيد عرضها في ظل ظروف طقس وإضاءة متنوعة، مما يوفر حقيقة أرضية كثيفة لكل بكسل.

بصفتها مجموعة بيانات اصطناعية للقيادة في الأماكن الخارجية، توفر vKITTI2 نظيراً كثيفاً لبيانات LiDAR المتفرقة في KITTI الحقيقية، مما يجعلها مصدراً مفيداً لهندسة القيادة الخارجية النظيفة لتدريب نماذج تقدير العمق أحادية العين.

Link to this sectionالميزات الرئيسية#

  • إعادة إنشاء اصطناعية واقعية لمشاهد القيادة في KITTI.
  • 5 تسلسلات مستنسخة تم عرضها في ظل ظروف طقس وإضاءة متنوعة.
  • بيئات القيادة الخارجية.
  • حقيقة أرضية كثيفة لكل بكسل (نظير كثيف لبيانات LiDAR المتفرقة في KITTI الحقيقية).
  • نطاق العمق ~80 متراً.
  • تساهم بـ 42,520 صورة (25,780 للتدريب / 16,740 للتحقق) في مجموعة تدريب العمق الخاصة بـ Ultralytics.

Link to this sectionهيكل مجموعة البيانات#

تم تقسيم مجموعة بيانات العمق Virtual KITTI 2 إلى مجموعتين فرعيتين:

  1. Train (التدريب): 25,780 صورة مع خرائط عمق كثيفة مقترنة للتدريب.
  2. Val (التحقق): 16,740 صورة مع خرائط عمق كثيفة مقترنة للتحقق أثناء التدريب.

كل صورة RGB مقترنة بخريطة عمق .npy بصيغة float32 تخزن المسافات لكل بكسل بالأمتار، وذلك باتباع تنسيق مجموعة بيانات العمق Ultralytics.

Link to this sectionالدور في YOLO26-Depth#

تعد Virtual KITTI 2 واحدة من مصادر التدريب في مزيج متعدد مجموعات البيانات الموسع (~2.19 مليون صورة) المستخدم لتدريب نماذج Ultralytics YOLO26-Depth مسبقاً. ضمن هذا المزيج، توفر vKITTI2 نظيراً اصطناعياً كثيفاً للقيادة الخارجية مقابل حقيقة أرضية KITTI LiDAR الحقيقية المتفرقة.

لا يوجد معيار vKITTI2 مستقل في هذا الإعداد. بدلاً من ذلك، يتم تقييم النماذج الناتجة وفقاً لمعايير العمق أحادية العين القياسية: NYU Depth V2 و KITTI و Make3D و ETH3D و iBims-1.

Link to this sectionYAML مجموعة البيانات#

يتم استخدام ملف YAML (لغة توصيف أخرى) لتحديد تكوين مجموعة البيانات. وهو يحتوي على معلومات حول مسارات مجموعة البيانات، والفئات، وغيرها من المعلومات ذات الصلة. بالنسبة لـ 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")

Link to this sectionالاستخدام#

لتدريب نموذج YOLO26n-Depth على مجموعة بيانات Virtual KITTI 2 بحجم صورة 640، يمكنك استخدام مقتطفات الكود التالية. للحصول على قائمة شاملة بالوسيطات المتاحة، ارجع إلى صفحة التدريب الخاصة بالنموذج.

مثال على التدريب
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النماذج المدربة مسبقاً#

عائلة عمق YOLO26 (yolo26n-depth.pt، yolo26s-depth.pt، yolo26m-depth.pt، yolo26l-depth.pt، yolo26x-depth.pt) يتم تنزيلها تلقائياً من إصدار v8.4.0 وهي مدربة على مزيج متعدد مجموعات البيانات الموسع الذي تعد Virtual KITTI 2 جزءاً منه.

Link to this sectionالاقتباسات والشكر#

إذا كنت تستخدم مجموعة بيانات 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 على إتاحة مجموعة بيانات القيادة الاصطناعية هذه لمجتمع رؤية الكمبيوتر.

المساهمون

التعليقات