صناديق التحديد الموجهة اكتشاف الكائنات

يذهب اكتشاف الكائنات الموجهة خطوة أبعد من اكتشاف الكائنات القياسي من خلال إدخال زاوية إضافية لتحديد موقع الكائنات بدقة أكبر في الصورة.

مخرجات كاشف الكائنات الموجه هي مجموعة من صناديق التحديد الدوارة التي تحيط بالكائنات بدقة في الصورة، إلى جانب تسميات الفئة ودرجات الثقة لكل صندوق. تعتبر صناديق التحديد الموجهة مفيدة بشكل خاص عندما تظهر الكائنات بزوايا مختلفة، كما هو الحال في الصور الجوية، حيث قد تتضمن صناديق التحديد التقليدية المحاذية للمحور خلفية غير ضرورية.

تلميحة

تستخدم نماذج YOLO26 OBB اللاحقة -obb، على سبيل المثال yolo26n-obb.pt، وهي مدربة مسبقاً على DOTAv1.



Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢

نماذج مرئية

اكتشاف السفن باستخدام OBBاكتشاف المركبات باستخدام OBB
اكتشاف السفن باستخدام OBBاكتشاف المركبات باستخدام OBB

النماذج

يتم عرض نماذج OBB المدربة مسبقاً من YOLO26 هنا، والتي تم تدريبها مسبقاً على مجموعة بيانات DOTAv1.

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

النموذجالحجم
(بكسل)
mAPtest
50-95(e2e)
mAPtest
50(e2e)
السرعة
CPU ONNX
(ملي ثانية)
السرعة
T4 TensorRT10
(ملي ثانية)
المعلمات
(مليون)
FLOPs
(مليار)
YOLO26n-obb102452.478.997.7 ± 0.92.8 ± 0.02.514.0
YOLO26s-obb102454.880.9218.0 ± 1.44.9 ± 0.19.855.1
YOLO26m-obb102455.381.0579.2 ± 3.810.2 ± 0.321.2183.3
YOLO26l-obb102456.281.6735.6 ± 3.113.0 ± 0.225.6230.0
YOLO26x-obb102456.781.71485.7 ± 11.530.5 ± 0.957.6516.5
  • قيم mAPtest هي لنموذج أحادي متعدد المقاييس على مجموعة بيانات DOTAv1.
    يمكن إعادة إنتاجها عبر yolo val obb data=DOTAv1.yaml device=0 split=test وتقديم النتائج المدمجة إلى تقييم DOTA.
  • السرعة محسوبة كمتوسط عبر صور التحقق (val) الخاصة بـ DOTAv1 باستخدام مثيل Amazon EC2 P4d.
    يمكن إعادة إنتاجها عبر yolo val obb data=DOTAv1.yaml batch=1 device=0|cpu
  • قيم Params و FLOPs هي للنموذج المدمج بعد model.fuse()، الذي يدمج طبقات Conv وBatchNorm، وبالنسبة للنماذج من النوع end2end، يقوم بإزالة رأس الاكتشاف المساعد من نوع واحد إلى متعدد. تحتفظ نقاط التحقق المدربة مسبقاً ببنية التدريب الكاملة وقد تُظهر أعداداً أعلى.

تدريب

قم بتدريب YOLO26n-obb على مجموعة بيانات DOTA8 لمدة 100 دورة تدريبية بحجم صورة 640. للحصول على قائمة كاملة بالحجج المتاحة، راجع صفحة الإعدادات.

ملاحظة

زوايا OBB مقيدة بنطاق 0–90 درجة (باستثناء 90). الزوايا التي تبلغ 90 درجة أو أكثر غير مدعومة.

مثال
from ultralytics import YOLO

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

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


Watch: How to Train Ultralytics YOLO-OBB (Oriented Bounding Boxes) Models on DOTA Dataset using Ultralytics Platform

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

يمكن العثور على تنسيق مجموعة بيانات OBB بالتفصيل في دليل مجموعة البيانات. يحدد تنسيق YOLO OBB صناديق التحديد من خلال نقاط الزوايا الأربع الخاصة بها مع إحداثيات طبيعية بين 0 و1، متبعاً هذا الهيكل. تدعم منصة Ultralytics تعليقات OBB باستخدام أداة رسم صناديق تحديد موجهة مخصصة:

class_index x1 y1 x2 y2 x3 y3 x4 y4

