رؤية YOLO 2026:

نظرة عامة على مجموعات بيانات تجزئة المثيلات#

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

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

تنسيق Ultralytics YOLO#

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

  1. ملف نصي واحد لكل صورة: تحتوي كل صورة في مجموعة البيانات على ملف نصي مقابل له نفس اسم ملف الصورة وملحق ".txt".
  2. صف واحد لكل كائن: يتوافق كل صف في الملف النصي مع مثيل كائن واحد في الصورة.
  3. معلومات الكائن لكل صف: يحتوي كل صف على المعلومات التالية حول مثيل الكائن:
    • فهرس فئة الكائن: عدد صحيح يمثل فئة الكائن (على سبيل المثال، 0 للشخص، 1 للسيارة، إلخ).
    • إحداثيات إحاطة الكائن: إحداثيات الإحاطة حول منطقة القناع، مطبعة لتكون بين 0 و1.

تنسيق صف واحد في ملف مجموعة بيانات التجزئة هو كما يلي:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

في هذا التنسيق، يمثل <class-index> مؤشر الفئة للكائن، و<x1> <y1> <x2> <y2> ... <xn> <yn> هما إحداثيات المضلع الطبيعية لقناع تجزئة الكائن (القيم موجودة في [0, 1] نسبة إلى عرض الصورة وارتفاعها). يتم فصل الإحداثيات بواسطة مسافات.

إليك مثال على تنسيق مجموعة بيانات YOLO لصورة واحدة تحتوي على كائنين يتكونان من جزء مكون من 3 نقاط وجزء مكون من 5 نقاط.

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104
نصيحة
  • لا يشترط أن يكون طول كل صف متساويًا.
  • يجب أن يحتوي كل تصنيف تجزئة على حد أدنى من 3 نقاط (x, y): <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

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

يستخدم إطار عمل Ultralytics تنسيق ملف YAML لتحديد تكوين مجموعة البيانات والنموذج لتدريب نماذج التجزئة. إليك مثال على تنسيق YAML المستخدم لتحديد مجموعة بيانات تجزئة:

ultralytics/cfg/datasets/coco8-seg.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

تشير الحقول train وval وtest إلى صور التدريب والتحقق والاختبار. يقبل كل منها مجلداً، أو قائمة مجلدات، أو ملف *.txt يسرد مسار صورة واحداً لكل سطر (المسارات التي تبدأ بـ ./ تُحلّ نسبةً إلى ملف *.txt). ملف *.txt مفيد للتدريب على مجموعة فرعية من المجلد، أو تخطي الصور غير المُصنَّفة، أو دمج الصور من مصادر متعددة في تقسيم واحد.

مسارات الصور كملف `*.txt`
path: datasets/coco8-seg # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

names هو قاموس لأسماء الفئات. يجب أن تتطابق ترتيب الأسماء مع ترتيب فهارس فئات الكائنات في ملفات dataset الخاصة بـ YOLO.

الاستخدام#

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

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

تدعم Ultralytics YOLO مجموعات بيانات متنوعة لمهام تجزئة المثيلات. إليك قائمة بأكثرها استخدامًا:

  • Carparts-seg: مجموعة بيانات متخصصة تركز على تجزئة قطع غيار السيارات، وهي مثالية للتطبيقات في قطاع السيارات. تتضمن مجموعة متنوعة من المركبات مع توضيحات مفصلة لمكونات السيارة الفردية.
  • COCO: مجموعة بيانات شاملة لـ object detection والتجزئة والتعليقات التوضيحية، وتتميز بأكثر من 200 ألف صورة مصنفة عبر مجموعة واسعة من الفئات.
  • COCO8-seg: مجموعة فرعية مدمجة تتكون من 8 صور من COCO مصممة للاختبار السريع لتدريب نماذج التجزئة، وهي مثالية لفحوصات CI والتحقق من سير العمل في مستودع ultralytics.
  • COCO128-seg: مجموعة بيانات أصغر لمهام instance segmentation، تحتوي على مجموعة فرعية من 128 صورة من COCO مع تعليقات توضيحية للتجزئة.
  • Crack-seg: مجموعة بيانات مصممة خصيصًا لتجزئة الشقوق في مختلف الأسطح. وهي ضرورية لصيانة البنية التحتية ومراقبة الجودة، حيث توفر صورًا مفصلة لتدريب النماذج على تحديد نقاط الضعف الهيكلّية.
  • Package-seg: مجموعة بيانات مخصصة لتجزئة أنواع وأكال مختلفة من مواد التعبئة والتغليف. وهي مفيدة بشكل خاص للخدمات اللوجستية وأتمتة المستودعات، مما يساعد في تطوير أنظمة مناولة الطرود وفرزها.

