Ultralytics YOLO27:

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

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

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

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

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

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

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

تتكون كل عينة من صورة RGB واحدة وملف PNG واحد مقترن للعمق من النوع uint16، مع 256 وحدة لكل متر (depth_scale: 256)، وفقًا لـتنسيق مجموعة بيانات العمق في Ultralytics. ويوفر ذلك دقة تبلغ 3.90625 مم مع تمثيل النطاق الخارجي الكامل البالغ 80 مترًا.

دور ARKitScenes في YOLO26-Depth#

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

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

يُستخدم ملف YAML لتحديد تكوين مجموعة البيانات. ويحتوي على معلومات حول مسارات مجموعة البيانات، والفئات، ومعلومات أخرى ذات صلة.

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 16-bit *.png depth maps (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
depth_scale: 256 # PNG value 256 = 1 meter; represents the 80 m outdoor range

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

  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 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>/*.png
  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
          save_depth_png(dir / "depth" / split / f"{name[:-4]}.png", depth.clip(max=80), scale=256)
          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}
}

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

الأسئلة الشائعة#

  • تلتقط DIODE المشاهد الداخلية والخارجية باستخدام نفس ماسح الليزر عالي الدقة FARO Focus، مما ينتج حقيقة أساسية للعمق كثيفة للغاية ودقيقة عبر نطاقات داخلية قصيرة وخارجية طويلةة. تغطية المستشعر الفردي هذه تجعل مجموعة بيانات DIODE جسراً عالي الدقة بين النطاقات الداخلية والخارجية في مزيج تدريب YOLO26-Depth.

  • يوفر تكوين Ultralytics 25,458 زوجاً من صور التدريب والتحقق البالغ عددها 771 زوجاً. يتم تخزين العمق بتنسيق ملفات PNG ذات 16 بت بدون إشارة (uint16) مع 256 وحدة لكل متر (depth_scale: 256)، مما يحافظ على دقة 3.9 مم مع تغطية نطاق خارجي كامل يبلغ 80 متراً موصوفاً في Ultralytics depth dataset format.

  • قم بتحميل نقطة تفتيش عمق مدربة مسبقاً ووجه data إلى ملف YAML المرفق، على سبيل المثال yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. راجع قسم Usage للحصول على مكافئ Python وصفحة Training لجميع الوسائط.

المساهمون

التعليقات