تجزئة المثيلات باستخدام Ultralytics YOLO#
تتجاوز تجزئة المثيلات نطاق كشف الكائنات خطوةً إضافية، وتشمل تحديد الكائنات الفردية في الصورة وفصلها عن بقية الصورة.
يكون ناتج نموذج تجزئة المثيلات مجموعةً من الأقنعة أو الحدود التي تحدد محيط كل كائن في الصورة، إلى جانب تسميات الفئات ودرجات الثقة لكل كائن. وتفيد تجزئة المثيلات عندما تحتاج إلى معرفة مواضع الكائنات في الصورة وأشكالها الدقيقة أيضًا.
شاهد: تنفيذ التقسيم باستخدام نموذج Ultralytics YOLO مُدرّب مسبقًا في Python.
تستخدم نماذج YOLO26 Segment اللاحقة -seg، أي yolo26n-seg.pt، وهي مدرّبة مسبقًا على COCO.
النماذج#
تظهر أدناه نماذج YOLO26 Segment المدرّبة مسبقًا على مجموعة بيانات COCO.
تُنزّل النماذج تلقائيًا من أحدث إصدار من Ultralytics عند استخدامها لأول مرة.
| النموذج | الحجم (بكسل) | mAPالمربعات 50-95(e2e) | mAPالأقنعة 50-95(e2e) | السرعة CPU ONNX (مللي ثانية) | السرعة T4 TensorRT10 (ms) | المعاملات (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-seg | 640 | 39.6 | 33.9 | 53.3 ± 0.5 | 2.1 ± 0.0 | 2.7 | 9.3 |
| YOLO26s-seg | 640 | 47.3 | 40.0 | 118.4 ± 0.9 | 3.3 ± 0.0 | 10.4 | 34.5 |
| YOLO26m-seg | 640 | 52.5 | 44.1 | 328.2 ± 2.4 | 6.7 ± 0.1 | 23.6 | 121.7 |
| YOLO26l-seg | 640 | 54.4 | 45.5 | 387.0 ± 3.7 | 8.0 ± 0.1 | 28.0 | 140.1 |
| YOLO26x-seg | 640 | 56.5 | 47.0 | 787.0 ± 6.8 | 16.4 ± 0.1 | 62.8 | 314.0 |
- قيم mAPval محسوبة لنموذج واحد بمقياس واحد على مجموعة بيانات COCO val2017.
أعِد إنتاج النتائج باستخدامyolo segment val data=coco.yaml device=0 nms=False - السرعة هي متوسط القياس على صور COCO val باستخدام ONNX على CPU وTensorRT10 على وحدة معالجة الرسومات NVIDIA T4.
أعِد إنتاج النتائج باستخدامyolo segment val data=coco.yaml batch=1 device=0|cpu nms=False. - قيم المعلمات وFLOPs خاصة بالنماذج المدمجة بعد طي Conv/BatchNorm وإزالة فرع الاكتشاف غير المستخدم. تحتفظ نقاط التحقق المدرّبة مسبقًا ببنية التدريب الكاملة، وقد تُظهر أعدادًا أعلى.
تجزّئ نقاط التحقق هذه فئات COCO الـ80. لتجزئة فئات خارج هذه القائمة دون إعادة التدريب، راجع YOLOE، الذي يقبل الفئات كموجّه نصي أو مثال مرئي أو مفردات مدمجة.
اطّلع على معاينة YOLO27 غير المُصدرة لمعرفة النتائج الأولية للصناديق والأقنعة على COCO.
التدريب#
درّب YOLO26n-seg على مجموعة بيانات COCO8-seg لمدة 100 حقبة بحجم صورة 640. للاطلاع على القائمة الكاملة للوسيطات المتاحة، راجع صفحة Configuration.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n-seg.yaml") # إنشاء نموذج جديد من YAML
model = YOLO("yolo26n-seg.pt") # تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt") # الإنشاء من YAML ونقل الأوزان
# تدريب النموذج
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)اطّلع على التفاصيل الكاملة لوضع train في صفحة Train. ويمكن أيضًا تدريب نماذج التجزئة باستخدام التدريب السحابي على Ultralytics Platform.
تنسيق مجموعة البيانات#
يمكنك الاطلاع بالتفصيل على تنسيق مجموعة بيانات تجزئة YOLO في دليل مجموعة البيانات. لتحويل مجموعة بيانات COCO JSON موجودة إلى تنسيق YOLO، استخدم الدالة المدمجة convert_coco مع use_segments=True، كما هو موضح في دليل التحويل من COCO إلى YOLO. ويمكنك أيضًا إنشاء أقنعة التجزئة باستخدام التعليقات التوضيحية في Ultralytics Platform من خلال أدوات المضلعات والتعليقات التوضيحية الذكية المدعومة بـ SAM.
التحقق#
تحقّق من دقة نموذج YOLO26n-seg المدرّب. لا حاجة إلى وسيطات، إذ يحتفظ model بـ data الخاص بالتدريب وبالوسيطات ضمن سمات النموذج: يتحقق path/to/best.pt من المثال الوارد في Train باستخدام COCO8-seg. تسجل الأوزان الرسمية مسار مجموعة بيانات تدريب غير موجود على جهازك، لذا تعود إلى coco8-seg.yaml الافتراضي للمهمة مع إصدار تحذير. مرّر data للتحقق باستخدام مجموعة بيانات أخرى.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n-seg.pt") # حمّل نموذجًا رسميًا
model = YOLO("path/to/best.pt") # تحميل نموذج مخصص
# تحقّق من النموذج
metrics = model.val() # لا حاجة إلى وسيطات؛ إذ تُحفظ مجموعة البيانات والإعدادات
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # قائمة تحتوي على mAP50-95(B) لكل فئة
metrics.box.image_metrics # قاموس مقاييس لكل صورة للكشف، يتضمن precision وrecall وF1 وTP وFP وFN
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # قائمة تحتوي على mAP50-95(M) لكل فئة
metrics.seg.image_metrics # قاموس مقاييس لكل صورة للتجزئة، يتضمن precision وrecall وF1 وTP وFP وFNالتنبؤ#
استخدم نموذج YOLO26n-seg مدرّبًا لإجراء تنبؤات على الصور.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n-seg.pt") # حمّل نموذجًا رسميًا
model = YOLO("path/to/best.pt") # تحميل نموذج مخصص
# أجرِ التنبؤ باستخدام النموذج
results = model("https://ultralytics.com/images/bus.jpg") # أجرِ التنبؤ على صورة
# الوصول إلى النتائج
for result in results:
xy = result.masks.xy # مضلعات الأقنعة بإحداثيات البكسل
xyn = result.masks.xyn # مضلعات الأقنعة المطبّعة
masks = result.masks.data # أقنعة ثنائية، شكلها (N,H,W)، ونوع بياناتها torch.uint8اطّلع على التفاصيل الكاملة لوضع predict في صفحة التنبؤ.
مخرجات النتائج#
تعيد تجزئة المثيلات في YOLO كائن Results واحدًا لكل صورة. وتخزّن كل نتيجة تنبؤات على مستوى الكائن، بحيث يكون لكل مثيل مكتشف قناعه الثنائي وفئته ودرجة ثقته وصندوقه الخاص.
| السمة | النوع | الشكل | الوصف |
|---|---|---|---|
result.masks | Masks | (N) | أقنعة المثيلات. |
result.masks.data | torch.uint8 | (N,H,W) | أقنعة ثنائية، وقيمها 0 أو 1. |
result.masks.xy | np.float32 | list[(P,2)] | مضلعات البكسل. |
result.masks.xyn | np.float32 | list[(P,2)] | مضلعات مُطبّعة. |
result.boxes | Boxes | (N) | مربعات المثيلات وفئاتها ودرجات الثقة. |
result.boxes.cls | torch.float32 | (N,) | معرّفات الفئات؛ حوّلها إلى int للحصول على الأسماء. |
للاطلاع على حقول Results الخاصة بكل مهمة، راجع قسم نتائج التنبؤ حسب المهمة.
تجزئة المثيلات مقابل التجزئة الدلالية#
تجزئة المثيلات هي تجزئة على مستوى الكائن: تنتج سيارتان قناعين وصندوقين ودرجتي ثقة. أما التجزئة الدلالية فهي تصنيف على مستوى البكسل: تتحول السيارتان نفسيهما إلى بكسلات تحمل معرّف الفئة نفسه ضمن خريطة فئات بحجم الصورة، من دون صناديق أو درجات ثقة لكل كائن أو قائمة مضلعات افتراضية. راجع المقارنة التفصيلية لكل حقل في صفحة التجزئة الدلالية.
التصدير#
صدّر نموذج YOLO26n-seg إلى تنسيق آخر مثل ONNX أو CoreML وغيرهما.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n-seg.pt") # حمّل نموذجًا رسميًا
model = YOLO("path/to/best.pt") # تحميل نموذج مخصص
# صدّر النموذج
model.export(format="onnx")تظهر تنسيقات تصدير YOLO26-seg المتاحة في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام الوسيط format، أي format='onnx' أو format='engine'. ويمكنك إجراء التنبؤ أو التحقق مباشرةً باستخدام النماذج المُصدّرة، أي yolo predict model=yolo26n-seg.onnx. تظهر أمثلة الاستخدام لنموذجك بعد اكتمال التصدير.
يدعم CoreML تضمين NMS (nms=True) للكشف وتجزئة المثيلات وتقدير الوضعية باستخدام أشكال ثابتة. أما عمليات تصدير التجزئة الافتراضية (nms=None) فتُسند NMS إلى التطبيق المستهلك.
| التنسيق | وسيط format | النموذج | البيانات الوصفية | الوسيطات |
|---|---|---|---|---|
| PyTorch | - | yolo26n-seg.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-seg.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-seg.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-seg_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-seg.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-seg.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| Apple Core AI | coreai | yolo26n-seg.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n-seg_saved_model/ | ✅ | imgsz, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-seg.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-seg_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| LiteRT | litert | yolo26n-seg.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-seg_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-seg.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n-seg_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-seg_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-seg_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n-seg_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-seg_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-seg_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-seg_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| Hailo | hailo | yolo26n-seg_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n-seg_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n-seg_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
يعتمد nms=None على المخرجات الأولية لإجراء NMS خارجي. اضبط nms=False لتحديد رأس متاح خالٍ من NMS؛ وتعود التنسيقات غير المدعومة إلى مسار المخرجات الأصلي الخاص بها. تحدد إدخالات nms أعلاه التنسيقات التي يمكنها تضمين NMS باستخدام nms=True.
اطّلع على التفاصيل الكاملة لـexport في صفحة التصدير.
الأسئلة الشائعة#
لتدريب نموذج تجزئة YOLO26 على مجموعة بيانات مخصصة، يجب أولًا إعداد مجموعة البيانات بتنسيق تجزئة YOLO. يمكنك استخدام الأداة المدمجة
convert_cocoلتحويل مجموعات بيانات COCO JSON. بعد تجهيز مجموعة البيانات، يمكنك تدريب النموذج باستخدام أوامر Python أو CLI:مثالfrom ultralytics import YOLO # حمّل نموذج YOLO26 segment مدرّبًا مسبقًا model = YOLO("yolo26n-seg.pt") # تدريب النموذج results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)راجع صفحة Configuration للاطلاع على مزيد من الوسيطات المتاحة.
يحدّد كشف الكائنات الكائنات داخل الصورة ويعيّن مواقعها برسم صناديق إحاطة حولها، بينما لا تكتفي تجزئة المثيلات بتحديد صناديق الإحاطة، بل تحدد أيضًا الشكل الدقيق لكل كائن. توفر نماذج تجزئة المثيلات في YOLO26 أقنعة أو حدودًا تحدد محيط كل كائن مكتشف، وهو أمر مفيد خصوصًا للمهام التي تتطلب معرفة الشكل الدقيق للكائنات، مثل التصوير الطبي أو القيادة الذاتية.
يُعد Ultralytics YOLO26 نموذجًا متطورًا معروفًا بدقته العالية وأدائه الآني، ما يجعله مثاليًا لمهام تجزئة المثيلات. وتأتي نماذج YOLO26 Segment مدرّبة مسبقًا على مجموعة بيانات COCO، ما يضمن أداءً قويًا مع مجموعة متنوعة من الكائنات. كما يدعم YOLO التدريب والتحقق والتنبؤ والتصدير بتكامل سلس، ما يجعله متعدد الاستخدامات في تطبيقات البحث والصناعة.
إن تحميل نموذج تجزئة YOLO مدرّب مسبقًا والتحقق منه أمر مباشر. إليك طريقة تنفيذ ذلك باستخدام كل من Python وCLI:
مثالfrom ultralytics import YOLO # تحميل نموذج مدرَّب مسبقًا model = YOLO("yolo26n-seg.pt") # تحقّق من النموذج metrics = model.val() print("Mean Average Precision for boxes:", metrics.box.map) print("Mean Average Precision for masks:", metrics.seg.map)توفر هذه الخطوات مقاييس تحقق مثل متوسط الدقة المتوسطة (mAP)، الضروري لتقييم أداء النموذج.
تصدير نموذج تجزئة YOLO إلى تنسيق ONNX سهل، ويمكن تنفيذه باستخدام Python أو أوامر CLI:
مثالfrom ultralytics import YOLO # تحميل نموذج مدرَّب مسبقًا model = YOLO("yolo26n-seg.pt") # تصدير النموذج إلى تنسيق ONNX model.export(format="onnx")لمزيد من التفاصيل حول التصدير إلى تنسيقات مختلفة، راجع صفحة Export.