Link to this sectionمجموعة بيانات العمق DIODE#
DIODE (اختصار لـ Dense Indoor/Outdoor DEpth) هي مجموعة بيانات واقعية ذات جودة عالية جداً للعمق الكثيف، تم التقاطها باستخدام ماسح ليزر من الدرجة المساحية FARO Focus. ومن فرادتها أنها تغطي المشاهد الداخلية والخارجية بنفس المستشعر، مما يجعلها جسراً عالي الدقة بين العمق الداخلي قصير المدى والعمق الخارجي طويل المدى لـ تقدير العمق أحادي العين.
Link to this sectionالميزات الرئيسية#
- بيانات أرضية كثيفة وعالية الجودة للعمق من ماسح ليزر من الدرجة المساحية FARO Focus.
- تغطي كلاً من المشاهد الداخلية والخارجية التي تم التقاطها بنفس المستشعر.
- يمتد نطاق العمق من المسافات الداخلية القصيرة إلى المسافات الخارجية الطويلة، وصولاً إلى حوالي 80 متراً في مزيج Ultralytics.
- بيانات أرضية كثيفة ودقيقة لكل بكسل، محاذية لإطارات RGB.
- توفر بيانات أرضية كثيفة وعالية الدقة تربط بين النطاقات الداخلية والخارجية.
Link to this sectionهيكل مجموعة البيانات#
تنقسم مجموعة بيانات العمق DIODE إلى مجموعتين فرعيتين:
- Train: 25,458 صورة مع خرائط عمق مقترنة للتدريب.
- Val: 771 صورة مع خرائط عمق مقترنة للتحقق أثناء تدريب النموذج.
تتكون كل عينة من صورة RGB واحدة وخريطة عمق مقترنة بصيغة .npy وبنمط float32 تخزن مسافات كل بكسل بالأمتار، وذلك وفقاً لـ تنسيق مجموعة بيانات العمق من Ultralytics.
Link to this sectionدورها في YOLO26-Depth#
تعد DIODE مصدراً للتدريب ضمن مزيج التدريب المسبق متعدد مجموعات البيانات YOLO26-Depth من Ultralytics والذي يضم حوالي 2.19 مليون زوج من الصور والعمق. وهي تساهم ببيانات أرضية كثيفة عالية الدقة تربط بين النطاقات الداخلية والخارجية باستخدام مستشعر واحد، مما يساعد النموذج على التعميم عبر المشاهد قصيرة وطويلة المدى. يتم تقييم النماذج الناتجة على معايير NYU و KITTI و Make3D و ETH3D و iBims-1 القياسية.
Link to this sectionYAML مجموعة البيانات#
يتم استخدام ملف YAML (Yet Another Markup Language) لتحديد إعدادات مجموعة البيانات. وهو يحتوي على معلومات حول مسارات مجموعة البيانات، والفئات، ومعلومات أخرى ذات صلة.
# 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")Link to this sectionالاستخدام#
لتدريب نموذج 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)Link to this sectionالنماذج المدربة مسبقاً#
تم تدريب عائلة عمق YOLO26 على مزيج واسع من التدريب المسبق للعمق متعدد مجموعات البيانات الذي تعد DIODE جزءاً منه. يتم تنزيل هذه النماذج تلقائياً من أحدث إصدار لـ Ultralytics، على سبيل المثال YOLO26x-depth من الإصدار v8.4.0، وهي تغطي مجموعة من الأحجام لتلبية متطلبات الدقة والموارد المختلفة.
Link to this sectionالاقتباسات والشكر#
إذا كنت تستخدم مجموعة بيانات 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}
}نود أن نشكر المؤلفين على إنشاء والحفاظ على هذا المورد القيم لمجتمع الرؤية الحاسوبية.