تجزئة الكائنات مع Ultralytics YOLO#
تتجاوز تجزئة الكائنات خطوةً إضافيةً عن اكتشاف الكائنات، وتتضمن تحديد الكائنات الفردية في الصورة وتجزئتها عن بقية الصورة.
يتمثل ناتج نموذج تجزئة الكائنات في مجموعة من الأقنعة أو المحيطات التي تحدد كل كائن في الصورة، إلى جانب تسميات الفئات ودرجات الثقة لكل كائن. وتكون تجزئة الكائنات مفيدة عندما تحتاج إلى معرفة ليس فقط مواضع الكائنات في الصورة، بل أيضًا شكلها الدقيق.
Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.
تستخدم نماذج YOLO26 Segment اللاحقة -seg، أي yolo26n-seg.pt، وهي مدرّبة مسبقًا على COCO.
النماذج#
تظهر هنا نماذج YOLO26 Segment المدرّبة مسبقًا. نماذج Detect وSegment وPose مدرّبة مسبقًا على مجموعة بيانات COCO، ونماذج التجزئة الدلالية مدرّبة مسبقًا على Cityscapes، ونماذج Classify مدرّبة مسبقًا على مجموعة بيانات ImageNet.
تُنزل النماذج تلقائيًا من أحدث إصدار من Ultralytics عند الاستخدام الأول.
| النموذج | الحجم (بكسل) | mAPbox 50-95(e2e) | mAPmask 50-95(e2e) | السرعة CPU ONNX (مللي ثانية) | السرعة T4 TensorRT10 (مللي ثانية) | المعاملات (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 val segment data=coco.yaml device=0 nms=False - السرعة هي المتوسط عبر صور COCO val باستخدام مثيل Amazon EC2 P4d.
يمكن إعادة الإنتاج باستخدامyolo val segment data=coco.yaml batch=1 device=0|cpu nms=False - Params and FLOPs values are for fused models after Conv/BatchNorm folding and removal of the unused detection branch. Pretrained checkpoints retain the full training architecture and may show higher counts.
تجزّئ نقاط التحقق هذه الفئات الثمانين في COCO. لتجزئة الفئات الموجودة خارج هذه القائمة من دون إعادة التدريب، راجع YOLOE، الذي يتلقى الفئات في صورة مطالبة نصية أو مثال مرئي أو مفردات مضمّنة.
راجع مع معاينة YOLO27 غير المُصْدرة للحصول على نتائج مبدئية لصناديق وأقنعة COCO.
التدريب#
درّب YOLO26n-seg على مجموعة بيانات COCO8-seg لمدة 100 حقبة وبحجم صورة 640. للحصول على القائمة الكاملة للوسائط المتاحة، راجع صفحة الإعداد.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.yaml") # build a new model from YAML
model = YOLO("yolo26n-seg.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)راجع التفاصيل الكاملة لوضع train في صفحة التدريب. ويمكن أيضًا تدريب نماذج التجزئة باستخدام التدريب السحابي على منصة Ultralytics.
تنسيق مجموعة البيانات#
يمكن العثور على تنسيق مجموعات بيانات التجزئة الخاص بـ YOLO بالتفصيل في دليل مجموعة البيانات. لتحويل مجموعة بيانات COCO JSON موجودة إلى تنسيق YOLO، استخدم الدالة المدمجة convert_coco مع use_segments=True، كما هو موضح في دليل التحويل من COCO إلى YOLO. يمكنك أيضاً إنشاء أقنعة تجزئة باستخدام أداة التوضيح في منصة Ultralytics باستخدام أدوات المضلعات والتوضيح الذكي المدعوم بـ SAM.
التحقق#
تحقق من دقة نموذج YOLO26n-seg المدرّب على مجموعة بيانات COCO8-seg. لا حاجة إلى أي وسائط، إذ يحتفظ model بـ data ووسائط التدريب كسمات للنموذج.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # 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 for det with precision, recall, F1, TP, FP, and FN
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # a list containing mAP50-95(M) for each category
metrics.seg.image_metrics # per-image metrics dictionary for seg with precision, recall, F1, TP, FP, and FNالتنبؤ#
استخدم نموذج YOLO26n-seg المدرّب لإجراء التنبؤات على الصور.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n-seg.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:
xy = result.masks.xy # mask polygons in pixel coordinates
xyn = result.masks.xyn # normalized mask polygons
masks = result.masks.data # binary masks, shape (N,H,W), dtype 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
# Load a model
model = YOLO("yolo26n-seg.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom-trained model
# Export the model
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 |
| TF SavedModel | saved_model | yolo26n-seg_saved_model/ | ✅ | imgsz، keras، 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 |
| 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 |
| LiteRT | litert | yolo26n-seg.tflite | ✅ | imgsz، quantize، batch، data، fraction، device |
| Hailo | hailo | yolo26n-seg_hailo_model/ | ✅ | imgsz، name، quantize، data، fraction، simplify، conf، iou |
| Huawei Ascend | ascend | yolo26n-seg_ascend_model/ | ✅ | imgsz، batch، name، quantize، opset، simplify، nms |
| Apple Core AI | coreai | yolo26n-seg.aimodel | ✅ | imgsz، batch، quantize |
يفترض nms=None المخرجات الخام لـ NMS الخارجي. قم بتعيين nms=False لتحديد رأس متاح خالٍ من NMS؛ وتتراجع التنسيقات غير المدعومة إلى مسار إخراجها الأصلي. وتحدد مُدخلات nms أعلاه التنسيقات التي يمكنها تضمين NMS باستخدام nms=True.
راجع تفاصيل export الكاملة في صفحة التصدير.
الأسئلة الشائعة#
لتدريب نموذج تجزئة YOLO26 على مجموعة بيانات مخصصة، تحتاج أولاً إلى إعداد مجموعة البيانات الخاصة بك بتنسيق تجزئة YOLO. يمكنك استخدام الأداة المدمجة
convert_cocoلتحويل مجموعات بيانات COCO JSON. بمجرد أن تصبح مجموعة البيانات جاهزة، يمكنك تدريب النموذج باستخدام Python أو أوامر CLI:مثالfrom ultralytics import YOLO # Load a pretrained YOLO26 segment model model = YOLO("yolo26n-seg.pt") # Train the model results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)راجع صفحة الإعدادات للاطلاع على مزيد من الوسائط المتاحة.
يحدد اكتشاف الكائنات الكائنات داخل الصورة ويحدد مواضعها من خلال رسم مربعات إحاطة حولها، بينما لا تكتفي تجزئة الكائنات بتحديد مربعات الإحاطة، بل تحدد أيضًا الشكل الدقيق لكل كائن. توفر نماذج تجزئة الكائنات في YOLO26 أقنعة أو محيطات تحدد كل كائن مكتشف، وهو ما يكون مفيدًا خصوصًا في المهام التي تتطلب معرفة الشكل الدقيق للكائنات، مثل التصوير الطبي أو القيادة الذاتية.
يُعد Ultralytics YOLO26 نموذجًا متطورًا على أحدث مستوى، ومعروفًا بدقته العالية وأدائه الآني، ما يجعله مثاليًا لمهام تجزئة الكائنات. وتأتي نماذج YOLO26 Segment مدرّبة مسبقًا على مجموعة بيانات COCO، ما يضمن أداءً قويًا عبر مجموعة متنوعة من الكائنات. بالإضافة إلى ذلك، يدعم YOLO وظائف التدريب والتحقق والتنبؤ والتصدير مع تكامل سلس، ما يجعله متعدد الاستخدامات بدرجة كبيرة في تطبيقات البحث والصناعة على حد سواء.
يُعد تحميل نموذج YOLO لتجزئة الكائنات مدرّبًا مسبقًا والتحقق منه أمرًا مباشرًا. إليك كيفية تنفيذ ذلك باستخدام كل من Python وCLI:
مثالfrom ultralytics import YOLO # Load a pretrained model model = YOLO("yolo26n-seg.pt") # Validate the model 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 # Load a pretrained model model = YOLO("yolo26n-seg.pt") # Export the model to ONNX format model.export(format="onnx")لمزيد من التفاصيل حول التصدير إلى تنسيقات متنوعة، راجع صفحة التصدير.