نظرة عامة على مجموعات بيانات تجزئة المثيلات
تجزئة المثيلات هي مهمة رؤية حاسوبية تتضمن تحديد وتخطيط الكائنات الفردية داخل الصورة. يقدم هذا الدليل نظرة عامة على تنسيقات مجموعات البيانات التي تدعمها 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 المسارات إلى الأدلة التي تحتوي على صور التدريب والتحقق على التوالي.
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")| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
data | str | مطلوب | المسار إلى الدليل الذي يحتوي على الصور المستهدفة للترميز أو التقطيع. |
det_model | str | 'yolo26x.pt' | مسار نموذج كشف YOLO للكشف الأولي عن الكائنات. |
sam_model | str | 'sam_b.pt' | مسار نموذج SAM للتقطيع (يدعم SAM، ومتغيرات SAM2، ونماذج MobileSAM). |
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 | دليل الحفظ للترميزات (الافتراضي هو './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"تعمل هذه الدالة على أتمتة عملية التعليق التوضيحي، مما يجعلها أسرع وأكثر كفاءة. لمزيد من التفاصيل، استكشف مرجع التعليق التوضيحي التلقائي.