إضافة مجموعة البيانات الخاصة بك#

إذا كانت لديك مجموعة بيانات خاصة بك وترغب في استخدامها لتدريب نماذج التجزئة باستخدام تنسيق Ultralytics YOLO، فتأكد من أنها تتبع التنسيق المحدد أعلاه تحت "Ultralytics YOLO format". قم بتحويل التعليقات التوضيحية إلى التنسيق المطلوب وحدد المسارات، وعدد الفئات، وأسماء الفئات في ملف تكوين YAML. احتفظ بـ images/ وlabels/ كمجلدات منفصلة في نفس المستوى، مع هيكل مجلدات فرعية متطابق؛ حيث إن وضع ملفات التصنيف .txt في مجلد الصور قد يتسبب في تفويت النماذج للتصنيفات.

نقل أو تحويل تنسيقات الملصقات#

تنسيق مجموعة بيانات COCO إلى تنسيق YOLO#

يمكنك بسهولة تحويل التسميات من تنسيق مجموعة بيانات COCO الشهير إلى تنسيق YOLO باستخدام مقتطف الشفرة التالي:

مثال
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

يمكن استخدام أداة التحويل هذه لتحويل مجموعة بيانات COCO أو أي مجموعة بيانات بتنسيق COCO إلى تنسيق Ultralytics YOLO.

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

التعليق التوضيحي التلقائي#

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

إنشاء مجموعة بيانات تجزئة باستخدام نموذج اكتشاف#

للتصنيف التلقائي لمجموعة البيانات الخاصة بك باستخدام إطار عمل Ultralytics، يمكنك استخدام الدالة auto_annotate كما هو موضح أدناه:

مثال
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
الوسيطالنوعالافتراضيالوصف
datastrمطلوبمسار إلى الدليل الذي يحتوي على الصور المستهدفة للتعليق أو التقسيم.
det_modelstr'yolo26x.pt'مسار نموذج اكتشاف YOLO للاكتشاف الأولي للكائنات.
sam_modelstr'sam_b.pt'مسار نموذج SAM للتقسيم (يدعم أوزان SAM وSAM 2 وMobileSAM وSAM 3).
devicestr''جهاز الحوسبة (مثلاً 'cuda:0' أو 'cpu' أو '' للاكتشاف التلقائي للجهاز).
conffloat0.25عتبة ثقة كشف YOLO لتصفية الاكتشافات الضعيفة.
ioufloat0.45عتبة IoU لـ Non-Maximum Suppression لتصفية المربعات المتداخلة.
imgszint640حجم الإدخال لتغيير حجم الصور (يجب أن يكون من مضاعفات 32).
max_detint300الحد الأقصى لعدد الاكتشافات لكل صورة لتحسين كفاءة الذاكرة.
classeslist[int]Noneقائمة مؤشرات الفئات المراد اكتشافها (على سبيل المثال، [0, 1] للشخص والدراجة).
output_dirstrNoneحفظ دليل التعليقات التوضيحية (افتراضي: <data>_auto_annotate_labels الشقيق).

تأخذ الدالة auto_annotate مسار الصور الخاص بك، إلى جانب الوسدات الاختيارية لتحديد نماذج الاكتشاف المدربة مسبقًا، مثل YOLO26، أو YOLO11، أو models الأخرى، ونماذج التجزئة، مثل SAM، أو SAM 2، أو MobileSAM، أو SAM 3، والجهاز المراد تشغيل النماذج عليه، ودليل الإخراج لحفظ النتائج المصنفة.

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

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

قبل تدريب نموذجك، من المفيد غالباً تصور تعليقات مجموعة البيانات التوضيحية للتأكد من صحتها. توفر Ultralytics دالة مساعدة لهذا الغرض:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # Define the label map with all annotated class labels.
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # Input image path.
    "path/to/annotations.txt",  # Annotation file path for the image.
    label_map,
)

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

