أمن جاهز للمؤسسات: متوافقة مع ISO 27001 و SOC 2 Type I.

Link to this sectionتقدير العمق أحادي العين#

Monocular depth estimation examples

يتنبأ تقدير العمق أحادي العين بخريطة عمق لكل بكسل من صورة RGB واحدة. يحتوي كل بكسل ناتج على قيمة عمق بالأمتار تمثل المسافة المقدرة من الكاميرا إلى نقطة السطح تلك.

مخرج نموذج العمق هو خريطة عائمة كثيفة بالشكل (H, W) ومحاذية لصورة الإدخال. يجعل هذا التمثيل لكل بكسل من تقدير العمق أحادي العين خياراً مناسباً لإعادة بناء المشاهد ثلاثية الأبعاد، والملاحة الروبوتية، وإنشاء محتوى الواقع المعزز/الواقع الافتراضي (AR/VR)، وأي تطبيق يتطلب تخطيطاً مكانياً من كاميرا واحدة.

نصيحة

استخدم task=depth أو مهمة CLI yolo depth لتقدير العمق أحادي العين. تستخدم ملفات نموذج العمق YOLO26 اللاحقة -depth، مثل yolo26n-depth.pt.

Link to this sectionالنماذج#

تظهر أدناه نماذج العمق YOLO26 المدربة مسبقاً على مزيج واسع من مجموعات البيانات (داخلي + خارجي، ~2.19 مليون صورة). تم الإبلاغ عن أعمدة المقاييس في مجموعة اختبار Eigen الخاصة بـ NYU Depth V2.

يتم تنزيل النماذج تلقائياً من أحدث إصدار لـ Ultralytics عند الاستخدام لأول مرة.

النموذجالحجم
(بكسل)
delta1NYUabs_relNYUrmseNYUالمعلمات
(M)
FLOPs
(B)
YOLO26n-depth7680.8820.1090.4146.446.9
YOLO26s-depth7680.8960.1040.39913.267.9
YOLO26m-depth7680.9210.0890.36423.3130.7
YOLO26l-depth7680.9300.0830.35127.7157.2
YOLO26x-depth7680.9330.0800.34457.0302.0
  • delta1NYU هي النسبة المئوية للبكسلات التي يقع فيها العمق المتوقع ضمن عامل 1.25 من الحقيقة الأرضية، في مجموعة اختبار Eigen لـ NYU Depth V2 (654 صورة) مع تقنية TTA متعددة المقاييس + الانعكاس الأفقي ومحاذاة المربعات الصغرى اللوغاريتمية.
  • يمكن تكرار دقة المقياس الفردي بدون TTA باستخدام yolo depth val model=yolo26n-depth.pt data=nyu-depth.yaml imgsz=768 device=0 (استبدل model= لكل حجم)، والتي تستخدم المحاذاة المتوسطة (للمقياس فقط) وتسجل درجات أقل: delta1 0.785 (n)، 0.786 (s)، 0.827 (m)، 0.839 (l)، 0.843 (x).
  • abs_rel هو متوسط الخطأ النسبي المطلق بين قيم العمق المتوقعة وقيم العمق الحقيقية.
  • rmse هو جذر متوسط مربع الخطأ بالأمتار.
  • يتم قياس params و FLOPs عند 768×768، وهي دقة التدريب للأوزان المُصدرة.

Link to this sectionنطاق العمق ورأس العمق اللوغاريتمي#

يتنبأ رأس العمق بـ exp(logit)غير محدود (~0.02–150 م) — ويفصل شكل المشهد عن المقياس المطلق: تتنبأ الشبكة بمجال عمق لوغاريتمي نسبي، ويتم تحديد الأمتار المطلقة بواسطة تحويل منفصل بمعلمتين (exp(a·log d + b)) يتم استعادتهما عند التقييم، أو عن طريق المعايرة خفيفة الوزن، أو عن طريق الضبط الدقيق. البديل الشائع، وهو رأس sigmoid × max_depth المحدود، يضع بدلاً من ذلك حداً أقصى ثابتاً في البنية، بحيث يتم قص أي عمق يتجاوز max_depth — مما يمنع التدريب على المشاهد طويلة المدى والتنبؤ بها.

Link to this sectionلماذا الرأس غير محدود: أدلة عبر نطاقات العمق#

