نظرة عامة على مجموعات بيانات تقدير العمق#
يخصص تقدير العمق احادي العين قيمة عمق ذات فاصلة عائمة بالمتر لكل بكسل في الصورة. هدف التدريب هو خريطة عمق كثيفة لكل بكسل مخزنة كـ .npy مصفوفة float32. تمثل كل قيمة المسافة من الكاميرا إلى نقطة المشهد المقابلة.
يشرح هذا الدليل تنسيق مجموعة البيانات المستخدم بواسطة نماذج Ultralytics YOLO لتقدير العمق، ويسرد تكوينات مجموعات البيانات المدمجة المتاحة للتدريب والتحقق من الصحة.
تنسيق مجموعة البيانات المدعوم#
تنسيق خريطة العمق NPY#
تتكون كل عينة تدريب من صورة RGB واحدة وملف عمق .npy مقترن بها. يخزن ملف العمق مصفوفة NumPy ثنائية الأبعاد بحجم (H, W) حيث تكون القيم أعماقاً بالمتر.
- يجب أن تستخدم ملفات العمق الامتداد
.npyوتحتوي على مصفوفة float32. - يجب أن يكون لكل ملف عمق نفس الجذر مثل ملف الصورة المقابل له (على سبيل المثال، يقترن
scene_001.npyبـscene_001.jpg). - يعثر محمل مجموعة البيانات على ملفات العمق عن طريق استبدال مكون الدليل
imagesبـdepthفي مسار الملف وتبديل امتداد الصورة بـ.npy. - تعتبر البكسلات ذات العمق
≤ 0غير صالحة ويتم استبعادها من حساب الخسارة والمقاييس.
يحافظ التخطيط القياسي على الصور وخرائط العمق في مجلدات متوازية:
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/على سبيل المثال، يتم إقران صورة في images/train/scene_001.jpg بخريطة عمق في depth/train/scene_001.npy.
تنسيق YAML لمجموعة البيانات#
يتم تكوين مجموعات بيانات تقدير العمق باستخدام ملفات YAML. الحقول الرئيسية هي:
| المفتاح | الوصف |
|---|---|
path | الدليل الجذري لمجموعة البيانات. |
train | Training image path relative to path, or an absolute path. |
val | Validation image path relative to path, or an absolute path. |
test | مسار اختياري لصور الاختبار. |
nc | عدد الفئات — دائماً 1 لتقدير العمق. |
names | تعيين اسم الفئة — دائماً {0: depth}. |
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html
# 795 train + 654 val (Eigen test split) images, 480x640, indoor scenes, depth in meters
# Example usage: yolo depth train data=nyu-depth.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
# └── nyu-depth ← downloads here (≈1.5 GB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: nyu-depth # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 795 images
val: images/val # val images (relative to 'path') 654 images
# Depth maps are paired .npy files (float32, meters) under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.
# Classes
nc: 1
names:
0: depth
channels: 3
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth.zipالاستخدام#
قم بتدريب نموذج تقدير العمق YOLO26 باستخدام Python أو CLI:
from ultralytics import YOLO
# Load a pretrained depth model
model = YOLO("yolo26n-depth.pt")
# Train on the NYU Depth V2 dataset
results = model.train(data="nyu-depth.yaml", epochs=100, imgsz=640)مجموعات البيانات المدعومة#
تم تدريب نماذج العمق YOLO26 مسبقاً على مزيج واسع من مجموعات البيانات (حوالي 2.19 مليون صورة) يمتد من النطاقات الداخلية (≤10 م) إلى الخارجية (حوالي 80 م)، ثم تم تقييمها بدون تدريب مسبق عبر خمسة معايير قياسية. كل مجموعة بيانات لها صفحة مخصصة:
تصحيح الأخطاء
- Depth8 — 8 صور SUN RGB-D في أرشيف ذاتي التنزيل بحجم 1.3 ميجابايت، لاختبار خطوط الأنابيب السريعة
مصادر التدريب المسبق
- ARKitScenes — بيئة داخلية حقيقية، Apple ARKit LiDAR (أكبر مصدر حقيقي)
- SUN RGB-D — بيئة داخلية حقيقية، RGB-D متعدد المستشعرات
- DIODE — بيئة داخلية وخارجية حقيقية، أرضية ماسح ضوئي ليزري كثيف
- Hypersim — بيئة داخلية اصطناعية واقعية الصور
- TartanAir — بيئات اصطناعية ومتنوعة
- Virtual KITTI 2 — قيادة خارجية اصطناعية
- KITTI — قيادة خارجية حقيقية، Velodyne LiDAR (وأيضاً معيار تقييم)
- ImageNet (pseudo-labeled) — مجموعة تقطير مصنفة زيفاً، وهي أكبر مصدر منفرد
معايير التقييم
- NYU Depth V2 — المعيار الأساسي للبيئة الداخلية
- KITTI Eigen — معيار القيادة الخارجية
- ETH3D — بيئة داخلية وخارجية عالية الدقة
- Make3D — بيئة خارجية، خارج التوزيع
- iBims-1 — بيئة داخلية عالية الجودة (حواف وأسطح مستوية)
تتوفر دقة كل نموذج في هذه المعايير والأوزان المدربة مسبقاً القابلة للتنزيل على صفحة مهمة تقدير العمق. يجمع ملف YAML لمجموعة البيانات الذي يدرج حقله train أدلة صور متعددة هذه المصادر للتدريب المختلط واسع النطاق.
إضافة مجموعة البيانات الخاصة بك#
- احفظ صور RGB ضمن مجلدات التقسيم مثل
images/trainوimages/val. - احفظ مصفوفة عمق float32 واحدة
.npyلكل صورة ضمن المجلدات المتطابقةdepth/trainوdepth/valباستخدام نفس جذر ملف الصورة. - تأكد من أن قيم العمق بالمتر وأن البكسلات غير الصالحة أو المفقودة تستخدم
0أو قيماً سالبة. - Create a dataset YAML with
path,train,val,nc: 1, andnames: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val
nc: 1
names:
0: depthالأسئلة الشائعة#
يجب حفظ خرائط العمق كملفات NumPy
.npyتحتوي على مصفوفات float32 بالشكل(H, W). تخزن كل عنصر العمق بالمتر لبكسل الصورة المقابل. لا تستخدم تنسقات PNG أو الصحيحة ذات 16 بت - يتوقع المحمل مصفوفات أعداد حقيقية خام.تعتبر البكسلات ذات قيم العمق
≤ 0غير صالحة ويتم استبعادها من كل من حساب الخسارة وتقييم المقاييس. يغطي هذا ضوضاء المستشعر، ومناطق السماء، والأسطح العاكسة حيث لا يمكن قياس العمق بشكل موثوق.تقارير التحقق من صحة تقدير العمق تستخدم مجموعة مقاييس Depth Anything القياسية:
- delta1 / delta2 / delta3 — النسبة المئوية للبكسلات ضمن عتبات 1.25×، 1.25²×، 1.25³×. كلما ارتفعت القيمة كان ذلك أفضل.
- abs_rel — متوسط الخطأ النسبي المطلق. كلما انخفضت القيمة كان ذلك أفضل.
- rmse — جذر متوسط مربع الخطأ بالأمتار. كلما انخفضت القيمة كان ذلك أفضل.
- silog — الخطأ اللوغاريتمي غير المتغير حسب المقياس. كلما انخفضت القيمة كان ذلك أفضل.
نعم. يجب أن يتشارك كل ملف عمق
.npyنفس الجذر مع الصورة المقابلة. يستمد المحمل مسار العمق عن طريق استبدال مكون الدليلimagesبـdepthواستبدال امتداد الصورة بـ.npy. يتم إسقاط الصور التي يكون ملف عمقها مفقوداً أو غير قابل للقراءة أثناء فحص مجموعة البيانات (المخزنة مؤقتاً) مع تحذير، تماماً مثل الصور التالفة؛ إذا لم يتم العثور على أزواج صور-عمق صالحة على الإطلاق، يتم طرح خطأ.