Ultralytics YOLO27:
Get Started

التجزئة الدلالية باستخدام Ultralytics YOLO#

Semantic segmentation examples

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



شاهد: التقسيم الدلالي باستخدام Ultralytics YOLO26 | دليل البدء السريع

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

نصيحة

استخدم task=semantic أو مهمة CLI المسماة yolo semantic لإجراء التجزئة الدلالية. وتستخدم ملفات نماذج التجزئة الدلالية YOLO26 اللاحقة -sem، مثل yolo26n-sem.pt.

النماذج#

تظهر أدناه نماذج YOLO26 Semantic المدرّبة مسبقًا على مجموعة بيانات Cityscapes.

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

النموذجالحجم
(بكسل)
mIoUالتحققالسرعة
RTX3090 PyTorch
(ms)
المعاملات
(M)
FLOPs
(B)
YOLO26n-sem1024 × 204878.34.4 ± 0.01.623.8
YOLO26s-sem1024 × 204880.88.4 ± 0.06.591.0
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3305.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.8388.2
YOLO26x-sem1024 × 204883.648.9 ± 0.240.1866.9
  • قيم mIoUval محسوبة لنموذج واحد بمقياس واحد على مجموعة التحقق Cityscapes.
    أعِد إنتاج النتائج باستخدام yolo semantic val data=cityscapes.yaml device=0 imgsz=2048
  • متوسط السرعة محسوب على صور التحقق من Cityscapes باستخدام مثيل RTX3090.
    أعِد إنتاج النتائج باستخدام yolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048
  • قيم Params وFLOPs محسوبة للنموذج بعد model.fuse()، الذي يدمج طبقات Conv وBatchNorm. تحتفظ نقاط التحقق المدرّبة مسبقًا ببنية التدريب الكاملة، وقد تُظهر أعدادًا أعلى.

تظهر أدناه نماذج YOLO26 Semantic المدرّبة مسبقًا على مجموعة بيانات ADE20K.

النموذجالحجم
(بكسل)
mIoUالتحققالسرعة
RTX3090 PyTorch
(ms)
المعاملات
(M)
FLOPs
(B)
YOLO26n-sem-ade20k64038.83.9 ± 0.21.64.5
YOLO26s-sem-ade20k64045.64.2 ± 0.36.517.5
YOLO26m-sem-ade20k64047.44.7 ± 0.314.459.6
YOLO26l-sem-ade20k64049.78.3 ± 0.217.975.2
YOLO26x-sem-ade20k64051.59.9 ± 0.340.2168.4
  • قيم mIoUval محسوبة لنموذج واحد بمقياس واحد على مجموعة التحقق ADE20K.
    أعِد إنتاج النتائج باستخدام yolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml device=0 imgsz=640، مع استبدال yolo26n-sem-ade20k.pt بنقطة التحقق yolo26*-sem-ade20k.pt المطلوبة.
  • متوسط السرعة محسوب على صور التحقق من ADE20K باستخدام مثيل RTX3090.
    أعِد إنتاج النتائج باستخدام yolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml batch=1 device=0|cpu imgsz=640، مع استبدال yolo26n-sem-ade20k.pt بنقطة التحقق yolo26*-sem-ade20k.pt المطلوبة.
  • قيم Params وFLOPs محسوبة للنموذج بعد model.fuse()، الذي يدمج طبقات Conv وBatchNorm. تحتفظ نقاط التحقق المدرّبة مسبقًا ببنية التدريب الكاملة، وقد تُظهر أعدادًا أعلى.

اطّلع على معاينة YOLO27 غير المُصدرة لمعرفة النتائج الأولية لقيمة mIoU على Cityscapes.

التدريب#

درّب YOLO26n-sem على مجموعة بيانات Cityscapes8 لمدة 100 حقبة بحجم صورة 1024. للاطلاع على القائمة الكاملة للوسيطات المتاحة، راجع صفحة Configuration.

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-sem.yaml")  # ⁨إنشاء نموذج جديد من YAML⁩
model = YOLO("yolo26n-sem.pt")  # ⁨تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)⁩
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt")  # ⁨الإنشاء من YAML ونقل الأوزان⁩

