مجموعة بيانات العمق DIODE#
DIODE (العمق الكثيف الداخلي/الخارجي) مجموعة بيانات واقعية تضم حقيقة أرضية كثيفة عالية الجودة جدًا للعمق، ملتقطة بماسح ليزري FARO Focus مخصص لأعمال المساحة. وتتميز بتغطيتها للمشاهد الداخلية والخارجية باستخدام المستشعر نفسه، ما يجعلها حلقة وصل عالية الدقة بين العمق الداخلي قصير المدى والعمق الخارجي طويل المدى في تقدير العمق أحادي العين.
الميزات الرئيسية#
- حقيقة أرضية كثيفة عالية الجودة جدًا للعمق، ملتقطة بماسح ليزري FARO Focus مخصص لأعمال المساحة.
- تغطي مشاهد داخلية وخارجية ملتقطة بالمستشعر نفسه.
- يمتد نطاق العمق من المسافات الداخلية القصيرة إلى المسافات الخارجية الطويلة، حتى نحو 80 م في مزيج Ultralytics.
- حقيقة أرضية كثيفة ودقيقة لكل بكسل، ومحاذاة مع إطارات RGB.
- توفر حقيقة أرضية كثيفة عالية الدقة تصل بين المجالين الداخلي والخارجي.
بنية مجموعة البيانات#
تنقسم مجموعة بيانات العمق DIODE إلى مجموعتين فرعيتين:
- التدريب: 25,458 صورة مع خرائط عمق مقترنة للتدريب.
- التحقق: 771 صورة مع خرائط عمق مقترنة للتحقق أثناء تدريب النموذج.
تتكون كل عينة من صورة RGB واحدة وصورة عمق PNG واحدة مقترنة بدقة uint16، مع 256 وحدة لكل متر (depth_scale: 256)، وفق تنسيق مجموعة بيانات العمق من Ultralytics. يتيح ذلك دقة تبلغ 3.90625 mm مع تمثيل كامل النطاق الخارجي البالغ 80 م. ينزّل ملف YAML لمجموعة البيانات أرشيفات DIODE الرسمية (~84 GB) ويحوّلها تلقائيًا إلى هذا التنسيق عند الاستخدام الأول.
دورها في YOLO26-Depth#
تُعد DIODE مصدرًا للتدريب ضمن مزيج التدريب المسبق متعدد مجموعات البيانات لنموذج Ultralytics YOLO26-Depth، والذي يضم نحو 2.19M زوجًا من الصور والعمق. وهي تسهم بحقيقة أرضية كثيفة عالية الدقة تصل بين المجالين الداخلي والخارجي باستخدام مستشعر واحد، ما يساعد النموذج على التعميم عبر المشاهد القصيرة والطويلة المدى. وتُقيّم النماذج الناتجة على معايير NYU وKITTI وMake3D وETH3D وiBims-1 القياسية.
ملف YAML لمجموعة البيانات#
يُستخدم ملف 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
# تحميل نموذج
model = YOLO("yolo26n-depth.pt") # حمّل نموذج عمق مدرّبًا مسبقًا (موصى به للتدريب)
# تدريب النموذج
results = model.train(data="depth-diode.yaml", epochs=100, imgsz=640)النماذج المدربة مسبقًا#
تُدرّب عائلة نماذج YOLO26 للعمق على مزيج التدريب المسبق الواسع للعمق متعدد مجموعات البيانات، الذي تُعد DIODE جزءًا منه. تُنزّل هذه النماذج تلقائيًا عند استخدامها لأول مرة من إصدار أصول v8.4.0 من Ultralytics، مثل YOLO26x-depth، وتتوفر بأحجام مختلفة لتلبية متطلبات الدقة والموارد المتنوعة.
الاستشهادات والشكر والتقدير#
إذا استخدمت مجموعة بيانات 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 نفسه والمخصص لأعمال المساحة، منتجةً حقيقة أرضية كثيفة ودقيقة جدًا للعمق عبر النطاقات الداخلية القصيرة والخارجية الطويلة. وتجعلها هذه التغطية بمستشعر واحد حلقة وصل عالية الدقة بين المجالين الداخلي والخارجي في مزيج تدريب YOLO26-Depth.
يوفر إعداد Ultralytics عدد 25,458 زوجًا من الصور والعمق للتدريب و771 زوجًا للتحقق. يُخزن العمق في صور PNG بدقة uint16 وبمعدل 256 وحدة لكل متر (
depth_scale: 256)، ما يحافظ على دقة 3.9 mm مع تغطية النطاق الخارجي الكامل البالغ 80 م والمذكور في تنسيق مجموعة بيانات العمق من Ultralytics.