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

تجزئة المثيلات هي مهمة رؤية حاسوبية تتضمن تحديد وتخطيط الكائنات الفردية داخل الصورة. يقدم هذا الدليل نظرة عامة على تنسيقات مجموعات البيانات التي تدعمها 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 المسارات إلى الأدلة التي تحتوي على صور التدريب والتحقق على التوالي.

names هو قاموس لأسماء الفئات. يجب أن يتطابق ترتيب الأسماء مع ترتيب فهارس فئات الكائنات في ملفات مجموعة بيانات 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: مجموعة بيانات شاملة لـ اكتشاف الكائنات والتجزئة والتعليق، وتضم أكثر من 200 ألف صورة مُصنّفة عبر مجموعة واسعة من الفئات.
  • COCO8-seg: مجموعة فرعية مدمجة من 8 صور من COCO مصممة للاختبار السريع لتدريب نموذج التجزئة، وهي مثالية لفحوصات 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، ومتغيرات SAM2، ونماذج MobileSAM).
devicestr''جهاز الحوسبة (مثلاً 'cuda:0'، أو 'cpu'، أو '' للكشف التلقائي عن الجهاز).
conffloat0.25عتبة ثقة كشف YOLO لتصفية الكشوف الضعيفة.
ioufloat0.45عتبة IoU لـ Non-Maximum Suppression لتصفية الصناديق المتداخلة.
imgszint640حجم الإدخال لتغيير حجم الصور (يجب أن يكون مضاعفاً لـ 32).
max_detint300الحد الأقصى لعدد الكشوف لكل صورة لكفاءة الذاكرة.
classeslist[int]Noneقائمة بفهارس الفئات للكشف (مثلاً [0, 1] للشخص والدراجة).
output_dirstrNoneدليل الحفظ للترميزات (الافتراضي هو './labels' بالنسبة لمسار البيانات).

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

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

تصور تسميات البيانات

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

كيف يمكنني تحويل تعليقات مجموعة بيانات COCO التوضيحية إلى تنسيق 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 لتدريب نماذج Ultralytics 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؟

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

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

التعليقات