اختبار A/B مضبوط — نفس البيانات، نفس الجدول الزمني، الرأس فقط هو المختلف. تدريب كلا الرأسين من الصفر على مزيج متطابق من البيانات الداخلية (≤10 م) والخارجية (≤80 م):

الرأسنطاق المخرجδ1 للمدى المختلطسلوك التدريب
sigmoid × max_depth (10 م)محدود 0–10 م0.221يصل إلى مرحلة الاستقرار في الحقبة 1
log (غير محدود)0–~150 م0.367 (+66%)يتحسن باستمرار

لا يمكن للرأس المحدود تمثيل غالبية البكسلات الخارجية التي تزيد عن 10 أمتار، لذا يتوقف عن التحسن على الفور تقريباً؛ يتعلم رأس log من النطاق الكامل.

نمط الفشل الذي يعالجه — الضبط الدقيق لمجموعة بيانات واحدة، مصنف حسب النطاق. الضبط الدقيق لرأس محدود (10 م) على مجموعات بيانات فردية يعمل عندما تتناسب البيانات مع الحد الأقصى وتنهار عندما تتجاوزه:

مجموعة البياناتنطاق العمقδ1 للرأس المحدود
SUN RGB-D≤10 م0.78 ✅
Hypersimغالباً ≤10 م0.74 ✅
KITTI~80 م0.08 ❌ (abs_rel ≈ 7.0 — عدم تطابق النطاق 80/10)
vKITTI280 م0.04 ❌

يحدث الانهيار بالضبط عند حدود النطاق. رأس log ليس لديه مثل هذا الحد.

النماذج المُصدرة — الأداء عبر النطاقات. عائلة رؤوس log المُصدرة، التي تم تقييمها عبر معايير تتراوح من 10 م (NYU، iBims-1) إلى 80 م (KITTI)، مع δ1 محاذية للمقياس:

قياس الأداء (Benchmark)النطاقYOLO26x-depth (log)الإصدار المحدود السابق
NYU Eigen10 م0.9330.934
iBims-110 م0.9610.945
ETH3D~60 م0.9590.931
Make3D~70 م0.3020.296
KITTI Eigen80 م0.9420.891
المتوسط0.8190.799

أكبر المكاسب هي في المعايير الخارجية طويلة المدى (KITTI، ETH3D) — حيث يضر الحد الأقصى الثابت 10 أمتار أكثر من غيره — بينما يتم الحفاظ على الأداء الداخلي.

Link to this sectionالتدريب#

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

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.yaml")  # build a new model from YAML
model = YOLO("yolo26n-depth.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-depth.yaml").load("yolo26n-depth.pt")  # build from YAML and transfer weights

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

راجع تفاصيل وضع train الكاملة في صفحة التدريب.

Link to this sectionالضبط الدقيق على بياناتك الخاصة#

عند تكييف نموذج عمق مدرب مسبقاً مع مجموعة بيانات مخصصة، قم بخفض معدل التعلم واستخدم محسن AdamW. تم ضبط إعدادات المحسن الافتراضية للتدريب من الصفر (SGD مع lr0=0.01)؛ وتطبيقها على نموذج عمق وصل بالفعل إلى التقارب قد يؤدي إلى الكتابة فوق المعرفة المدربة مسبقاً وتدهور النتائج — خاصة عند الضبط الدقيق على مجال واحد.

وصفة الضبط الدقيق الموصى بها
from ultralytics import YOLO

model = YOLO("yolo26s-depth.pt")  # start from pretrained weights

model.train(
    data="path/to/your_dataset.yaml",
    epochs=20,
    imgsz=640,
    optimizer="AdamW",
    lr0=1e-4,  # ~100x below the from-scratch default
    warmup_bias_lr=1e-4,  # keep warmup gentle too
)