# ⁨تدريب النموذج⁩
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

اطّلع على التفاصيل الكاملة لوضع train في صفحة Train. ويمكن أيضًا تدريب نماذج التجزئة الدلالية باستخدام التدريب السحابي على Ultralytics Platform.

تنسيق مجموعة البيانات#

تستخدم مجموعات بيانات التجزئة الدلالية صور أقنعة أحادية القناة، عادةً بتنسيق PNG، حيث تمثل قيمة كل بكسل معرّف فئة. وتُعامل البكسلات ذات القيمة 255 على أنها «تجاهل»، وتُستبعد من حساب الخسارة. ينبغي أن يحدد ملف YAML لمجموعة البيانات مسارات الصور ومجلدات الأقنعة المقابلة لها. يمكن التدريب مباشرةً على مجموعات البيانات ذات تسميات مضلعات YOLO، إذ تُحوّل إلى أقنعة أثناء التشغيل (راجع هل يمكنني استخدام بيانات تجزئة المثيلات أدناه). راجع دليل مجموعات بيانات التجزئة الدلالية لمعرفة تفاصيل التنسيق. تشمل مجموعات البيانات المدعومة Cityscapes وADE20K. ويمكنك إدارة مجموعات البيانات الدلالية وإضافة التسميات إليها باستخدام التعليقات التوضيحية في Ultralytics Platform.

التحقق#

تحقّق من دقة نموذج YOLO26n-sem المدرّب على مجموعة بيانات للتجزئة الدلالية. مرّر data صراحةً لضمان استخدام مجموعة بيانات YAML المقصودة أثناء التحقق.

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-sem.pt")  # ⁨حمّل نموذجًا رسميًا⁩
model = YOLO("path/to/best.pt")  # ⁨تحميل نموذج مخصص⁩

# ⁨تحقّق من النموذج⁩
metrics = model.val(data="cityscapes.yaml")
metrics.miou  # ⁨متوسط التقاطع على الاتحاد⁩
metrics.pixel_accuracy  # ⁨دقة البكسلات الإجمالية⁩

التنبؤ#

استخدم نموذج YOLO26n-sem مدرّبًا لإجراء تنبؤات على الصور.

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-sem.pt")  # ⁨حمّل نموذجًا رسميًا⁩
model = YOLO("path/to/best.pt")  # ⁨تحميل نموذج مخصص⁩

# ⁨أجرِ التنبؤ باستخدام النموذج⁩
results = model("https://ultralytics.com/images/bus.jpg")  # ⁨أجرِ التنبؤ على صورة⁩

# ⁨الوصول إلى النتائج⁩
for result in results:
    semantic_mask = result.semantic_mask.data  # ⁨خريطة الفئات، شكلها (H,W)، ونوع بياناتها عدد صحيح يُحدَّد وفقًا لعدد الفئات⁩

اطّلع على التفاصيل الكاملة لوضع predict في صفحة التنبؤ.

مخرجات النتائج#

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

السمةالنوعالشكلالوصف
result.semantic_maskSemanticMask(H,W)خريطة فئات كثيفة.
result.semantic_mask.datatorch.uint8
torch.int16
torch.int32
(H,W)معرّفات الفئات؛ يُختار نوع البيانات وفقًا لعدد الفئات.
result.masks--لا توجد أقنعة للمثيلات.
result.boxes--لا توجد صناديق/درجات ثقة للمثيلات.

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

جودة حدود القناع

