Link to this sectionنظرة عامة على مجموعات بيانات تجزئة المثيل#
تجزئة المثيل هي مهمة رؤية حاسوبية تتضمن تحديد وتخطيط الكائنات الفردية داخل الصورة. يقدم هذا الدليل نظرة عامة على تنسيقات مجموعات البيانات المدعومة بواسطة Ultralytics YOLO لمهام تجزئة المثيل، بالإضافة إلى تعليمات حول كيفية إعداد هذه المجموعات وتحويلها واستخدامها لتدريب نماذجك.
Link to this sectionتنسيقات مجموعات البيانات المدعومة#
Link to this sectionتنسيق 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>
Link to this sectionتنسيق 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.
Link to this sectionالاستخدام#
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)Link to this sectionمجموعات البيانات المدعومة#
تدعم Ultralytics YOLO مجموعات بيانات متنوعة لمهام تجزئة المثيل. إليك قائمة بأكثرها استخداماً:
- Carparts-seg: مجموعة بيانات متخصصة تركز على تجزئة أجزاء السيارات، مثالية لتطبيقات السيارات. تتضمن مجموعة متنوعة من المركبات مع تعليقات توضيحية مفصلة لمكونات السيارة الفردية.
- COCO: مجموعة بيانات شاملة لـ اكتشاف الكائنات، والتجزئة، والتعليق، وتتميز بأكثر من 200 ألف صورة مصنفة عبر مجموعة واسعة من الفئات.
- COCO8-seg: مجموعة فرعية مدمجة مكونة من 8 صور من COCO مصممة للاختبار السريع لتدريب نموذج التجزئة، ومثالية لفحوصات CI والتحقق من سير العمل في مستودع
ultralytics. - COCO128-seg: مجموعة بيانات أصغر لمهام تجزئة المثيل، تحتوي على مجموعة فرعية من 128 صورة COCO مع تعليقات توضيحية للتجزئة.
- Crack-seg: مجموعة بيانات مصممة لتجزئة الشقوق في الأسطح المختلفة. ضرورية لصيانة البنية التحتية ومراقبة الجودة، وتوفر صوراً مفصلة لتدريب النماذج على تحديد نقاط الضعف الهيكلية.
- Package-seg: مجموعة بيانات مخصصة لتجزئة أنواع مختلفة من مواد وأشكال التعبئة والتغليف. إنها مفيدة بشكل خاص لأتمتة الخدمات اللوجستية والمستودعات، وتساعد في تطوير أنظمة مناولة وفرز الطرود.
Link to this sectionإضافة مجموعة البيانات الخاصة بك#
إذا كان لديك مجموعة بيانات خاصة بك وترغب في استخدامها لتدريب نماذج التجزئة بتنسيق Ultralytics YOLO، فتأكد من أنها تتبع التنسيق المحدد أعلاه تحت "تنسيق Ultralytics YOLO". قم بتحويل تعليقاتك التوضيحية إلى التنسيق المطلوب وحدد المسارات، وعدد الفئات، وأسماء الفئات في ملف إعدادات YAML. احتفظ بـ images/ و labels/ كمجلدات منفصلة في نفس المستوى، مع هيكل مجلدات فرعية متطابق؛ فوضع ملفات الملصقات .txt في مجلد الصور قد يؤدي إلى تفويت النماذج للملصقات.
Link to this sectionنقل أو تحويل تنسيقات الملصقات#
Link to this sectionتحويل تنسيق مجموعة بيانات 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.
تذكر التحقق مرتين مما إذا كانت مجموعة البيانات التي تريد استخدامها متوافقة مع نموذجك وتتبع اتفاقيات التنسيق الضرورية. مجموعات البيانات المهيأة بشكل صحيح ضرورية لتدريب نماذج تجزئة ناجحة.
Link to this sectionالتعليق التوضيحي التلقائي#
التعليق التوضيحي التلقائي هو ميزة أساسية تسمح لك بإنشاء مجموعة بيانات تجزئة باستخدام نموذج اكتشاف مدرب مسبقًا. إنها تمكنك من إضافة تعليقات توضيحية بسرعة ودقة لعدد كبير من الصور دون الحاجة إلى وضع علامات يدوية، مما يوفر الوقت والجهد.
Link to this sectionإنشاء مجموعة بيانات تجزئة باستخدام نموذج اكتشاف#
للتعليق التوضيحي التلقائي على مجموعة البيانات الخاصة بك باستخدام إطار عمل 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")| الوسيط (Argument) | النوع | الافتراضي | الوصف |
|---|---|---|---|
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، أو نماذج أخرى، ونماذج التجزئة، على سبيل المثال SAM، SAM 2، MobileSAM، أو SAM 3، والجهاز المراد تشغيل النماذج عليه، ودليل الإخراج لحفظ النتائج المعلقة.
من خلال الاستفادة من قوة النماذج المدربة مسبقًا، يمكن للتعليق التوضيحي التلقائي تقليل الوقت والجهد المطلوبين لإنشاء مجموعات بيانات تجزئة عالية الجودة بشكل كبير. هذه الميزة مفيدة بشكل خاص للباحثين والمطورين الذين يعملون مع مجموعات صور كبيرة، لأنها تسمح لهم بالتركيز على تطوير النموذج وتقييمه بدلاً من التعليق التوضيحي اليدوي.
Link to this sectionتصور تعليقات مجموعة البيانات#
قبل تدريب نموذجك، من المفيد غالبًا تصور تعليقات مجموعة البيانات الخاصة بك للتأكد من صحتها. توفر 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,
)ترسم هذه الدالة صناديق التحديد، وتسمي الكائنات بأسماء الفئات، وتعدل لون النص لتحسين القراءة، مما يساعدك على تحديد وتصحيح أي أخطاء في التعليق التوضيحي قبل التدريب.
Link to this sectionتحويل أقنعة التجزئة إلى تنسيق 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 وحفظها في دليل الإخراج المحدد.
Link to this sectionالأسئلة الشائعة#
Link to this sectionما هي تنسيقات مجموعات البيانات التي تدعمها Ultralytics YOLO لتجزئة المثيل؟#
تدعم Ultralytics YOLO العديد من تنسيقات مجموعات البيانات لتجزئة المثيل، حيث يكون التنسيق الأساسي هو تنسيق Ultralytics YOLO الخاص بها. تحتاج كل صورة في مجموعة بياناتك إلى ملف نصي مطابق يحتوي على معلومات الكائن المقطعة إلى صفوف متعددة (صف واحد لكل كائن)، مع سرد مؤشر الفئة وإحداثيات التحديد المطبّعة. لمزيد من التعليمات التفصيلية حول تنسيق مجموعة بيانات YOLO، تفضل بزيارة نظرة عامة على مجموعات بيانات تجزئة المثيل.
Link to this sectionكيف يمكنني تحويل تعليقات مجموعة بيانات 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 الخاصة بك. لمزيد من التفاصيل، راجع نقل أو تحويل تنسيقات الملصقات.
Link to this sectionكيف أقوم بإعداد ملف 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 لمجموعة البيانات.
Link to this sectionما هي ميزة التعليق التوضيحي التلقائي في 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"تقوم هذه الدالة بأتمتة عملية التعليق التوضيحي، مما يجعلها أسرع وأكثر كفاءة. لمزيد من التفاصيل، استكشف مرجع التعليق التوضيحي التلقائي.