مجموعة بيانات 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 للعمق إلى مجموعتين فرعيتين:
- Train: 676,080 صورة مع خرائط عمق مقترنة للتدريب.
- Val: 21,559 صورة مع خرائط عمق مقترنة للتحقق أثناء تدريب النموذج.
تتكون كل عينة من صورة RGB واحدة وملف PNG واحد للعمق من النوع uint16، بوحدة المليمتر (depth_scale: 1000)، وفقًا لـتنسيق مجموعة بيانات العمق في Ultralytics.
الحصول على البيانات#
لا تتوفر عملية تنزيل تلقائي لـ ARKitScenes — توزّع Apple البيانات، ويتطلب تنزيلها قبول شروط الترخيص في مستودع ARKitScenes. استنسخ المستودع ونزّل المجموعة الفرعية depth-upsampling، التي تربط إطارات RGB بالعمق المسجّل:
git clone https://github.com/apple/ARKitScenes && cd ARKitScenes
python3 download_data.py upsampling --split Training --download_dir ./data
python3 download_data.py upsampling --split Validation --download_dir ./dataإطارات العمق هي ملفات PNG من النوع uint16 بوحدة المليمتر (0 = غير صالح)، كما أن أسماء ملفات RGB والعمق هي طوابع زمنية للالتقاط لا تتطابق تمامًا — لذا يجب إقران كل إطار عمق بإطار RGB الأقرب إليه زمنيًا. للاطلاع على التحويل المرجعي إلى تنسيق مجموعة بيانات العمق في Ultralytics:
import shutil
from pathlib import Path
import cv2
src, dst = Path("data/upsampling"), 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()):
rgbs = {float(p.stem.split("_")[-1]): p for p in (video / "lowres_wide").glob("*.png")}
if not rgbs:
continue
for depth_png in sorted((video / "lowres_depth").glob("*.png")):
t = float(depth_png.stem.split("_")[-1])
rgb = rgbs[min(rgbs, key=lambda k: abs(k - t))] # nearest-timestamp RGB frame
name = f"{video.name}_{depth_png.stem}"
shutil.copy2(depth_png, dst / f"depth/{out}/{name}.png")
cv2.imwrite(str(dst / f"images/{out}/{name}.png"), cv2.imread(str(rgb)))دور ARKitScenes في YOLO26-Depth#
تُعد ARKitScenes مصدرًا للتدريب ضمن مزيج التدريب المسبق متعدد مجموعات البيانات لـ Ultralytics YOLO26-Depth، والذي يضم نحو 2.19 مليون زوج من الصور والعمق. وباعتبارها أكبر مصدر منفرد من العالم الحقيقي في هذا المزيج، فإنها توفر كمية وفيرة من بيانات عمق LiDAR الداخلية الواقعية، ما يرسّخ دقة النموذج في النطاق الداخلي القصير. وتُقيّم النماذج الناتجة على المعايير NYU وKITTI وMake3D وETH3D وiBims-1 القياسية.
YAML مجموعة البيانات#
يُستخدم ملف 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
# Load a model
model = YOLO("yolo26n-depth.pt") # load a pretrained depth model (recommended for training)
# Train the model
results = model.train(data="depth-arkitscenes.yaml", epochs=100, imgsz=640)النماذج المدرّبة مسبقًا#
تُدرَّب عائلة YOLO26 للعمق على مزيج التدريب المسبق واسع النطاق ومتعدد مجموعات البيانات للعمق، والذي تُعد ARKitScenes جزءًا منه. تُنزّل هذه النماذج تلقائيًا من أحدث إصدار من Ultralytics، مثل YOLO26x-depth من الإصدار v8.4.0، وتتوفر بأحجام متعددة لتلبية متطلبات مختلفة من الدقة والموارد.
الاقتباسات والشكر والتقدير#
إذا استخدمت مجموعة بيانات 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.19 مليون صورة، حيث تسهم بـ 676,080 صورة تدريب و21,559 صورة تحقق مُلتقطة باستخدام ناسح LiDAR في أجهزة Apple iPad Pro. وتُثبِّت بيانات العمق الداخلي الكثيف الخاصة بـ ARKitScenes دقة المدى القصير للنماذج المُصْدرة، والتي يتم تقييمها بعد ذلك على NYU Depth V2، وKITTI، وETH3D، وMake3D، وiBims-1.
لا تحتوي ARKitScenes على تنزيل تلقائي. قَبِل شروط الترخيص في مستودع ARKitScenes، وتنزيل مجموعة فرعية لرفع دقة العمق باستخدام البرنامج النصي الرسمي
download_data.py، وقم بإقران كل إطار عمق بإطار RGB الأقرب زمنياً باستخدام البرنامج النصي للتحويل في Obtain the Data. تتبع النتيجة تخطيط عمق Ultralytics القياسي مع ملفات PNG بدقة 16 بت غير الموقعة (uint16) وبوحدات المليمتر.