Ultralytics YOLO27:
Get Started

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

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

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

تنسيق Ultralytics YOLO#

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

  1. ملف نصي واحد لكل صورة: تقابل كل صورة في مجموعة البيانات ملفًا نصيًا يحمل اسم ملف الصورة نفسه، ويمتد باللاحقة ".txt".
  2. سطر واحد لكل كائن: يقابل كل سطر في الملف النصي مثيلًا واحدًا لكائن في الصورة.
  3. معلومات الكائن في كل سطر: يحتوي كل سطر على المعلومات التالية حول مثيل الكائن:
    • مؤشر فئة الكائن: عدد صحيح يمثل فئة الكائن (مثلًا، 0 للشخص و1 للسيارة، إلخ).
    • إحداثيات مضلّع الكائن: نقاط (x, y) التي تحدد محيط قناع الكائن، بعد تطبيعها لتقع بين 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>
  • يحتاج كل كائن إلى مضلع. لا تحتوي صفوف تنسيق الكشف (<class-index> <x_center> <y_center> <width> <height>) على أي مضلعات، ويُرفض أي مجموعة بيانات تجزئة يختلف فيها عدد المربعات عن عدد المضلعات مع ظهور ValueError عند تحميل التسميات.

تنسيق 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 قاموس لأسماء الفئات. ينبغي أن يتطابق ترتيب الأسماء مع ترتيب مؤشرات فئات الكائنات في ملفات مجموعة بيانات YOLO.

الاستخدام#

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-seg.pt")  # ⁨تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)⁩

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

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

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

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

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

إذا كانت لديك مجموعة بيانات خاصة بك وتريد استخدامها لتدريب نماذج التجزئة بتنسيق Ultralytics YOLO، فتأكد من اتباعها التنسيق المحدد أعلاه ضمن «تنسيق Ultralytics YOLO». حوّل التعليقات التوضيحية إلى التنسيق المطلوب، وحدد المسارات وعدد الفئات وأسماءها في ملف إعدادات 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.

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

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

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

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

لإضافة تعليقات توضيحية تلقائيًا إلى مجموعة بياناتك باستخدام إطار عمل 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 لكبت غير الأقصى لتصفية المربعات المتداخلة.
imgszint640حجم الإدخال لتغيير أبعاد الصور (يُقرّب إلى أقرب مضاعف للعدد 32 عند الحاجة).
max_detint300الحد الأقصى لعدد الكشوفات لكل صورة لترشيد استخدام الذاكرة.
classeslist[int]Noneقائمة بمؤشرات الفئات المراد كشفها (مثل [0, 1] للشخص والدراجة).
output_dirstrNoneدليل حفظ الوسوم (الافتراضي: الدليل الشقيق <data>_auto_annotate_labels).

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

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

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

غالبًا ما يكون من المفيد عرض التعليقات التوضيحية لمجموعة البيانات بصريًا قبل تدريب النموذج، للتأكد من صحتها. توفر Ultralytics دالة مساعدة لهذا الغرض. تقرأ الدالة تسميات المربعات بتنسيق الكشف (<class-index> <x_center> <y_center> <width> <height>) فقط، ولذلك لا يمكنها تحليل ملفات تسميات مضلعات التجزئة:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # ⁨عرّف خريطة التسميات التي تضم جميع تسميات الفئات المشروحة.⁩
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # ⁨مسار صورة الإدخال.⁩
    "path/to/annotations.txt",  # ⁨مسار ملف التعليقات التوضيحية للصورة.⁩
    label_map,
)

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

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

إذا كانت لديك صور أقنعة بتدرج الرمادي، حيث تمثل قيمة كل بكسل مؤشر الفئة + 1 (والخلفية قيمتها 0)، فيمكنك تحويلها إلى تنسيق تجزئة YOLO باستخدام:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# ⁨لمجموعات البيانات مثل COCO التي تضم 80 فئة⁩
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، تفضل بزيارة نظرة عامة على مجموعات بيانات تجزئة الكائنات الفردية.

  • من السهل تحويل التعليقات التوضيحية بتنسيق 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. لمزيد من التفاصيل، راجع نقل تنسيقات التسميات أو تحويلها.

  • لإعداد ملف 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

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

  • تتيح ميزة التعليق التوضيحي التلقائي في 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"

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

التعليقات