تحويل أقنعة التجزئة إلى تنسيق YOLO#

إذا كانت لديك أقنعة تجزئة بتنسيق ثنائي، يمكنك تحويلها إلى تنسيق تجزئة YOLO باستخدام:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# For datasets like COCO with 80 classes
convert_segment_masks_to_yolo_seg(masks_dir="path/to/masks_dir", output_dir="path/to/output_dir", classes=80)

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

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

  • يدعم Ultralytics YOLO العديد من تنسقات مجموعات البيانات لتجزئة المثيلات، حيث يكون التنسيق الأساسي هو تنسيق Ultralytics YOLO الخاص به. تحتاج كل صورة في مجموعة البيانات الخاصة بك إلى ملف نصي مطابق يحتوي على معلومات الكائن المجزأة في صفوف متعددة (صف واحد لكل كائن)، مع إدراج مؤشر الفئة وإحداثيات الحدود العادية. للحصول على إرشادات أكثر تفصيلاً حول تنسيق مجموعة بيانات YOLO، تفضل بزيارة Instance Segmentation Datasets Overview.

  • يعد تحويل تعليقات تنسيق COCO إلى تنسيق YOLO أمرًا بسيطًا باستخدام أدوات Ultralytics. يمكنك استخدام الدالة convert_coco من وحدة ultralytics.data.converter:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

    يقوم هذا البرنامج النصي بتحويل تعليقات مجموعة بيانات COCO إلى تنسيق YOLO المطلوب، مما يجعلها مناسبة لتدريب نماذج YOLO الخاصة بك. لمزيد من التفاصيل، راجع Port or Convert Label Formats.

  • لإعداد ملف YAML لتدريب نماذج YOLO باستخدام Ultralytics، تحتاج إلى تحديد مسارات مجموعة البيانات وأسماء الفئات. إليك مثال على تكوين YAML:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg
    # Example usage: yolo train data=coco8-seg.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8-seg ← downloads here (1 MB)
    
    # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
    path: coco8-seg # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Classes
    names:
      0: person
      1: bicycle
      2: car
      3: motorcycle
      4: airplane
      5: bus
      6: train
      7: truck
      8: boat
      9: traffic light
      10: fire hydrant
      11: stop sign
      12: parking meter
      13: bench
      14: bird
      15: cat
      16: dog
      17: horse
      18: sheep
      19: cow
      20: elephant
      21: bear
      22: zebra
      23: giraffe
      24: backpack
      25: umbrella
      26: handbag
      27: tie
      28: suitcase
      29: frisbee
      30: skis
      31: snowboard
      32: sports ball
      33: kite
      34: baseball bat
      35: baseball glove
      36: skateboard
      37: surfboard
      38: tennis racket
      39: bottle
      40: wine glass
      41: cup
      42: fork
      43: knife
      44: spoon
      45: bowl
      46: banana
      47: apple
      48: sandwich
      49: orange
      50: broccoli
      51: carrot
      52: hot dog
      53: pizza
      54: donut
      55: cake
      56: chair
      57: couch
      58: potted plant
      59: bed
      60: dining table
      61: toilet
      62: tv
      63: laptop
      64: mouse
      65: remote
      66: keyboard
      67: cell phone
      68: microwave
      69: oven
      70: toaster
      71: sink
      72: refrigerator
      73: book
      74: clock
      75: vase
      76: scissors
      77: teddy bear
      78: hair drier
      79: toothbrush
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

    تأكد من تحديث المسارات وأسماء الفئات وفقًا لمجموعة البيانات الخاصة بك. لمزيد من المعلومات، راجع قسم Dataset YAML Format.

  • يتيح لك التصنيف التلقائي في Ultralytics YOLO إنشاء تعليقات توضيحية للتجزئة لمجموعة البيانات الخاصة بك باستخدام نموذج اكتشاف مدرب مسبقًا. هذا يقلل بشكل كبير من الحاجة إلى التصنيف اليدوي. يمكنك استخدام الدالة auto_annotate على النحو التالي:

    from ultralytics.data.annotator import auto_annotate
    
    auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")  # or sam_model="mobile_sam.pt"

    تعمل هذه الدالة على أتمتة عملية التصنيف، مما يجعلها أسرع وأكثر كفاءة. لمزيد من التفاصيل، استكشف Auto-Annotate Reference.

التعليقات