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")| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
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"تُؤتمت هذه الوظيفة عملية التعليق التوضيحي، مما يجعلها أسرع وأكثر كفاءة. لمزيد من التفاصيل، استكشف مرجع التعليق التوضيحي التلقائي (Auto-Annotate Reference).