التصنيف الموجه للإطارات المحيطة Object Detection#
يخطو اكتشاف الأشياء الموجهة خطوة أبعد من اكتشاف الأشياء القياسي من خلال إدخال زاوية إضافية لتحديد مواقع الأشياء بدقة أكبر في الصورة.
مخرجات كاشف الأشياء الموجهة هي مجموعة من صناديق التحديد المدارة التي تحيط بالأشياء في الصورة بدقة، بالإضافة إلى تسميات الفئات ودرجات الثقة لكل صندوق. تعتبر صناديق التحديد الموجهة مفيدة بشكل خاص عندما تظهر الأشياء بزوايا مختلفة، كما هو الحال في الصور الجوية، حيث قد تتضمن صناديق التحديد التقليدية المحاذية للمحاور خلفية غير ضرورية.
تستخدم نماذج YOLO26 OBB اللاحقة -obb، أي yolo26n-obb.pt، وقد تم تدريبها مسبقاً على DOTAv1.
Watch: How to Detect & Track Objects with Ultralytics YOLO26 Oriented Bounding Boxes (OBB) | Ship Tracking 🚢
نماذج مرئية#
| اكتشاف السفن باستخدام OBB | اكتشاف المركبات باستخدام OBB |
|---|---|
![]() | ![]() |
النماذج#
تُعرض هنا نماذج YOLO26 المدربة مسبقاً لمهام OBB، والتي تم تدريبها مسبقاً على مجموعة بيانات DOTAv1.
يتم تنزيل النماذج تلقائيًا من أحدث إصدار لـ Ultralytics عند الاستخدام الأول.
| النموذج | الحجم (بكسل) | mAPtest 50-95(e2e) | mAPtest 50(e2e) | السرعة CPU ONNX (ms) | السرعة T4 TensorRT10 (ms) | المعلمات (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-obb | 1024 | 52.4 | 78.9 | 97.7 ± 0.9 | 2.8 ± 0.0 | 2.5 | 14.0 |
| YOLO26s-obb | 1024 | 54.8 | 80.9 | 218.0 ± 1.4 | 4.9 ± 0.1 | 9.8 | 55.1 |
| YOLO26m-obb | 1024 | 55.3 | 81.0 | 579.2 ± 3.8 | 10.2 ± 0.3 | 21.2 | 183.3 |
| YOLO26l-obb | 1024 | 56.2 | 81.6 | 735.6 ± 3.1 | 13.0 ± 0.2 | 25.6 | 230.0 |
| YOLO26x-obb | 1024 | 56.7 | 81.7 | 1485.7 ± 11.5 | 30.5 ± 0.9 | 57.6 | 516.5 |
- قيم mAPtest هي لمقياس متعدد المقاييس بنموذج واحد على مجموعة بيانات DOTAv1.
قم بإعادة الإنتاج باستخدامyolo val obb data=DOTAv1.yaml device=0 split=testوأرسل النتائج المدمجة إلى DOTA evaluation. - السرعة (Speed) محسوبة كمتوسط على صور التحقق لـ 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 عصر (epoch) بحجم صورة 640. للحصول على قائمة كاملة بالمعاملات المتاحة، راجع صفحة Configuration.
تكون الإطارات المحيطة الموجهة (OBB) ودورانها بمقدار 180 درجة متطابقين، لذا يُعرف الدوران بوحدة مقياس 180 درجة ولا يملك الإطار اتجاهًا محددًا. تُقعدن تسميات التدريب إلى صيغة الحافة الطويلة: عرض الإطار w هو الضلع الأطول، ويُقاس الزاوية في اتجاه عقارب الساعة من محور x الموجب إلى اتجاه حافة w، ويتم تخزينها بالراديان في [-π/4, 3π/4) ([-45°, 135°)). لا يتم تقعيد التنبؤات، لذا قد يُبلغ الإطار المتنبأ به عن الضلع القصير كـ w؛ انظر Results Output. صيغة [0°, 90°) هي الاصطلاح المنظم على طراز DOTA ولا يتم تطبيقها أثناء التدريب أو الاستدلال.
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 في Dataset Guide. يحدد تنسيق YOLO OBB الإطارات المحيطة بنقاطها الأربع الزاوية بإحداثيات مسواة بين 0 و1، متبعاً هذا الهيكل. يدعم Ultralytics Platform annotation تسميات OBB باستخدام أداة رسم إطارات محيطة موجهة مخصصة:
class_index x1 y1 x2 y2 x3 y3 x4 y4داخلياً، تعالج YOLO الخسائر والمخرجات بتنسيق xywhr، والذي يمثل نقطة المركز (xy) والعرض والارتفاع والدوران الخاصة بـ الإطار المحيط.
التحقق#
تحقق من دقة (accuracy) نموذج 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 boxWatch: How to Detect and Track Storage Tanks using Ultralytics YOLO-OBB | Oriented Bounding Boxes | DOTA
راجع تفاصيل وضع predict الكاملة في صفحة التنبؤ (Predict).
مخرجات النتائج#
يكتشف الكشف عن الإطارات المحيطة الموجهة كائناً واحداً Results لكل صورة. حقل التنبؤ الأساسي هو result.obb، والذي يحتوي على الإطارات الدورية، ومعرفات الفئات، ودرجات الثقة لكل كائن مُكتشف.
| السمة (Attribute) | النوع | الشكل | الوصف |
|---|---|---|---|
result.obb | OBB | (N) | الصناديق الموجهة. |
result.obb.data | torch.float32 | (N,7/8) | الصناديق الدوارة الخام مع بيانات الثقة/الفئة. |
result.obb.xywhr | torch.float32 | (N,5) | xywhr إطارات مُدارة. |
result.obb.xyxyxyxy | torch.float32 | (N,4,2) | نقاط الزوايا الأربع. |
result.obb.conf | torch.float32 | (N,) | درجات الثقة. |
تتم مقياسة التسميات إلى اصطلاح الحافة الطويلة بينما لا يتم ذلك مع التنبؤات، لذا قد يُبلغ result.obb.xywhr عن w أصغر من h مع قياس الدوران من الحافة القصيرة. يصف كلا الشكلين نفس المستطيل، لذا فإن result.obb.xyxyxyxy صحيح في كلتا الحالتين. قم بتحويل الزوايا مرة أخرى عندما يحتاج الكود اللاحق إلى شكل الحافة الطويلة، مع وضع في الاعتبار أن إعادة كتابة معاملات الإطار قد تؤدي إلى إزاحة ترتيب الزوايا بشكل دوري:
from ultralytics.utils.ops import xyxyxyxy2xywhr
xywhr = xyxyxyxy2xywhr(result.obb.xyxyxyxy) # w >= h, rotation in [-pi/4, 3pi/4)للحصول على حقول Results الخاصة بكل مهمة عبر كل مهمة، راجع قسم نتائج التنبؤ حسب المهمة (Predict Results by Task).
التصدير#
قم بتصدير نموذج 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 | النموذج | البيانات الوصفية | الوسائط (Arguments) |
|---|---|---|---|---|
| PyTorch | - | yolo26n-obb.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-obb.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-obb.onnx | ✅ | imgsz، quantize، dynamic، simplify، opset، nms، batch، data، fraction، device |
| OpenVINO | openvino | yolo26n-obb_openvino_model/ | ✅ | imgsz، quantize، dynamic، nms، batch، data، fraction، device |
| TensorRT | engine | yolo26n-obb.engine | ✅ | imgsz، quantize، dynamic، simplify، opset، workspace، nms، batch، data، fraction، device |
| CoreML | coreml | yolo26n-obb.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-obb_saved_model/ | ✅ | imgsz، keras، quantize، opset، nms، batch، data، fraction، device |
| TF GraphDef | pb | yolo26n-obb.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-obb_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-obb_paddle_model/ | ✅ | imgsz، batch، device |
| MNN | mnn | yolo26n-obb.mnn | ✅ | imgsz، batch، dynamic، quantize، simplify، opset، nms، device |
| NCNN | ncnn | yolo26n-obb_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-obb_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-obb_rknn_model/ | ✅ | imgsz، batch، name، quantize، simplify، opset، data، fraction، device |
| ExecuTorch | executorch | yolo26n-obb_executorch_model/ | ✅ | imgsz، batch، device |
| Axelera | axelera | yolo26n-obb_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-obb_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-obb_qnn.onnx | ✅ | imgsz، batch، name، quantize، simplify، opset، data، fraction، device |
| LiteRT | litert | yolo26n-obb.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-obb_hailo_model/ | ✅ | imgsz، name، quantize، data، fraction، simplify، conf، iou |
| Huawei Ascend | ascend | yolo26n-obb_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n-obb.aimodel | ✅ | imgsz، batch، quantize |
راجع تفاصيل export الكاملة في صفحة التصدير (Export).
تطبيقات العالم الحقيقي#
لاكتشاف OBB باستخدام YOLO26 تطبيقات عملية عديدة عبر مختلف الصناعات:
- إدارة الموانئ والشحن البحري: اكتشاف السفن والمركبات بمختلف الزوايا لـ fleet management والمراقبة.
- التخطيط الحضري: تحليل المباني والبنية التحتية من الصور الجوية.
- الزراعة: مراقبة المحاصيل والمعدات الزراعية من لقطات الطائرات بدون طيار (الدرون).
- قطاع الطاقة: فحص الألواح الشمسية وتوربينات الرياح في اتجاهات مختلفة.
- النقل: تتبع المركبات على الطرق وفي مواقف السيارات من منظورات مختلفة.
تستفيد هذه التطبيقات من قدرة OBB على ملاءمة الأشياء بدقة في أي زاوية، مما يوفر اكتشافًا أكثر دقة من صناديق التحديد التقليدية.
الأسئلة الشائعة#
تتضمن الإطارات المحيطة الموجهة (OBB) زاوية إضافية لتحسين دقة تحديد موقع الكائنات في الصور. على عكس الإطارات المحيطة العادية، والتي تكون مستطيلات محاذاة للمحاور، يمكن لـ OBB الدوران لتناسب اتجاه الكائن بشكل أفضل. هذا مفيد بشكل خاص التطبيقات التي تتطلب وضع الكائنات بدقة، مثل الصور الجوية أو صور الأقمار الصناعية (Dataset Guide).
لتدريب نموذج 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)لمزيد من معاملات التدريب، تحقق من قسم Configuration.
تم تدريب نماذج YOLO26-OBB مسبقاً على مجموعات بيانات مثل DOTAv1 ولكن يمكنك استخدام أي مجموعة بيانات منسقة لـ OBB. يمكن العثور على معلومات مفصلة حول تنسيقات بيانات OBB في Dataset Guide.
تصدير نموذج YOLO26-OBB إلى تنسيق ONNX أمر مباشر باستخدام Python أو CLI:
مثالfrom ultralytics import YOLO # Load a model model = YOLO("yolo26n-obb.pt") # Export the model model.export(format="onnx")لمزيد من تنسيقات وتفاصيل التصدير، راجع صفحة Export.
للتحقق من نموذج 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.

