تجزئة المثيلات

Instance segmentation examples

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

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



Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.
تلميح

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

نماذج

يتم عرض نماذج Segment المدربة مسبقاً في YOLO26 هنا. نماذج الاكتشاف (Detect) والتجزئة (Segment) وتحديد الوضع (Pose) مدربة مسبقاً على مجموعة بيانات COCO، بينما نماذج التجزئة الدلالية Semantic مدربة مسبقاً على Cityscapes، ونماذج التصنيف (Classify) مدربة مسبقاً على مجموعة بيانات ImageNet.

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

النموذجالحجم
(بكسل)
mAPbox
50-95(e2e)
mAPmask
50-95(e2e)
السرعة
CPU ONNX
(مللي ثانية)
السرعة
T4 TensorRT10
(مللي ثانية)
البارامترات
(مليون)
FLOPs
(مليار)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.1
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.2
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.5
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0139.8
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8313.5
  • قيم mAPval مخصصة لنموذج واحد على مقياس واحد لمجموعة بيانات COCO val2017.
    أعد الإنتاج عبر yolo val segment data=coco.yaml device=0
  • تم حساب السرعة (Speed) كمتوسط عبر صور COCO val باستخدام مثيل Amazon EC2 P4d.
    أعد الإنتاج عبر yolo val segment data=coco.yaml batch=1 device=0|cpu
  • قيم البارامترات و FLOPs هي للنموذج المدمج بعد model.fuse()، والذي يدمج طبقات Conv وBatchNorm، وبالنسبة للنماذج من النوع end2end، فإنه يزيل رأس الكشف المساعد one-to-many. تحتفظ نقاط التحقق المدربة مسبقًا ببنية التدريب الكاملة وقد تظهر أعدادًا أعلى.

التدريب (Train)

قم بتدريب 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 وما إلى ذلك) إلى تنسيق YOLO، يرجى استخدام أداة JSON2YOLO من Ultralytics. يمكنك أيضاً إنشاء أقنعة تجزئة على منصة Ultralytics باستخدام أدوات المضلعات والتعليق الذكي المدعوم بـ SAM.

التحقق (Val)

تحقق من دقة نموذج 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 واحداً لكل صورة. تخزن كل نتيجة تنبؤات على مستوى الكائن، حيث يحتوي كل مثيل مكتشف على قناع ثنائي وفئة ودرجة ثقة وصندوق خاص به.

السمةالنوعالشكل (Shape)الوصف
result.masksMasks(N)أقنعة المثيلات.
result.masks.datatorch.uint8(N,H,W)أقنعة ثنائية، قيم 0 أو 1.
result.masks.xynp.float32list[(P,2)]مضلعات البكسل.
result.masks.xynnp.float32list[(P,2)]مضلعات مطبعة (Normalized).
result.boxesBoxes(N)صناديق/فئات/درجات ثقة المثيلات.
result.boxes.clstorch.float32(N,)معرفات الفئات؛ يتم تحويلها إلى int للأسماء.

لحقول Results الخاصة بكل مهمة عبر كل مهمة، راجع قسم تنبؤ النتائج حسب المهمة.

كيف يختلف هذا عن التجزئة الدلالية

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

التصدير (Export)

قم بتصدير نموذج 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. يتم عرض أمثلة الاستخدام لنموذجك بعد اكتمال التصدير.

التنسيقوسيطة formatالنموذجالبيانات الوصفيةالوسيطات
PyTorch-yolo26n-seg.pt-
TorchScripttorchscriptyolo26n-seg.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-seg.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-seg_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-seg_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pbimgsz, batch, device
TF Litetfliteyolo26n-seg.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-seg_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/imgsz, batch, device
MNNmnnyolo26n-seg.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-seg_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-seg_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-seg_deepx_model/imgsz, int8, data, optimize, device

اطلع على تفاصيل export الكاملة في صفحة Export.

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

كيف يمكنني تدريب نموذج تجزئة YOLO26 على مجموعة بيانات مخصصة؟

لتدريب نموذج تجزئة YOLO26 على مجموعة بيانات مخصصة، تحتاج أولاً إلى تجهيز مجموعة بياناتك بتنسيق تجزئة YOLO. يمكنك استخدام أدوات مثل JSON2YOLO لتحويل مجموعات البيانات من تنسيقات أخرى. بمجرد أن تصبح مجموعة بياناتك جاهزة، يمكنك تدريب النموذج باستخدام 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؟

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

لماذا نستخدم YOLO26 لتجزئة المثيلات؟

يعد Ultralytics YOLO26 نموذجاً متطوراً ومعترفاً به لدقته العالية وأدائه في الوقت الفعلي، مما يجعله مثالياً لمهام تجزئة المثيلات. تأتي نماذج YOLO26 Segment مدربة مسبقاً على مجموعة بيانات COCO، مما يضمن أداءً قوياً عبر مجموعة متنوعة من الكائنات. بالإضافة إلى ذلك، يدعم YOLO وظائف التدريب والتحقق والتنبؤ والتصدير مع تكامل سلس، مما يجعله متعدد الاستخدامات للغاية لكل من التطبيقات البحثية والصناعية.

كيف يمكنني تحميل والتحقق من صحة نموذج تجزئة 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؟

تصدير نموذج تجزئة 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")

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

تعليقات