تتنبأ التجزئة الدلالية بخريطة فئات كثيفة، ثم تغيّر حجم تلك الخريطة لتطابق شكل الصورة بغرض العرض والاستخدام اللاحق. لذلك قد تبدو البنى الرفيعة جدًا، مثل علامات المسارات وخطوط الملاعب والأعمدة والأسلاك، متدرجةً عندما يجري الاستدلال بقيمة imgsz أقل بكثير من دقة الصورة الأصلية. إذا بدت الحدود متعرجة، فأعِد أولًا الاختبار باستخدام نموذج PyTorch .pt الأصلي مع قيمة أكبر لـ imgsz، مثل 1024 أو 1280، أو أقرب قيمة عملية إلى حجم الصورة المصدر. استخدم النماذج المُصدّرة فقط بعد التأكد من قبول مخرجات .pt، إذ لا يمكن لمدخلات الدقة المنخفضة استعادة التفاصيل الدقيقة التي لم تظهر في خريطة الفئات المتنبأ بها.

تجزئة المثيلات مقابل التجزئة الدلالية#

الجانبتجزئة المثيلات (task="segment")التجزئة الدلالية (task="semantic")
هدف التنبؤتجزئة كل كائن مكتشف على حدةإسناد معرّف فئة واحد إلى كل بكسل
حقل الإخراجresult.masksresult.semantic_mask
البيانات الأساسيةresult.masks.dataresult.semantic_mask.data
الشكل(N,H,W)(H,W)
قيم البكسلقيم القناع الثنائية: 0 أو 1معرّفات الفئات: 0 و1 و2، ...
نوع البياناتtorch.uint8torch.uint8
torch.int16
torch.int32
الكائنات المنتمية إلى الفئة نفسهاتُحفظ كمثيلات منفصلةتُدمج في منطقة الفئة نفسها
المضلعاتنعم، عبر result.masks.xy وresult.masks.xynلا يوجد إخراج للمضلعات افتراضيًا
الصناديق ودرجات الثقةنعم، عبر result.boxesلا توجد صناديق أو درجات ثقة لكل مثيل
الاستخدام المعتادالعدّ والتتبع والاقتصاص والقياس على مستوى الكائنوسم المشاهد الكثيف ومناطق القيادة والغطاء الأرضي والمناطق الطبية

التصدير#

صدّر نموذج YOLO26n-sem إلى تنسيق آخر مثل ONNX أو CoreML وغيرهما.

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-sem.pt")  # ⁨حمّل نموذجًا رسميًا⁩
model = YOLO("path/to/best.pt")  # ⁨تحميل نموذج مخصص⁩

# ⁨صدّر النموذج⁩
model.export(format="onnx")

تظهر تنسيقات التصدير المتاحة للتجزئة الدلالية في YOLO26 في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام الوسيط format، أي format='onnx' أو format='engine'. ويمكنك إجراء التنبؤ أو التحقق مباشرةً باستخدام النماذج المُصدّرة، أي yolo predict model=yolo26n-sem.onnx. تظهر أمثلة الاستخدام لنموذجك بعد اكتمال التصدير.

التنسيقوسيط formatالنموذجالبيانات الوصفيةالوسيطات
PyTorch-yolo26n-sem.pt✅-
TorchScripttorchscriptyolo26n-sem.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-sem.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-sem_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-sem.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-sem_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-sem.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-sem.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-sem_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n-sem_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-sem_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-sem_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-sem_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-sem_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-sem_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

يعتمد nms=None على المخرجات الأولية لإجراء NMS خارجي. اضبط nms=False لتحديد رأس متاح خالٍ من NMS؛ وتعود التنسيقات غير المدعومة إلى مسار المخرجات الأصلي الخاص بها. تحدد إدخالات nms أعلاه التنسيقات التي يمكنها تضمين NMS باستخدام nms=True.

