نظرة عامة على مجموعات بيانات تجزئة المثيلات#
تجزئة المثيلات هي مهمة رؤية حاسوبية تتضمن تحديد ورسم حدود الكائنات الفردية داخل الصورة. يقدم هذا الدليل نظرة عامة على تنسيقات مجموعات البيانات التي تدعمها Ultralytics YOLO لمهام تجزئة المثيلات، إلى جانب تعليمات حول كيفية إعداد هذه المجموعات وتحويلها واستخدامها لتدريب نماذجك.
تنسيقات مجموعات البيانات المدعومة#
تنسيق Ultralytics YOLO#
تنسيق تسمية مجموعة البيانات المستخدم لتدريب نماذج تجزئة YOLO هو كما يلي:
- ملف نصي واحد لكل صورة: تحتوي كل صورة في مجموعة البيانات على ملف نصي مقابل له نفس اسم ملف الصورة وملحق ".txt".
- صف واحد لكل كائن: يتوافق كل صف في الملف النصي مع مثيل كائن واحد في الصورة.
- معلومات الكائن لكل صف: يحتوي كل صف على المعلومات التالية حول مثيل الكائن:
- فهرس فئة الكائن: عدد صحيح يمثل فئة الكائن (على سبيل المثال، 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 🚀 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 مفيد للتدريب على مجموعة فرعية من المجلد، أو تخطي الصور غير المُصنَّفة، أو دمج الصور من مصادر متعددة في تقسيم واحد.
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: personnames هو قاموس لأسماء الفئات. يجب أن تتطابق ترتيب الأسماء مع ترتيب فهارس فئات الكائنات في ملفات 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")| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
data | str | مطلوب | مسار إلى الدليل الذي يحتوي على الصور المستهدفة للتعليق أو التقسيم. |
det_model | str | 'yolo26x.pt' | مسار نموذج اكتشاف YOLO للاكتشاف الأولي للكائنات. |
sam_model | str | 'sam_b.pt' | مسار نموذج SAM للتقسيم (يدعم أوزان SAM وSAM 2 وMobileSAM وSAM 3). |
device | str | '' | جهاز الحوسبة (مثلاً 'cuda:0' أو 'cpu' أو '' للاكتشاف التلقائي للجهاز). |
conf | float | 0.25 | عتبة ثقة كشف YOLO لتصفية الاكتشافات الضعيفة. |
iou | float | 0.45 | عتبة IoU لـ Non-Maximum Suppression لتصفية المربعات المتداخلة. |
imgsz | int | 640 | حجم الإدخال لتغيير حجم الصور (يجب أن يكون من مضاعفات 32). |
max_det | int | 300 | الحد الأقصى لعدد الاكتشافات لكل صورة لتحسين كفاءة الذاكرة. |
classes | list[int] | None | قائمة مؤشرات الفئات المراد اكتشافها (على سبيل المثال، [0, 1] للشخص والدراجة). |
output_dir | str | None | حفظ دليل التعليقات التوضيحية (افتراضي: <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.