اكتشاف الأجسام باستخدام Ultralytics YOLO#
اكتشاف الأجسام مهمة تتضمن تحديد مواقع الأجسام وفئاتها في صورة أو تدفق فيديو.
تتمثل مخرجات كاشف الأجسام في مجموعة من مربعات الإحاطة التي تحيط بالأجسام في الصورة، إلى جانب تسميات الفئات ودرجات الثقة لكل مربع. يُعد اكتشاف الأجسام خيارًا مناسبًا عندما تحتاج إلى تحديد الأجسام محل الاهتمام في مشهد ما، من دون الحاجة إلى معرفة شكلها الدقيق.
شاهد: اكتشاف الكائنات باستخدام نموذج Ultralytics YOLO مُدرّب مسبقًا.
نماذج YOLO26 Detect هي نماذج YOLO26 الافتراضية، أي yolo26n.pt، وهي مدرّبة مسبقًا على COCO.
النماذج#
تظهر أدناه نماذج YOLO26 Detect المدرّبة مسبقًا على مجموعة بيانات COCO.
تُنزّل النماذج تلقائيًا من أحدث إصدار من Ultralytics عند استخدامها لأول مرة.
| النموذج | الحجم (بكسل) | mAPالتحقق 50-95 | mAPالتحقق 50-95(e2e) | السرعة CPU ONNX (مللي ثانية) | السرعة T4 TensorRT10 (ms) | المعاملات (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n | 640 | 40.9 | 40.1 | 38.9 ± 0.7 | 1.7 ± 0.0 | 2.4 | 5.5 |
| YOLO26s | 640 | 48.6 | 47.8 | 87.2 ± 0.9 | 2.5 ± 0.0 | 9.5 | 20.9 |
| YOLO26m | 640 | 53.1 | 52.5 | 220.0 ± 1.4 | 4.7 ± 0.1 | 20.4 | 68.4 |
| YOLO26l | 640 | 55.0 | 54.4 | 286.2 ± 2.0 | 6.2 ± 0.2 | 24.8 | 86.8 |
| YOLO26x | 640 | 57.5 | 56.9 | 525.8 ± 4.0 | 11.8 ± 0.2 | 55.7 | 194.4 |
- قيم mAPval خاصة بنموذج واحد ومقياس واحد على مجموعة بيانات COCO val2017.
أعِد إنتاج النتائج باستخدامyolo detect val data=coco.yaml device=0. أضفnms=Falseلإعادة إنتاج عمود e2e. - السرعة هي متوسط القياس على صور COCO val باستخدام ONNX على CPU وTensorRT10 على وحدة معالجة الرسومات NVIDIA T4.
أعِد إنتاج النتائج باستخدامyolo detect val data=coco.yaml batch=1 device=0|cpu nms=False. - قيم المعلمات وFLOPs خاصة بالنماذج المدمجة بعد طي Conv/BatchNorm وإزالة فرع الاكتشاف غير المستخدم. تحتفظ نقاط التحقق المدرّبة مسبقًا ببنية التدريب الكاملة، وقد تُظهر أعدادًا أعلى.
اطّلع على معاينة YOLO27 غير المُصدرة للاطلاع على النتائج الأولية لاكتشاف الأجسام على COCO.
التدريب#
درّب YOLO26n على مجموعة بيانات COCO8 لمدة 100 حقبة بحجم صورة 640. للاطلاع على القائمة الكاملة للوسائط المتاحة، راجع صفحة الإعدادات.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n.yaml") # إنشاء نموذج جديد من YAML
model = YOLO("yolo26n.pt") # تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # الإنشاء من YAML ونقل الأوزان
# تدريب النموذج
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)اطّلع على التفاصيل الكاملة لوضع train في صفحة التدريب. ويمكن أيضًا تدريب نماذج الاكتشاف باستخدام التدريب السحابي على منصة Ultralytics.
تنسيق مجموعة البيانات#
يمكن الاطلاع بالتفصيل على تنسيق مجموعة بيانات YOLO لاكتشاف الأجسام في دليل مجموعة البيانات. لتحويل مجموعة بيانات COCO JSON موجودة إلى تنسيق YOLO، استخدم الدالة المضمّنة convert_coco الموضّحة في دليل التحويل من COCO إلى YOLO. ويمكنك أيضًا إضافة التعليقات التوضيحية إلى مجموعات بيانات الاكتشاف وإدارتها باستخدام أدوات التعليق التوضيحي المدعومة بالذكاء الاصطناعي في منصة Ultralytics.
التحقق#
تحقّق من دقة نموذج YOLO26n المدرّب. لا حاجة إلى تمرير أي وسائط، إذ يحتفظ model بـ data الخاص بالتدريب وبالوسائط على هيئة سمات للنموذج: يتحقّق path/to/best.pt الوارد في مثال التدريب من النتائج على COCO8. تسجّل الأوزان الرسمية مسار مجموعة بيانات التدريب الذي قد لا يكون موجودًا على جهازك، لذا تعود إلى coco8.yaml الافتراضي للمهمة مع إصدار تحذير. مرّر data للتحقق من النتائج على مجموعة بيانات أخرى.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n.pt") # حمّل نموذجًا رسميًا
model = YOLO("path/to/best.pt") # تحميل نموذج مخصص
# تحقّق من النموذج
metrics = model.val() # لا حاجة إلى وسيطات؛ إذ تُحفظ مجموعة البيانات والإعدادات
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # قائمة تتضمن mAP50-95 لكل فئة
metrics.box.image_metrics # قاموس المقاييس لكل صورة، ويشمل precision وrecall وF1 وTP وFP وFNالتنبؤ#
استخدم نموذج YOLO26n مدرّبًا لإجراء التنبؤات على الصور.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n.pt") # حمّل نموذجًا رسميًا
model = YOLO("path/to/best.pt") # تحميل نموذج مخصص
# أجرِ التنبؤ باستخدام النموذج
results = model("https://ultralytics.com/images/bus.jpg") # أجرِ التنبؤ على صورة
# الوصول إلى النتائج
for result in results:
xywh = result.boxes.xywh # مركز-x، مركز-y، العرض، الارتفاع
xywhn = result.boxes.xywhn # normalized
xyxy = result.boxes.xyxy # أعلى اليسار-x، أعلى اليسار-y، أسفل اليمين-x، أسفل اليمين-y
xyxyn = result.boxes.xyxyn # normalized
names = [result.names[cls.item()] for cls in result.boxes.cls.int()] # اسم فئة كل مربع
confs = result.boxes.conf # درجة الثقة لكل مربعاطّلع على التفاصيل الكاملة لوضع predict في صفحة التنبؤ.
مخرجات النتائج#
يعيد اكتشاف الأجسام كائن Results واحدًا لكل صورة. وحقل التنبؤ الأساسي هو result.boxes، الذي يحتوي على إحداثيات المربعات ومعرّفات الفئات ودرجات الثقة لكل جسم مكتشف.
| السمة | النوع | الشكل | الوصف |
|---|---|---|---|
result.boxes | Boxes | (N) | مربعات الكشف. |
result.boxes.data | torch.float32 | (N,6/7) | [x1,y1,x2,y2,conf,cls] الخام، مع معرّف التتبّع اختياريًا. |
result.boxes.xyxy | torch.float32 | (N,4) | مربعات البكسل xyxy. |
result.boxes.conf | torch.float32 | (N,) | درجات الثقة. |
result.boxes.cls | torch.float32 | (N,) | معرّفات الفئات؛ حوّلها إلى int للحصول على الأسماء. |
للاطلاع على حقول Results الخاصة بكل مهمة، راجع قسم نتائج التنبؤ حسب المهمة.
التصدير#
صدّر نموذج YOLO26 إلى تنسيق آخر مثل ONNX أو CoreML وغيرهما.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n.pt") # حمّل نموذجًا رسميًا
model = YOLO("path/to/best.pt") # تحميل نموذج مخصص
# صدّر النموذج
model.export(format="onnx")ترد تنسيقات التصدير المتاحة لـ YOLO26 في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام الوسيط format، مثل format='onnx' أو format='engine'. ويمكنك إجراء التنبؤ أو التحقق مباشرةً باستخدام النماذج المُصدّرة، مثل yolo predict model=yolo26n.onnx. تظهر أمثلة الاستخدام الخاصة بنموذجك بعد اكتمال التصدير.
| التنسيق | وسيط format | النموذج | البيانات الوصفية | الوسيطات |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
يعتمد nms=None على المخرجات الأولية لإجراء NMS خارجي. اضبط nms=False لتحديد رأس متاح خالٍ من NMS؛ وتعود التنسيقات غير المدعومة إلى مسار المخرجات الأصلي الخاص بها. تحدد إدخالات nms أعلاه التنسيقات التي يمكنها تضمين NMS باستخدام nms=True.
اطّلع على التفاصيل الكاملة لـexport في صفحة التصدير.
الأسئلة الشائعة#
نعم. يشرح دليل البدء السريع لمنصة Ultralytics سير عمل عبر المتصفح لإضافة التعليقات التوضيحية إلى مجموعات البيانات، وتدريب نماذج الاكتشاف على وحدات GPU سحابية، ونشرها على نقاط نهاية الاستدلال.
يتطلب تدريب نموذج YOLO26 على مجموعة بيانات مخصصة بضع خطوات:
- إعداد مجموعة البيانات: تأكد من أن مجموعة بياناتك بتنسيق YOLO. للاسترشاد، راجع دليل مجموعة البيانات.
- تحميل النموذج: استخدم مكتبة Ultralytics YOLO لتحميل نموذج مدرّب مسبقًا أو إنشاء نموذج جديد من ملف YAML.
- تدريب النموذج: نفّذ الطريقة
trainفي Python أو الأمرyolo detect trainفي CLI.
مثالfrom ultralytics import YOLO # تحميل نموذج مدرَّب مسبقًا model = YOLO("yolo26n.pt") # درّب النموذج على مجموعة البيانات المخصصة model.train(data="my_custom_dataset.yaml", epochs=100, imgsz=640)للاطلاع على خيارات الإعداد التفصيلية، تفضّل بزيارة صفحة الإعدادات.
يوفّر Ultralytics YOLO26 نماذج متنوعة مدرّبة مسبقًا لمهام اكتشاف الأجسام، وتجزئة المثيلات، والتجزئة الدلالية، وتقدير العمق، والتصنيف، وتقدير الوضعية، ومربعات الإحاطة الموجّهة. دُرّبت هذه النماذج مسبقًا على مجموعة بيانات COCO، أو Cityscapes للتجزئة الدلالية، أو مزيج من مجموعات بيانات متعددة لتقدير العمق، أو ImageNet للتصنيف، أو DOTAv1 لمهمة OBB. فيما يلي بعض النماذج المتاحة:
للاطلاع على قائمة تفصيلية ومقاييس الأداء، راجع قسم النماذج.
للتحقق من دقة نموذج YOLO26 الذي درّبته، يمكنك استخدام الطريقة
.val()في Python أو الأمرyolo detect valفي CLI. وستوفّر هذه الطريقة مقاييس مثل mAP50-95 وmAP50 وغيرها.مثالfrom ultralytics import YOLO # حمّل النموذج model = YOLO("path/to/best.pt") # تحقّق من النموذج metrics = model.val() print(metrics.box.map) # mAP50-95لمزيد من تفاصيل التحقق، تفضّل بزيارة صفحة التحقق.
يتيح Ultralytics YOLO26 تصدير النماذج إلى تنسيقات متنوعة مثل ONNX وTensorRT وCoreML وغيرها، لضمان التوافق عبر منصات وأجهزة مختلفة.
مثالfrom ultralytics import YOLO # حمّل النموذج model = YOLO("yolo26n.pt") # تصدير النموذج إلى تنسيق ONNX model.export(format="onnx")راجع القائمة الكاملة للتنسيقات المدعومة والتعليمات في صفحة التصدير.
صُمّم Ultralytics YOLO26 لتقديم أداء متطور في اكتشاف الأجسام، وتجزئة المثيلات، والتجزئة الدلالية، وتقدير الوضعية. إليك بعض المزايا الرئيسية:
- النماذج المدرّبة مسبقًا: استخدم النماذج المدرّبة مسبقًا على مجموعات بيانات شائعة مثل COCO وImageNet لتسريع التطوير.
- دقة عالية: يحقق درجات mAP متميزة، ما يضمن موثوقية اكتشاف الأجسام.
- السرعة: جرى تحسينه من أجل الاستدلال الآني، ما يجعله مثاليًا للتطبيقات التي تتطلب معالجة سريعة.
- المرونة: صدّر النماذج إلى تنسيقات متنوعة مثل ONNX وTensorRT لنشرها على منصات متعددة.
استكشف مدونتنا للاطلاع على حالات الاستخدام وقصص النجاح التي تعرض تطبيقات YOLO26.