Ultralytics YOLO27:
No license

مجموعة بيانات العمق SUN RGB-D#

SUN RGB-D معيار لفهم المشاهد الداخلية في العالم الحقيقي، جُمعت بياناته باستخدام أربعة مستشعرات RGB-D مختلفة: Intel RealSense وAsus Xtion وMicrosoft Kinect v1 وv2. يجعل تصميمه متعدد المستشعرات منه مصدرًا قيّمًا لتنوع العمق الواقعي في تقدير العمق أحادي العين.

استكشف SUN RGB-D على منصة Ultralytics لمعاينة أزواج RGB والعمق، وفحص إحصاءات مجموعة البيانات، واستنساخها للتدريب.

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

  • جُمعت البيانات باستخدام أربعة مستشعرات RGB-D مختلفة (Intel RealSense وAsus Xtion وMicrosoft Kinect v1 وv2)، ما يوفر تنوعًا حقيقيًا متعدد المستشعرات.
  • تغطي مجموعة واسعة من المشاهد الداخلية الواقعية لأبحاث فهم المشاهد.
  • يصل مدى العمق إلى نحو 10 أمتار، وهو مدى نموذجي لالتقاط بيانات RGB-D الداخلية باستخدام الأجهزة الاستهلاكية.
  • حقيقة أرضية للعمق مستمدة من المستشعرات ومحاذاة لإطارات RGB.
  • تضيف تنوعًا داخليًا واقعيًا متعدد المستشعرات إلى مزيج التدريب المسبق للعمق من Ultralytics.

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

تنقسم مجموعة بيانات العمق SUN RGB-D إلى مجموعتين فرعيتين:

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

تتألف كل عينة من صورة RGB واحدة وملف PNG للعمق uint16 مُقاس ومقترن بها، وفقًا لـتنسيق مجموعة بيانات العمق من Ultralytics. ينزّل ملف YAML لمجموعة البيانات أرشيف المصدر (~6.5 GB) ويحوّله تلقائيًا عند الاستخدام الأول، مع كتابة القيم بالملليمترات، لذا ينطبق depth_scale: 1000 الافتراضي.

دورها في YOLO26-Depth#

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

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

يُستخدم ملف YAML لتعريف إعدادات مجموعة البيانات. ويتضمن معلومات عن مسارات مجموعة البيانات وفئاتها وغيرها من المعلومات ذات الصلة.

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

# SUN RGB-D dataset for monocular depth estimation — real indoor, multi-sensor RGB-D (RealSense/Xtion/Kinect), up to ~10 m
# Documentation: https://docs.ultralytics.com/datasets/depth/sunrgbd
# Example usage: yolo depth train data=depth-sunrgbd.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
#     └── depth-sunrgbd  ← downloads here (6.5 GB archive, ~14 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-sunrgbd dir and re-run to rebuild it.

path: depth-sunrgbd # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 9245 images
val: images/val # val images (relative to 'path') 1090 images

nc: 1
names:
  0: depth

channels: 3

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

  import cv2
  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 archive (~6.5 GB), then convert each of the 10335 scenes:
  # refined depth_bfx PNGs decode via the SUN RGB-D bit-rotation (d>>3 | d<<13) to millimeters,
  # clipped at 10 m; a deterministic random 1090-scene subset (seed 0) forms the val split
  dir = Path(yaml["path"])  # dataset root dir
  download(["https://rgbd.cs.princeton.edu/data/SUNRGBD.zip"], dir=dir / "source", delete=True, exist_ok=True)
  for split in ("train", "val"):
      (dir / "images" / split).mkdir(parents=True, exist_ok=True)
      (dir / "depth" / split).mkdir(parents=True, exist_ok=True)
  scenes = sorted(p.parent for p in (dir / "source" / "SUNRGBD").rglob("depth_bfx"))
  names = ["_".join(s.relative_to(dir / "source" / "SUNRGBD").parts) for s in scenes]
  val = set(random.Random(0).sample(names, k=1090))
  for scene, name in TQDM(zip(scenes, names), total=len(scenes), desc="Converting"):
      split = "val" if name in val else "train"
      d = cv2.imread(str(next((scene / "depth_bfx").glob("*.png"))), cv2.IMREAD_ANYDEPTH)
      d = (((d >> 3) | (d << 13)) / 1000.0).clip(max=10).astype(np.float32)  # bit-rotated mm -> m
      save_depth_png(dir / "depth" / split / f"{name}.png", d)
      next((scene / "image").glob("*.jpg")).replace(dir / "images" / split / f"{name}.jpg")
  shutil.rmtree(dir / "source")

الاستخدام#

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

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

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-depth.pt")  # ⁨حمّل نموذج عمق مدرّبًا مسبقًا (موصى به للتدريب)⁩

# ⁨تدريب النموذج⁩
results = model.train(data="depth-sunrgbd.yaml", epochs=100, imgsz=640)

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

تُدرّب عائلة YOLO26 للعمق على مزيج التدريب المسبق متعدد مجموعات البيانات الواسع الذي تشكل SUN RGB-D جزءًا منه. وتُنزّل هذه النماذج تلقائيًا عند الاستخدام الأول من إصدار الأصول v8.4.0 لدى Ultralytics، مثل YOLO26x-depth، وتشمل أحجامًا متعددة لتلبية متطلبات الدقة والموارد المختلفة.

الاستشهادات والشكر والتقدير#

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

اقتباس
@inproceedings{song2015sunrgbd,
      title={SUN RGB-D: A RGB-D Scene Understanding Benchmark Suite},
      author={Song, Shuran and Lichtenberg, Samuel P. and Xiao, Jianxiong},
      booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
      year={2015}
}

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

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

  • SUN RGB-D معيار لفهم المشاهد الداخلية في العالم الحقيقي، جُمعت بياناته باستخدام أربعة مستشعرات RGB-D: Intel RealSense وAsus Xtion وMicrosoft Kinect v1 وv2. ويوفر إعداد Ultralytics 9,245 زوجًا من الصور والعمق للتدريب و1,090 زوجًا للتحقق، بأعماق تصل إلى نحو 10 m.

  • تُقرن كل صورة RGB بملف PNG من نوع uint16، والقيم فيه بالملليمترات، لذا ينطبق depth_scale: 1000 الافتراضي، وفقًا لـتنسيق مجموعة بيانات العمق من Ultralytics. ومجموعة بيانات الاختبار Depth8 المدمجة مأخوذة من SUN RGB-D وتستخدم التنسيق نفسه.

  • شغّل yolo depth train data=depth-sunrgbd.yaml model=yolo26n-depth.pt epochs=100 imgsz=640، أو استخدم مثال Python في قسم الاستخدام. ويمكنك أيضًا تصفح مجموعة البيانات واستنساخها على منصة Ultralytics.

المساهمون

التعليقات