التجزئة الدلالية

Semantic segmentation examples

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

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

تلميح

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

النماذج

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

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

نموذجالحجم
(بكسل)
mIoUvalالسرعة
RTX3090 PyTorch
(ms)
المعلمات
(مليون)
FLOPs
(مليار)
YOLO26n-sem1024 × 204878.34.4 ± 0.01.622.7
YOLO26s-sem1024 × 204880.88.4 ± 0.06.588.8
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3304.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.9384.7
YOLO26x-sem1024 × 204883.648.9 ± 0.240.2861.7
  • قيم mIoUval هي لنموذج واحد وعلى مقياس واحد على مجموعة التحقق Cityscapes.
    يمكنك إعادة إنتاج النتائج باستخدام yolo semantic val data=cityscapes.yaml device=0 imgsz=2048
  • تم حساب متوسط مقاييس السرعة عبر صور التحقق من Cityscapes باستخدام مثيل Amazon EC2 P4d.
    يمكنك إعادة إنتاج النتائج باستخدام yolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048
  • قيم المعلمات (Params) و FLOPs هي للنموذج المدمج بعد model.fuse()، الذي يدمج طبقات Conv و BatchNorm. تحتفظ نقاط التحقق المدربة مسبقاً ببنية التدريب الكاملة وقد تظهر أعداداً أعلى.

التدريب

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

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.yaml")  # build a new model from YAML
model = YOLO("yolo26n-sem.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

راجع تفاصيل وضع train الكاملة في صفحة التدريب.

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

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

التحقق (Val)

تحقق من دقة نموذج YOLO26n-sem المدرب على مجموعة بيانات تجزئة دلالية. قم بتمرير data بشكل صريح حتى يستخدم التحقق ملف YAML الخاص بمجموعة البيانات المقصودة.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou  # mean Intersection over Union
metrics.pixel_accuracy  # overall pixel accuracy

التنبؤ

استخدم نموذج YOLO26n-sem مدرباً لتشغيل التنبؤات على الصور.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.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:
    semantic_mask = result.semantic_mask.data  # height x width class map (torch.Tensor)

راجع تفاصيل وضع predict الكاملة في صفحة التنبؤ.

تصدير

قم بتصدير نموذج YOLO26n-sem إلى تنسيق مختلف مثل ONNX أو CoreML، إلخ.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Export the model
model.export(format="onnx")

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

تنسيقوسيطة formatنموذجبيانات وصفيةالوسائط
PyTorch-yolo26n-sem.pt-
TorchScripttorchscriptyolo26n-sem.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-sem.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-sem_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-sem_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pbimgsz, batch, device
TF Litetfliteyolo26n-sem.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-sem_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/imgsz, batch, device
MNNmnnyolo26n-sem.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-sem_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-sem_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-sem_deepx_model/imgsz, int8, data, optimize, device

راجع تفاصيل export الكاملة في صفحة التصدير.

أسئلة شائعة

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

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

مثال
from ultralytics import YOLO

# Load a pretrained YOLO26 semantic segmentation model
model = YOLO("yolo26n-sem.pt")

# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=512)

تحقق من صفحة الإعدادات لمزيد من الوسائط المتاحة.

ما الفرق بين تجزئة الكائنات والتجزئة الدلالية؟

تجزئة الكائنات والتجزئة الدلالية هما مهمتان على مستوى البكسل ولكنهما تختلفان في جانب رئيسي:

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

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

هل يمكنني استخدام بيانات تجزئة الكائنات لتدريب التجزئة الدلالية؟

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

ما هي مجموعات البيانات المدعومة للتجزئة الدلالية؟

يوفر Ultralytics YOLO26 تكوينات مدمجة للعديد من مجموعات بيانات التجزئة الدلالية:

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

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

كيف يمكنني التحقق من صحة نموذج تجزئة دلالية YOLO26 مدرب مسبقاً؟

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

مثال
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-sem.pt")

# Validate the model
metrics = model.val(data="cityscapes.yaml")
print("Mean IoU:", metrics.miou)
print("Pixel Accuracy:", metrics.pixel_accuracy)

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

كيف يمكنني تصدير نموذج تجزئة دلالية YOLO26 إلى تنسيق ONNX؟

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

مثال
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-sem.pt")

# Export the model to ONNX format
model.export(format="onnx")

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

التعليقات