نصائح إضافية:

  • يتم التحكم في التعزيز بواسطة الوسيطات القياسية (degrees, translate, scale, shear, perspective, flipud, fliplr, hsv_h, hsv_s, hsv_v)؛ يتم تطبيق التشويه الهندسي والانعكاسات بشكل متطابق على خريطة العمق المقترنة. لرؤية الوصفة الدقيقة المستخدمة لأوزان YOLO26-Depth المُصدرة، افحص train_args المخزنة في نقطة التحقق (checkpoint) — راجع فحص وسيطات تدريب نقطة تحقق YOLO26.
  • mosaic وmixup وcutmix وcopy_paste غير مطبقة للعمق. يقوم محمل مجموعة بيانات العمق تلقائياً بتعيين احتمالات هذه العمليات إلى 0، لذا فإن تمريرها ليس له أي تأثير. هذه التعزيزات غير مدعومة لأنها تجمع بين صور متعددة، مما قد ينتج عنه خرائط عمق مقترنة غير صالحة.
  • يعمل أي نطاق عمق خارج الصندوق. تتنبأ نماذج رأس log بعمق غير محدود، لذا فهي تتكيف مع البيانات قصيرة المدى (الماكرو) أو طويلة المدى (الخارجية/القيادة) دون تغييرات. ضبط max_depth: في YAML مجموعة البيانات الخاصة بك (بالأمتار) يحدد بكسلات الحقيقة الأرضية التي تُحتسب ضمن مقاييس التحقق.
  • الحفاظ على الأداء العام. إذا كنت بحاجة إلى أن يظل النموذج دقيقاً في مشاهد خارج نطاق تدريبك، فقم بخلط جزء صغير (~5–10%) من الصور العامة المتنوعة في بيانات تدريبك؛ هذا يقلل بشكل كبير من النسيان أثناء الضبط الدقيق.
  • درب من الصفر (model=yolo26s-depth.yaml) فقط إذا كان مجالك مختلفاً جداً وكان لديك مجموعة بيانات كبيرة — حيث يكون SGD الافتراضي lr0=0.01 مناسباً، نظراً لعدم وجود أوزان مدربة مسبقاً للحفاظ عليها.

Link to this sectionمعايرة مقياس العمق#

يفصل رأس العمق الشكل (هيكل المشهد النسبي) عن المقياس (الأمتار المطلقة). إذا كان النموذج ينتج بالفعل عمقاً نسبياً جيداً في مشاهدك ولكن القيم المطلقة غير دقيقة لكاميرتك، يمكنك تصحيح المقياس في ثوانٍ باستخدام model.calibrate() — وهو ملائم بمعلمتين لوغاريتمي-خطي (log-affine) مقابل مجموعة مصنفة صغيرة، مع عدم وجود تدريب تدرجي وعدم وجود تغيير في أوزان الشبكة، لذلك لا يمكن أن يقلل من الهيكل النسبي.

معايرة المقياس
from ultralytics import YOLO

model = YOLO("yolo26s-depth.pt")

# Fit scale on a labeled split (~100+ images is enough), then persist it
model.calibrate(data="path/to/your_dataset.yaml")
model.save("yolo26s-depth-calibrated.pt")

تحتاج المعايرة إلى عمق حقيقة أرضية للملاءمة معه، لذا فهي تعمل على مجموعة مصنفة — ولا يمكن أن تحدث عند الاستدلال الأعمى. استخدمها عندما يكون العمق النسبي جيداً بالفعل ويكون المقياس/النطاق فقط هو الخاطئ؛ إذا كان الهيكل النسبي نفسه يحتاج إلى تغيير لمجالك، فاستخدم الضبط الدقيق بدلاً من ذلك.

يقوم التدريب بذلك من أجلك تلقائياً: بعد اكتمال model.train(...)، يتم معايرة أفضل نقاط التحقق وآخرها على مجموعة التحقق بحيث تخرج عمقاً مقاساً مترياً خارج الصندوق.

يتم شحن نقاط التحقق yolo26*-depth.pt المُصدرة مع هذه المعايرة المدمجة بالفعل، والمجهزة على مزيج تحقق ما قبل التدريب. إنها مقياس عالمي واحد عبر جميع المجالات، لذا للحصول على أدق عمق مطلق على كاميرا أو نوع مشهد معين، قم بتشغيل model.calibrate() على مجموعة مصنفة صغيرة من بياناتك الخاصة — فهي تحل محل الملاءمة المدمجة.

Link to this sectionتنسيق مجموعة البيانات#

تربط مجموعات بيانات تقدير العمق كل صورة RGB بملف عمق مطابق. يتم تخزين أهداف العمق كمصفوفات .npy تحتوي على قيم float32 بالأمتار. يشير ملف YAML الخاص بمجموعة البيانات إلى دليل images/؛ يشتق المحمل مسار ملف العمق عن طريق استبدال مكون images بـ depth واستبدال امتداد الصورة بـ .npy.