اطّلع على التفاصيل الكاملة لـexport في صفحة التصدير.

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

  • لتدريب نموذج YOLO26 للتقسيم الدلالي على مجموعة بيانات مخصصة، عليك إعداد صور أقنعة PNG، بحيث تمثل قيمة كل بكسل معرّف فئة (0، 1، 2، ...) وتُستثنى البكسلات ذات القيمة 255 أثناء التدريب. أنشئ ملف YAML لمجموعة البيانات يشير إلى مجلدي الصور والأقنعة، ثم درّب النموذج:

    مثال
    from ultralytics import YOLO
    
    # ⁨تحميل نموذج YOLO26 مُدرَّب مسبقًا للتقسيم الدلالي⁩
    model = YOLO("yolo26n-sem.pt")
    
    # ⁨تدريب النموذج⁩
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=1024)

    راجع صفحة Configuration للاطلاع على مزيد من الوسيطات المتاحة.

  • تقسيم الكائنات وتقسيم المشهد دلاليًا مهمتان على مستوى البكسل، لكنهما تختلفان في جانب أساسي:

    • يُسنِد التقسيم الدلالي تسمية فئة إلى كل بكسل، لكنه لا يميّز بين الكائنات الفردية من الفئة نفسها. على سبيل المثال، تحمل جميع السيارات في المشهد تسمية الفئة نفسها.
    • يحدّد تقسيم الكائنات كل كائن على حدة، وينتج أقنعة منفصلة لكل كائن حتى إن كانت الكائنات تنتمي إلى الفئة نفسها.

    يناسب التقسيم الدلالي مهام فهم المشهد، مثل القيادة الذاتية ورسم خرائط الغطاء الأرضي، بينما يُفضَّل تقسيم الكائنات عند أهمية عدّ الكائنات الفردية أو تتبّعها.

  • نعم. إذا كانت مجموعة بياناتك تستخدم تسميات مضلعات Ultralytics YOLO (واحد .txt لكل صورة)، فاحذف masks_dir من ملف YAML لمجموعة البيانات، وتأكد من عدم وجود مجلد masks/ بجوار صورك في جذر مجموعة البيانات (فوجوده وحده يفعّل وضع أقنعة PNG حتى من دون تعيين masks_dir). بعد ذلك، يحوّل المُحمِّل المضلعات إلى أقنعة دلالية لكل صورة أثناء التشغيل. في مجموعات البيانات متعددة الفئات (N > 1)، تُضاف فئة background إضافية تلقائيًا إلى names. أما في مجموعات البيانات أحادية الفئة (N == 1)، فيظل التدريب على فئة واحدة — وتصبح الفئة التي أعلنتها 1 في القناع، بينما تصبح البكسلات غير المغطاة 0. راجع دليل مجموعة بيانات التقسيم الدلالي لمزيد من التفاصيل.

  • يوفر Ultralytics YOLO26 إعدادات مضمّنة لعدة مجموعات بيانات للتقسيم الدلالي:

    • Cityscapes: مشاهد شوارع حضرية تضم 19 فئة، وتُستخدم على نطاق واسع في أبحاث القيادة الذاتية.
    • ADE20K: مجموعة بيانات واسعة النطاق لتحليل المشاهد تضم 150 فئة.

    يمكنك أيضًا استخدام أي مجموعة بيانات مخصصة توفر تعليقات توضيحية للأقنعة بصيغة PNG، بحيث تطابق قيم البكسلات معرّفات الفئات.

  • تحقّق من صحة نموذج YOLO26 مُدرَّب مسبقًا للتقسيم الدلالي باستخدام ملف YAML لمجموعة البيانات المستخدَم للتقييم:

    مثال
    from ultralytics import YOLO
    
    # ⁨تحميل نموذج مدرَّب مسبقًا⁩
    model = YOLO("yolo26n-sem.pt")
    
    # ⁨تحقّق من النموذج⁩
    metrics = model.val(data="cityscapes.yaml")
    print("Mean IoU:", metrics.miou)
    print("Pixel Accuracy:", metrics.pixel_accuracy)

    ستوفر لك هذه الخطوات مقاييس التحقق، مثل متوسط التقاطع على الاتحاد (mIoU) ودقة البكسلات، وهي مقاييس معيارية لتقييم أداء التقسيم الدلالي.

  • صدّر نموذج YOLO26 للتقسيم الدلالي إلى تنسيق ONNX باستخدام أوامر Python أو CLI:

    مثال
    from ultralytics import YOLO
    
    # ⁨تحميل نموذج مدرَّب مسبقًا⁩
    model = YOLO("yolo26n-sem.pt")
    
    # ⁨تصدير النموذج إلى تنسيق ONNX⁩
    model.export(format="onnx")

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

التعليقات