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. تكتب عملية التحويل المضمنة القيم بالملليمترات، ولذلك يُطبَّق depth_scale: 1000 افتراضيًا.

دور ARKitScenes في YOLO26-Depth#

تُعد SUN RGB-D مصدرًا للتدريب ضمن مزيج التدريب المسبق متعدد مجموعات البيانات YOLO26-Depth في Ultralytics، والذي يضم نحو 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

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

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

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

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

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

إذا استخدمت مجموعة بيانات 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 الإصدار 1 و2. يوفر تكوين Ultralytics عدد 9,245 زوجاً من صور العمق للتدريب و1,090 زوجاً للتحقق بمعماق تصل إلى حوالي 10 أمتار.

  • يتم إقران كل صورة 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.

المساهمون

التعليقات