dataset/
├── images/
│   ├── train/
│   └── val/
└── depth/
    ├── train/
    └── val/

على سبيل المثال، يتم إقران صورة في images/train/scene_001.jpg بخريطة عمق في depth/train/scene_001.npy. راجع دليل مجموعة بيانات تقدير العمق للحصول على مواصفات التنسيق الكاملة.

Link to this sectionالتحقق#

تحقق من دقة نموذج YOLO26n-depth المدرب على مجموعة بيانات تقدير العمق. قم بتمرير data بشكل صريح بحيث يستخدم التحقق ملف YAML الخاص بمجموعة البيانات المقصودة. يتم تدريب الأوزان المُصدرة عند imgsz=768، لذا تحقق وتنبأ بهذا الحجم للحصول على أفضل دقة.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="nyu-depth.yaml")
metrics.delta1  # percentage of pixels within threshold δ=1.25
metrics.abs_rel  # mean absolute relative error
metrics.rmse  # root mean squared error (meters)
metrics.silog  # scale-invariant logarithmic error

Link to this sectionالتنبؤ#

استخدم نموذج YOLO26n-depth مدرباً لتشغيل التنبؤات على الصور.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    depth_map = result.depth.data.cpu().numpy()  # torch.Tensor -> NumPy float32, shape (H, W), meters

اطلع على تفاصيل وضع predict الكاملة في صفحة التنبؤ.

Link to this sectionمخرجات النتائج#

يعيد تقدير العمق YOLO كائن Results واحداً لكل صورة. تخزن كل نتيجة خريطة عمق عائمة كثيفة واحدة للصورة الكاملة.

السمة (Attribute)النوعالشكلالوصف
result.depthDepthMap(H,W)خريطة عمق كثيفة لكل بكسل.
result.depth.datatorch.Tensor(H,W)قيم العمق بالأمتار؛ استدعِ .cpu().numpy() لـ NumPy.
result.boxes--لا توجد مربعات مثيل.
result.masks--لا توجد أقنعة مثيلات.

للحصول على حقول Results الخاصة بالمهمة عبر كل مهمة، راجع قسم نتائج التنبؤ حسب المهمة.

Link to this sectionالتصدير#

قم بتصدير نموذج YOLO26n-depth إلى تنسيق مختلف مثل ONNX أو CoreML وما إلى ذلك.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Export the model
model.export(format="onnx")

تنسيقات تصدير تقدير العمق YOLO26 المتاحة موجودة في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام وسيطة format، أي format='onnx' أو format='engine'. يمكنك التنبؤ أو التحقق مباشرة من النماذج المصدرة، أي yolo predict model=yolo26n-depth.onnx. يتم عرض أمثلة الاستخدام لنموذجك بعد اكتمال التصدير.

التنسيقوسيط formatالنموذجالبيانات الوصفيةالوسائط (Arguments)
PyTorch-yolo26n-depth.pt-
TorchScripttorchscriptyolo26n-depth.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-depth.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-depth_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-depth.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-depth.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-depth_saved_model/imgsz, keras, quantize, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-depth.pbimgsz, batch, device
TF Edge TPUedgetpuyolo26n-depth_edgetpu.tfliteimgsz, quantize, data, fraction, device
PaddlePaddlepaddleyolo26n-depth_paddle_model/imgsz, batch, device
MNNmnnyolo26n-depth.mnnimgsz, batch, dynamic, quantize, nms, device
NCNNncnnyolo26n-depth_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-depth_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-depth_rknn_model/imgsz, batch, name, quantize, data, fraction, device
ExecuTorchexecutorchyolo26n-depth_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-depth_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-depth_deepx_model/imgsz, quantize, data, optimize, device
Qualcomm QNNqnnyolo26n-depth_qnn.onnximgsz, batch, name, quantize, data, fraction, device
LiteRTlitertyolo26n-depth.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-depth_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou

راجع تفاصيل export الكاملة في صفحة التصدير (Export).

Link to this sectionالأسئلة الشائعة#

Link to this sectionكيف يمكنني تدريب نموذج تقدير العمق YOLO26 على مجموعة بيانات مخصصة؟#

قم بإعداد صور RGB مزدوجة وملفات عمق بتنسيق .npy، ثم أنشئ ملف YAML لمجموعة البيانات يشير إلى دليل images/ الخاص بك. يجد المحمل ملفات العمق تلقائيًا عن طريق استبدال images بـ depth في المسار واستبدال امتداد الصورة بـ .npy.

