نظرة عامة على مجموعات بيانات تقسيم المثيلات
تجزئة المثيل هي مهمة رؤية حاسوبية تتضمن تحديد وتحديد الكائنات الفردية داخل الصورة. يقدم هذا الدليل نظرة عامة على تنسيقات مجموعات البيانات التي تدعمها 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>
هي إحداثيات الإطار المحيط لقناع تجزئة الكائن. يتم فصل الإحداثيات بمسافات.
فيما يلي مثال على تنسيق مجموعة بيانات 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 نقاط xy:
<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("yolo11n-seg.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.pt epochs=100 imgsz=640
مجموعات البيانات المدعومة
تدعم Ultralytics YOLO مجموعات بيانات مختلفة لمهام تقسيم الحالات. فيما يلي قائمة بأكثرها استخدامًا:
- COCO: مجموعة بيانات شاملة لـ اكتشاف الكائنات والتجزئة والتعليق، وتضم أكثر من 200 ألف صورة مُصنَّفة عبر مجموعة واسعة من الفئات.
- COCO8-seg: مجموعة فرعية مضغوطة مكونة من 8 صور من COCO مصممة للاختبار السريع لتدريب نموذج التجزئة، وهي مثالية لفحوصات التكامل المستمر (CI) والتحقق من صحة سير العمل في
ultralytics
المستودع. - COCO128-seg: مجموعة بيانات أصغر لمهام تجزئة المثيلات، تحتوي على مجموعة فرعية من 128 صورة COCO مع شروحات التجزئة.
- Carparts-seg: مجموعة بيانات متخصصة تركز على تجزئة أجزاء السيارة، وهي مثالية لتطبيقات السيارات. وهي تتضمن مجموعة متنوعة من المركبات مع شروحات تفصيلية لمكونات السيارة الفردية.
- Crack-seg: مجموعة بيانات مصممة لتقسيم الشقوق في الأسطح المختلفة. ضروري لصيانة البنية التحتية ومراقبة الجودة، فهو يوفر صورًا تفصيلية لتدريب النماذج لتحديد نقاط الضعف الهيكلية.
- Package-seg: مجموعة بيانات مخصصة لتقسيم أنواع مختلفة من مواد وأشكال التعبئة والتغليف. إنها مفيدة بشكل خاص في مجال الخدمات اللوجستية وأتمتة المستودعات، مما يساعد في تطوير أنظمة للتعامل مع الطرود وفرزها.
إضافة مجموعة البيانات الخاصة بك
إذا كان لديك مجموعة بيانات خاصة بك وترغب في استخدامها لتدريب نماذج التجزئة باستخدام تنسيق Ultralytics YOLO، فتأكد من أنها تتبع التنسيق المحدد أعلاه تحت عنوان "تنسيق Ultralytics YOLO". قم بتحويل التعليقات التوضيحية الخاصة بك إلى التنسيق المطلوب وحدد المسارات وعدد الفئات وأسماء الفئات في ملف تكوين YAML.
نقل أو تحويل تنسيقات الملصقات
تحويل تنسيق مجموعة بيانات 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="yolo11x.pt", sam_model="sam_b.pt")
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
data |
str |
مطلوب | مسار الدليل الذي يحتوي على الصور المستهدفة للشرح أو التجزئة. |
det_model |
str |
'yolo11x.pt' |
مسار نموذج الكشف عن YOLO للكشف الأولي عن الكائنات. |
sam_model |
str |
'sam_b.pt' |
مسار نموذج SAM للتجزئة (يدعم متغيرات SAM و SAM2 ونماذج mobile_sam). |
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
تأخذ الدالة المسار إلى صورك، بالإضافة إلى وسيطات اختيارية لتحديد نماذج الكشف المدربة مسبقًا، مثل: YOLO11, YOLOv8 أو غيرها النماذج ونماذج التقسيم، على سبيل المثال، 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="yolo11x.pt", sam_model="sam_b.pt") # or sam_model="mobile_sam.pt"
تعمل هذه الوظيفة على أتمتة عملية التعليقات التوضيحية، مما يجعلها أسرع وأكثر كفاءة. لمزيد من التفاصيل، استكشف مرجع التعليق التلقائي.