YOLO Vision 2026:

مجموعة بيانات العمق DIODE#

مجموعة بيانات DIODE (Dense Indoor/Outdoor DEpth) هي مجموعة بيانات حقيقية ذات بيانات أساسية عالية الجودة للعمق الكثيف تم التقاطها بواسطة ماسح ضوئي ليزر بدرجة مسح من نوع FARO Focus. وما يميزها حقاً هو تغطيتها للمشاهد الداخلية والخارجية باستخدام المستشعر نفسه، مما يجعلها جسراً عالي الدقة بين العمق الداخلي قصير المدى والخارجية طويل المدى لمهام تقدير العمق أحادي العين.

الميزات الرئيسية#

  • بيانات أرضية كثيفة وعالية الجودة للعمق من ماسح ليزر من الدرجة المساحية FARO Focus.
  • تغطي كلاً من المشاهد الداخلية والخارجية التي تم التقاطها بنفس المستشعر.
  • يمتد نطاق العمق من المسافات الداخلية القصيرة إلى المسافات الخارجية الطويلة، وصولاً إلى حوالي 80 متراً في مزيج Ultralytics.
  • بيانات أرضية كثيفة ودقيقة لكل بكسل، محاذية لإطارات RGB.
  • توفر بيانات أرضية كثيفة وعالية الدقة تربط بين النطاقات الداخلية والخارجية.

هيكل مجموعة البيانات#

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

  1. Train: 25,458 صورة مع خرائط عمق مقترنة للتدريب.
  2. Val: 771 صورة مع خرائط عمق مقترنة للتحقق أثناء تدريب النموذج.

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

الدور في YOLO26-Depth#

تعد DIODE مصدراً للتدريب ضمن مزيج التدريب المسبق متعدد مجموعات البيانات YOLO26-Depth من Ultralytics والذي يضم حوالي 2.19 مليون زوج من الصور والعمق. وهي تساهم ببيانات أرضية كثيفة عالية الدقة تربط بين النطاقات الداخلية والخارجية باستخدام مستشعر واحد، مما يساعد النموذج على التعميم عبر المشاهد قصيرة وطويلة المدى. يتم تقييم النماذج الناتجة على معايير NYU و KITTI و Make3D و ETH3D و iBims-1 القياسية.

YAML مجموعة البيانات#

يتم استخدام ملف YAML (Yet Another Markup Language) لتحديد تكوين مجموعة البيانات. وهو يحتوي على معلومات حول مسارات مجموعة البيانات، والفئات، ومعلومات أخرى ذات صلة.

ultralytics/cfg/datasets/depth-diode.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# DIODE dataset for monocular depth estimation — real indoor + outdoor, FARO Focus survey-grade laser, depth up to ~80 m
# Documentation: https://docs.ultralytics.com/datasets/depth/diode
# Example usage: yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── depth-diode  ← downloads here (84 GB archives, ~90 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-diode dir and re-run to rebuild it.

path: depth-diode # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 25458 images
val: images/val # val images (relative to 'path') 771 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 numpy as np

  from ultralytics.utils import TQDM
  from ultralytics.utils.downloads import download

  # Download and extract the official archives (train ~81 GB, val ~2.6 GB), then convert:
  # flatten <split>/<scene>/<scan>/*.png into images/<split>/ and save the paired *_depth.npy
  # (masked invalid -> 0, clipped at 80 m) as depth/<split>/*.npy
  dir = Path(yaml["path"])  # dataset root dir
  download([f"https://diode-dataset.s3.amazonaws.com/{s}.tar.gz" for s in ("train", "val")], 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" / split).rglob("*.png")), desc=f"Converting {split}"):
          name = "_".join(im.relative_to(dir / "source").parts)  # train/indoors/scene/scan/x.png -> train_indoors_scene_scan_x.png
          depth = np.load(im.with_name(f"{im.stem}_depth.npy")).squeeze().astype(np.float32)
          depth[np.load(im.with_name(f"{im.stem}_depth_mask.npy")) == 0] = 0.0  # zero out invalid pixels
          np.save(dir / "depth" / split / f"{name[:-4]}.npy", depth.clip(max=80))
          im.replace(dir / "images" / split / name)
  shutil.rmtree(dir / "source")

الاستخدام#

لتدريب نموذج YOLO26n-depth على مجموعة بيانات DIODE بحجم صورة يبلغ 640، يمكنك استخدام مقاطع الكود التالية. للحصول على قائمة شاملة بالوسائط المتاحة، راجع صفحة التدريب الخاصة بالنموذج.

مثال على التدريب
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load a pretrained depth model (recommended for training)

# Train the model
results = model.train(data="depth-diode.yaml", epochs=100, imgsz=640)

النماذج المدربة مسبقاً#

تخضع عائلة نماذج العمق YOLO26 للتدريب على مزيج التدريب المسبق للعمق الواسع المتعدد لمجموعات البيانات الذي تعد DIODE جزءاً منه. يتم تنزيل هذه النماذج تلقائياً من أحدث إصدار من Ultralytics، على سبيل المثال YOLO26x-depth بدءاً من الإصدار v8.4.0، وتغطي مجموعة من الأحجام لتلبية متطلبات الدقة والموارد المختلفة.

الاقتباسات والشكر#

إذا كنت تستخدم مجموعة بيانات DIODE في بحثك أو عملك التطويري، يرجى الاستشهاد بالورقة البحثية التالية:

اقتباس
@article{vasiljevic2019diode,
      title={DIODE: A Dense Indoor and Outdoor DEpth Dataset},
      author={Vasiljevic, Igor and Kolkin, Nick and Zhang, Shanyi and Luo, Ruotian and Wang, Haochen and Dai, Falcon Z. and Daniele, Andrea F. and Mostajabi, Mohammadreza and Basart, Steven and Walter, Matthew R. and Shakhnarovich, Gregory},
      journal={arXiv preprint arXiv:1908.00463},
      year={2019}
}

نود أن نشكر المؤلفين على إنشاء هذا المورد القيم والحفاظ عليه لمجتمع رؤية الكمبيوتر.

المساهمون

التعليقات