Ultralytics YOLO27:

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

مجموعة ARKitScenes هي مجموعة بيانات RGB-D داخلية واسعة النطاق من العالم الحقيقي، التُقطت باستخدام ARKit من Apple على أجهزة iPad Pro المزودة بماسح LiDAR. وهي أكبر مجموعة بيانات RGB-D داخلية من العالم الحقيقي من نوعها، وتوفر مشاهد داخلية متنوعة ملتقطة طبيعيًا مع بيانات مرجعية دقيقة للعمق من أجل تقدير العمق أحادي العين.

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

  • التُقطت البيانات باستخدام ماسح LiDAR وكاميرا RGB في ARKit من Apple على جهاز iPad Pro، ما أنتج بيانات مستشعر حقيقية (غير اصطناعية).
  • تغطي المجموعة مشاهد داخلية متنوعة لفهم المشاهد الداخلية ثلاثية الأبعاد.
  • نطاق عمق قصير، يبلغ نحو 0.5–6 م (وسيط أقصى عمق نحو 2.4 م)، وهو نمطي لالتقاط البيانات داخل المباني باستخدام أجهزة محمولة باليد.
  • بيانات حقيقة أرضية كثيفة للعمق، مشتقة من LiDAR ومحاذاة مع إطارات RGB.
  • أكبر مصدر واقعي منفرد في مزيج التدريب المسبق للعمق لدى Ultralytics.

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

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

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

تتكون كل عينة من صورة RGB واحدة وصورة عمق PNG واحدة مقترنة بدقة uint16 وبوحدة المليمتر (depth_scale: 1000)، وفق تنسيق مجموعة بيانات العمق من Ultralytics. هذه الأعداد هي للمجموعة الفرعية المستخدمة في النماذج المنشورة، والمكوّنة من 4,347 من أصل 4,520 فيديو تدريب و102 من أصل 551 فيديو تحقق؛ وينتج عن تحويل التقسيمات كاملةً عدد أكبر من الأزواج.

الحصول على البيانات#

لا يتوفر تنزيل تلقائي لـ ARKitScenes — إذ توزّع Apple البيانات، ويتطلب تنزيلها قبول شروط الترخيص في مستودع ARKitScenes. استنسخ المستودع ونزّل الأصول lowres_wide (RGB) وlowres_depth من المجموعة الفرعية الخام، التي تشمل كامل تقسيمي التدريب، المكوّن من 4,520 فيديو، والتحقق، المكوّن من 551 فيديو. قائمة الفيديوهات إلزامية، وتمرير ملف CSV الخاص بالتقسيم من دون --split يجلب مجموعتي البيانات في استدعاء واحد:

git clone https://github.com/apple/ARKitScenes && cd ARKitScenes
python3 download_data.py raw --video_id_csv raw/raw_train_val_splits.csv \
  --raw_dataset_assets lowres_wide lowres_depth --download_dir ./data

تُحفظ الإطارات في data/raw/{Training,Validation}/<video_id>/{lowres_wide,lowres_depth}/. خصص نحو 2.5 TB من مساحة القرص: تعمل التدفقات الخام بمعدل ~60 FPS، ويحتفظ التحويل أدناه بكل إطار رقم 30 (~2 Hz).

إطارات العمق هي صور PNG من نوع uint16 بوحدة المليمتر (القيمة 0 تعني غير صالح)، وأسماء ملفات RGB والعمق هي طوابع زمنية للالتقاط لا تتطابق تمامًا — لذا أقرن كل إطار RGB بإطار العمق ذي الطابع الزمني الأقرب. مرجع التحويل إلى تنسيق مجموعة بيانات العمق من Ultralytics:

import shutil
from bisect import bisect_left
from pathlib import Path