ابدأ من الأوزان المدربة مسبقًا واستخدم معدل تعلم منخفض مع AdamW لضمان احتفاظ الضبط الدقيق بما يعرفه النموذج بالفعل (انظر الضبط الدقيق على بياناتك الخاصة لمعرفة السبب):

مثال
from ultralytics import YOLO

# Load a pretrained YOLO26 depth model
model = YOLO("yolo26s-depth.pt")

# Fine-tune on a custom depth dataset
results = model.train(
    data="path/to/your_dataset.yaml",
    epochs=20,
    imgsz=640,
    optimizer="AdamW",
    lr0=1e-4,
    warmup_bias_lr=1e-4,
)

راجع صفحة التكوين لمزيد من المعلمات المتاحة.

Link to this sectionما هي المقاييس التي يبلغ عنها YOLO26 لتقدير العمق؟#

تقارير التحقق من صحة تقدير العمق تتضمن مجموعة المقاييس المستخدمة بواسطة Depth Anything والأعمال ذات الصلة بتقدير العمق أحادي العين:

  • delta1 / delta2 / delta3 — النسبة المئوية للبكسلات حيث تكون نسبة العمق المتوقع إلى العمق الحقيقي (أو معكوسه) أقل من 1.25 و 1.25² و 1.25³ على التوالي. كلما زادت القيمة كان ذلك أفضل.
  • abs_rel — متوسط الخطأ النسبي المطلق. كلما انخفضت القيمة كان ذلك أفضل.
  • rmse — جذر متوسط مربع الخطأ بالأمتار. كلما انخفضت القيمة كان ذلك أفضل.
  • silog — الخطأ اللوغاريتمي غير المتغير حسب المقياس. كلما انخفضت القيمة كان ذلك أفضل.

تتم محاذاة كل تنبؤ مع حقيقته الأساسية لكل صورة على أساس الوسيط، ثم يتم تجميع الإحصائيات عبر كل بكسل صالح في مجموعة التحقق (الصور التي تحتوي على بكسلات عمق صالحة أكثر تزن نسبيًا أكثر). الأوراق البحثية التي تقوم بحساب متوسط المقاييس لكل صورة بدلاً من ذلك قد تبلغ عن قيم مختلفة قليلاً لنفس التنبؤات.

Link to this sectionما هو تنسيق مخرجات خريطة العمق؟#

يتم تخزين خريطة العمق كـ torch.Tensor بشكل (H, W) حيث تمثل كل قيمة العمق المتوقع بالأمتار (استخدم result.depth.data.cpu().numpy() للحصول على مصفوفة NumPy بتنسيق float32). يمكنك الوصول إليها من خلال result.depth.data بعد تشغيل التنبؤ. الخريطة محاذية لدقة الصورة المدخلة.

Link to this sectionما هي مجموعات البيانات المدعومة لتقدير العمق؟#

توفر Ultralytics YOLO26 تكوينات YAML مدمجة لمجموعة البيانات لعدة مجموعات بيانات لتقدير العمق بما في ذلك NYU Depth V2 و KITTI و Hypersim و SUN RGB-D و ARKitScenes. راجع دليل مجموعة بيانات تقدير العمق للحصول على القائمة الكاملة وتفاصيل التنسيق.

Link to this sectionكيف يمكنني التحقق من صحة نموذج تقدير العمق المدرب مسبقًا YOLO26؟#

تحقق من صحة نموذج عمق YOLO26 مدرب مسبقًا عن طريق توفير ملف YAML الخاص بمجموعة البيانات المستخدم للتقييم:

مثال
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-depth.pt")

# Validate the model
metrics = model.val(data="nyu-depth.yaml")
print("delta1:", metrics.delta1)
print("abs_rel:", metrics.abs_rel)
print("rmse:", metrics.rmse)

Link to this sectionكيف يمكنني تصدير نموذج تقدير العمق YOLO26 إلى تنسيق ONNX؟#

قم بتصدير نموذج عمق YOLO26 إلى ONNX باستخدام Python أو CLI:

مثال
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-depth.pt")

# Export the model to ONNX format
model.export(format="onnx")

لمزيد من التفاصيل حول التصدير إلى تنسيقات مختلفة، راجع صفحة التصدير.

المساهمون

التعليقات