داخلياً، تعالج YOLO الخسائر والمخرجات بتنسيق xywhr، والذي يمثل نقطة المركز (xy)، والعرض، والارتفاع، والدوران لـ صندوق التحديد.

تقييم

قم بالتحقق من دقة نموذج YOLO26n-obb المدرب على مجموعة بيانات DOTA8. لا يلزم وجود وسيطات لأن model يحتفظ بـ data الخاصة بتدريبه والوسيطات كسمات للنموذج.

مثال
from ultralytics import YOLO

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

# Validate the model
metrics = model.val(data="dota8.yaml")  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list containing mAP50-95(B) for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

التنبؤ

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

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-obb.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/boats.jpg")  # predict on an image

# Access the results
for result in results:
    xywhr = result.obb.xywhr  # center-x, center-y, width, height, angle (radians)
    xyxyxyxy = result.obb.xyxyxyxy  # polygon format with 4-points
    names = [result.names[cls.item()] for cls in result.obb.cls.int()]  # class name of each box
    confs = result.obb.conf  # confidence score of each box


Watch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA

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

تصدير

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

مثال
from ultralytics import YOLO

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

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

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

التنسيقوسيط formatالنموذجالبيانات الوصفيةالوسائط
PyTorch-yolo26n-obb.pt-
TorchScripttorchscriptyolo26n-obb.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-obb.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-obb_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-obb.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-obb.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-obb_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-obb.pbimgsz, batch, device
TF Litetfliteyolo26n-obb.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-obb_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-obb_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-obb_paddle_model/imgsz, batch, device
MNNmnnyolo26n-obb.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-obb_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-obb_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-obb_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-obb_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-obb_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-obb_deepx_model/imgsz, int8, data, optimize, device

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

تطبيقات العالم الحقيقي

يتمتع اكتشاف OBB باستخدام YOLO26 بالعديد من التطبيقات العملية عبر مختلف الصناعات:

  • الإدارة البحرية والموانئ: اكتشاف السفن والمراكب بزوايا مختلفة لـ إدارة الأسطول والمراقبة.
  • التخطيط الحضري: تحليل المباني والبنية التحتية من الصور الجوية.
  • الزراعة: مراقبة المحاصيل والمعدات الزراعية من لقطات الطائرات بدون طيار.
  • قطاع الطاقة: فحص الألواح الشمسية وتوربينات الرياح بتوجهات مختلفة.
  • النقل: تتبع المركبات على الطرق وفي مواقف السيارات من منظورات مختلفة.

تستفيد هذه التطبيقات من قدرة OBB على ملاءمة الكائنات بدقة عند أي زاوية، مما يوفر اكتشافاً أكثر دقة من صناديق التحديد التقليدية.

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

ما هي صناديق التحديد الموجهة (OBB) وكيف تختلف عن صناديق التحديد العادية؟

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

كيف يمكنني تدريب نموذج YOLO26n-obb باستخدام مجموعة بيانات مخصصة؟

لتدريب نموذج YOLO26n-obb مع مجموعة بيانات مخصصة، اتبع المثال أدناه باستخدام Python أو CLI:

مثال
from ultralytics import YOLO

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

# Train the model
results = model.train(data="path/to/custom_dataset.yaml", epochs=100, imgsz=640)

لمزيد من وسيطات التدريب، تحقق من قسم الإعدادات.

ما هي مجموعات البيانات التي يمكنني استخدامها لتدريب نماذج YOLO26-OBB؟

يتم تدريب نماذج YOLO26-OBB مسبقاً على مجموعات بيانات مثل DOTAv1 ولكن يمكنك استخدام أي مجموعة بيانات منسقة لـ OBB. يمكن العثور على معلومات مفصلة حول تنسيقات مجموعة بيانات OBB في دليل مجموعة البيانات.

كيف يمكنني تصدير نموذج YOLO26-OBB إلى تنسيق ONNX؟

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

مثال
from ultralytics import YOLO

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

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

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

كيف يمكنني التحقق من دقة نموذج YOLO26n-obb؟

للتحقق من نموذج YOLO26n-obb، يمكنك استخدام أوامر Python أو CLI كما هو موضح أدناه:

مثال
from ultralytics import YOLO

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

# Validate the model
metrics = model.val(data="dota8.yaml")

شاهد تفاصيل التحقق الكاملة في قسم التحقق (Val).

التعليقات