التجزئة الدلالية#
يقوم التجزئة الدلالية بتعيين تسمية فئة لكل بكسل في الصورة، مما ينتج عنه خريطة فئات كثيفة تغطي المشهد بأكمله. على عكس التجزئة المثيلية، التي تفصل الكائنات الفردية، تجمع التجزئة الدلالية جميع وحدات البكسل التي تنتمي إلى نفس الفئة معاً بغض النظر عن عدد الكائنات المميزة الموجودة.
Watch: Semantic Segmentation with Ultralytics YOLO26 | Quickstart Tutorial
مخرج نموذج التجزئة الدلالية هو خريطة فئات أحادية الأبعاد (الطول × العرض) حيث تتوافق كل قيمة بكسل مع معرف فئة متوقع. وهذا يجعل التجزئة الدلالية مثالية لمهام تحليل المشاهد مثل القيادة الذاتية، والتصوير الطبي، ورسم خرائط الغطاء الأرضي.
استخدم task=semantic أو مهمة واجهة سطر الأوامر yolo semantic من أجل التجزئة الدلالية. تستخدم ملفات نموذج التجزئة الدلالية YOLO26 اللاحقة -sem، مثل yolo26n-sem.pt.
النماذج#
تُظهر نماذج التجزئة الدلالية YOLO26 المدربة مسبقاً على مجموعة بيانات Cityscapes أدناه.
يتم تنزيل النماذج تلقائيًا من أحدث إصدار لـ Ultralytics عند الاستخدام الأول.
| النموذج | الحجم (بكسل) | mIoUval | السرعة RTX3090 PyTorch (ms) | المعلمات (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem | 1024 × 2048 | 78.3 | 4.4 ± 0.0 | 1.6 | 22.7 |
| YOLO26s-sem | 1024 × 2048 | 80.8 | 8.4 ± 0.0 | 6.5 | 88.8 |
| YOLO26m-sem | 1024 × 2048 | 82.0 | 19.9 ± 0.1 | 14.3 | 304.5 |
| YOLO26l-sem | 1024 × 2048 | 82.9 | 26.5 ± 0.1 | 17.9 | 384.7 |
| YOLO26x-sem | 1024 × 2048 | 83.6 | 48.9 ± 0.2 | 40.2 | 861.7 |
- قيم mIoDval هي لنموذج واحد ومقياس واحد على مجموعة التحقق من الصحة 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 المدربة مسبقاً على مجموعة بيانات ADE20K أدناه.
يتم تنزيل النماذج تلقائيًا من أحدث إصدار لـ Ultralytics عند الاستخدام الأول.
| النموذج | الحجم (بكسل) | mIoUval | السرعة RTX3090 PyTorch (ms) | المعلمات (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem-ade20k | 640 | 38.8 | 3.9 ± 0.2 | 1.6 | 4.4 |
| YOLO26s-sem-ade20k | 640 | 45.6 | 4.2 ± 0.3 | 6.5 | 17.4 |
| YOLO26m-sem-ade20k | 640 | 47.4 | 4.7 ± 0.3 | 14.3 | 59.5 |
| YOLO26l-sem-ade20k | 640 | 49.7 | 8.3 ± 0.2 | 17.9 | 75.0 |
| YOLO26x-sem-ade20k | 640 | 51.5 | 9.9 ± 0.3 | 40.2 | 168.1 |
- قيم 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. تحتفظ نقاط التحقق المدربة مسبقاً ببنية التدريب الكاملة وقد تظهر أعداداً أعلى.
التدريب#
قم بتدريب YOLO26n-sem على مجموعة بيانات Cityscapes8 لـ 100 حقبة تدريب (epoch) بحجم صورة 1024. للحصول على قائمة كاملة بالوسائط المتاحة، راجع صفحة التكوين (Configuration).
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 الكاملة في صفحة التدريب (Train). يمكن أيضاً تدريب نماذج التجزئة الدلالية باستخدام التدريب السحابي لمنصة Ultralytics.
تنسيق مجموعة البيانات#
تستخدم مجموعات بيانات التجزئة الدلالية صور أقنعة أحادية القناة، وعادة ما تكون بتنسيق PNG، حيث تمثل كل قيمة بكسل معرف فئة. تتم معاملة وحدات البكسل ذات القيمة 255 على أنها "تجاهل" ويتم استبعادها من حساب الخسارة. يجب أن يحدد ملف YAML الخاص بمجموعة البيانات المسارات إلى الصور ومجلدات الأقنعة المقابلة لها. راجع دليل مجموعة بيانات التجزئة الدلالية للحصول على تفاصيل التنسيق. تتضمن مجموعات البيانات المدعومة Cityscapes وADE20K. يمكنك إدارة وتسمية مجموعات البيانات الدلالية باستخدام تعليقات توضيحية لمنصة Ultralytics.
التحقق#
تحقق من دقة نموذج 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 # class map, shape (H,W), integer dtype selected by class countراجع تفاصيل وضع predict الكاملة في صفحة التنبؤ (Predict).
مخرجات النتائج#
ترجع تجزئة دلالات YOLO كائن Results واحداً لكل صورة. تخزن كل نتيجة خريطة فئات كثيفة واحدة للصورة الكاملة بدلاً من قائمة أقنعة الكائنات. تتشارك وحدات البكسل التي لها نفس الفئة المتوقعة في نفس معرف الفئة، حتى عندما تنتمي إلى كائنات منفصلة.
| السمة (Attribute) | النوع | الشكل | الوصف |
|---|---|---|---|
result.semantic_mask | SemanticMask | (H,W) | خريطة فئات كثيفة. |
result.semantic_mask.data | torch.uint8torch.int16torch.int32 | (H,W) | معرفات الفئات؛ يتم اختيار dtype بناءً على عدد الفئات. |
result.masks | - | - | لا توجد أقنعة مثيلات. |
result.boxes | - | - | لا توجد مربعات/ثقة للمثيلات. |
result.masks.xy | - | - | لا توجد مضلعات افتراضية. |
للحصول على حقول Results الخاصة بكل مهمة عبر كل مهمة، راجع قسم نتائج التنبؤ حسب المهمة (Predict Results by Task).
تتنبأ التجزئة الدلالية بخريطة فئات كثيفة، ثم تعيد تحجيم تلك الخريطة لتتناسب مع شكل الصورة الأصلي لغرض التصور والاستخدام اللاحق. ونتيجة لذلك، قد تبدو الهياكل الرقيقة جداً، مثل علامات المسارات، أو خطوط الملاعب، أو الأعمدة، أو الأسلاك، متدرجة (المظهر المتعرج) عندما يتم تشغيل الاستدلال بـ imgsz أدنى بكثير من دقة الصورة الأصلية. إذا كانت الحدود تبدو متعرجة، فأعد أولاً اختبار نموذج PyTorch الأصلي .pt باستخدام imgsz أكبر، مثل 1024 أو 1280 أو أقرب قيمة عملية لحجم الصورة المصدر. استخدم النماذج المصدرة فقط بعد التأكد من أن إخراج .pt مقبول، نظراً لأن المدخلات منخفضة الدقة لا يمكنها استعادة التفاصيل الدقيقة التي لم تكن موجودة في خريطة الفئات المتوقعة.
تجزئة المثيلات مقابل التجزئة الدلالية#
| وجه المقارنة | التجزئة المثيلية (task="segment") | التجزئة الدلالية (task="semantic") |
|---|---|---|
| هدف التنبؤ | تجزئة كل كائن مكتشف على حدة | تعيين معرف فئة واحد لكل بكسل |
| حقل المخرجات | result.masks | result.semantic_mask |
| البيانات الرئيسية | result.masks.data | result.semantic_mask.data |
| الشكل | (N,H,W) | (H,W) |
| قيم البكسلات | قيم الأقنعة الثنائية: 0 أو 1 | معرفات الفئات: 0، 1، 2، ... |
| Dtype | torch.uint8 | torch.uint8torch.int16torch.int32 |
| كائنات من نفس الفئة | يتم الاحتفاظ بها كمثيلات منفصلة | يتم دمجها في نفس منطقة الفئة |
| المضلعات | نعم، من خلال result.masks.xy وresult.masks.xyn | لا يوجد مخرج مضلع افتراضياً |
| الصناديق ومستوى الثقة | نعم، من خلال result.boxes | لا توجد صناديق أو درجات ثقة لكل مثيل |
| الاستخدام النموذجي | العد، التتبع، القص، القياس على مستوى الكائن | تسمية المشاهد الكثيفة، المناطق القابلة للقيادة، الغطاء الأرضي، المناطق الطبية |
التصدير#
تصدير نموذج 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 | النموذج | البيانات الوصفية | الوسائط (Arguments) |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz، quantize، dynamic، simplify، opset، nms، batch، data، fraction، device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz، quantize، dynamic، nms، batch، data، fraction، device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz، quantize، dynamic، simplify، opset، workspace، nms، batch، data، fraction، device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz، keras، quantize، opset، nms، batch، data، fraction، device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz، batch، device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz، batch، dynamic، quantize، simplify، opset، nms، device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz، batch، name، quantize، simplify، opset، data، fraction، device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz، batch، device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn.onnx | ✅ | imgsz، batch، name، quantize، simplify، opset، data، fraction، device |
| LiteRT | litert | yolo26n-sem.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-sem_hailo_model/ | ✅ | imgsz، name، quantize، data، fraction، simplify، conf، iou |
| Huawei Ascend | ascend | yolo26n-sem_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n-sem.aimodel | ✅ | imgsz، batch، quantize |
راجع تفاصيل export الكاملة في صفحة التصدير (Export).
الأسئلة الشائعة#
لتدريب نموذج التجزئة الدلالية 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)تحقق من صفحة التكوين (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 # 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 باستخدام 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")لمزيد من التفاصيل حول التصدير إلى تنسيقات مختلفة، راجع صفحة التصدير (Export).