مجموعة بيانات العمق 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 واحدة وخريطة عمق .npy مقترنة من نوع float32 تخزن المسافات لكل بكسل بالأمتار، وذلك وفقاً لـ تنسيق مجموعة بيانات العمق من Ultralytics.
الحصول على البيانات#
لا يحتوي ARKitScenes على تنزيل تلقائي - يتم توزيع البيانات بواسطة Apple، ويتطلب التنزيل قبول شروط الترخيص في مستودع ARKitScenes. قم استنساخ المستودع وتنزيل المجموعة الفرعية لرفع دقة العمق، والتي تربط إطارات 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:
from pathlib import Path
import cv2
import numpy as np
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}"
depth = cv2.imread(str(depth_png), cv2.IMREAD_UNCHANGED).astype(np.float32) / 1000.0 # mm → m
np.save(dst / f"depth/{out}/{name}.npy", depth)
cv2.imwrite(str(dst / f"images/{out}/{name}.png"), cv2.imread(str(rgb)))الدور في YOLO26-Depth#
تعد ARKitScenes مصدراً للتدريب في مجموعة التدريب المسبق المتعددة للعمق الخاصة بـ Ultralytics YOLO26-Depth والتي تضم حوالي 2.19 مليون زوج من الصور والعمق. وباعتبارها أكبر مصدر واقعي فردي في هذه المجموعة، فهي توفر عمق LiDAR داخلياً واقعياً وفيراً يثبّت دقة النموذج في النطاقات الداخلية القصيرة. يتم تقييم النماذج الناتجة وفقاً لمعايير NYU وKITTI وMake3D وETH3D وiBims-1 القياسية.
YAML مجموعة البيانات#
يتم استخدام ملف YAML (Yet Another Markup Language) لتحديد تكوين مجموعة البيانات. وهو يحتوي على معلومات حول مسارات مجموعة البيانات، والفئات، ومعلومات أخرى ذات صلة.
# 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 *.npy, float32 meters (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}
}نود أن نشكر المؤلفين على إنشاء هذا المورد القيم والحفاظ عليه لمجتمع رؤية الكمبيوتر.