src, dst = Path("data/raw"), Path("datasets/depth-arkitscenes")
for split, out in (("Training", "train"), ("Validation", "val")):
    (dst / f"images/{out}").mkdir(parents=True, exist_ok=True)
    (dst / f"depth/{out}").mkdir(parents=True, exist_ok=True)
    for video in sorted((src / split).iterdir()):
        depths = sorted((video / "lowres_depth").glob("*.png"), key=lambda p: float(p.stem.split("_")[-1]))
        if not depths:
            continue
        times = [float(p.stem.split("_")[-1]) for p in depths]
        rgbs = sorted((video / "lowres_wide").glob("*.png"), key=lambda p: float(p.stem.split("_")[-1]))
        for rgb in rgbs[30::30]:  # every 30th frame of the ~60 FPS capture (~2 Hz)
            t = float(rgb.stem.split("_")[-1])
            i = min(bisect_left(times, t), len(times) - 1)
            if i and t - times[i - 1] < times[i] - t:
                i -= 1  # nearest-timestamp depth frame
            name = f"{out}_{video.name}_{depths[i].stem}"
            shutil.copy2(rgb, dst / f"images/{out}/{name}.png")
            shutil.copy2(depths[i], dst / f"depth/{out}/{name}.png")

دورها في YOLO26-Depth#

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

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

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

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

# ARKitScenes dataset for monocular depth estimation — real indoor RGB-D from Apple ARKit (iPad Pro LiDAR), depth ~0.5-6 m
# Documentation: https://docs.ultralytics.com/datasets/depth/arkitscenes
# Example usage: yolo depth train data=depth-arkitscenes.yaml model=yolo26n-depth.pt
# No autodownload — obtain the source data (see docs) and arrange it as below.
# parent
# ├── ultralytics
# └── datasets
#     └── depth-arkitscenes
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)

path: depth-arkitscenes # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 676080 images
val: images/val # val images (relative to 'path') 21559 images

nc: 1
names:
  0: depth

channels: 3

الاستخدام#

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

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

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

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

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

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

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

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

اقتباس
@inproceedings{baruch2021arkitscenes,
      title={ARKitScenes: A Diverse Real-World Dataset for 3D Indoor Scene Understanding Using Mobile RGB-D Data},
      author={Baruch, Gilad and Chen, Zhuoyuan and Dehghan, Afshin and Dimry, Tal and Feigin, Yuri and Fu, Peter and Gebauer, Thomas and Joffe, Brandon and Kurz, Daniel and Schwartz, Arik and Shulman, Elad},
      booktitle={Thirty-fifth Conference on Neural Information Processing Systems Datasets and Benchmarks Track},
      year={2021}
}

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

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

  • تُعد ARKitScenes أكبر مصدر واقعي منفرد في مزيج التدريب المسبق YOLO26-Depth، الذي يضم نحو 2.19M صورة، وتسهم فيه بـ 676,080 صورة تدريب و21,559 صورة تحقق ملتقطة باستخدام ماسح LiDAR في أجهزة Apple iPad Pro. وتعزز بيانات العمق الداخلية الكثيفة دقة النماذج المنشورة في النطاقات القصيرة، ثم تُقيّم هذه النماذج على NYU Depth V2 وKITTI وETH3D وMake3D وiBims-1.

  • لا يتوفر تنزيل تلقائي لـ ARKitScenes. اقبل شروط الترخيص في مستودع ARKitScenes، ونزّل الأصول lowres_wide وlowres_depth من المجموعة الفرعية الخام باستخدام البرنامج النصي الرسمي download_data.py، ثم احتفظ بكل إطار RGB رقم 30 وأقرنه بإطار العمق ذي الطابع الزمني الأقرب باستخدام برنامج التحويل النصي في الحصول على البيانات. تتبع النتيجة تنسيق مجموعة بيانات العمق القياسي من Ultralytics، مع صور PNG بدقة uint16 وبوحدة المليمتر.

  • ARKitScenes مجموعة بيانات داخلية ملتقطة بأجهزة محمولة باليد، وتتراوح أعماقها تقريبًا بين 0.5 و6 م، مع وسيط أقصى عمق يبلغ نحو 2.4 م؛ لذا فهي تكمّل مصادر المسافات الأطول مثل KITTI وTartanAir في مزيج التدريب.

المساهمون

التعليقات