تخطي إلى المحتوى

نظرة عامة على مجموعات بيانات تقسيم المثيلات

تجزئة المثيل هي مهمة رؤية حاسوبية تتضمن تحديد وتحديد الكائنات الفردية داخل الصورة. يقدم هذا الدليل نظرة عامة على تنسيقات مجموعات البيانات التي تدعمها Ultralytics YOLO لمهام تجزئة المثيل، جنبًا إلى جنب مع إرشادات حول كيفية إعداد مجموعات البيانات هذه وتحويلها واستخدامها لتدريب النماذج الخاصة بك.

تنسيقات مجموعات البيانات المدعومة

تنسيق Ultralytics YOLO

تنسيق تسمية مجموعة البيانات المستخدم لتدريب نماذج تجزئة YOLO هو كما يلي:

  1. ملف نصي واحد لكل صورة: لكل صورة في مجموعة البيانات ملف نصي مطابق يحمل نفس اسم ملف الصورة وامتداد ".txt".
  2. صف واحد لكل كائن: يتوافق كل صف في الملف النصي مع مثيل كائن واحد في الصورة.
  3. معلومات الكائن لكل صف: يحتوي كل صف على المعلومات التالية حول مثيل الكائن:
    • فهرس فئة الكائن: عدد صحيح يمثل فئة الكائن (على سبيل المثال، 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"

تعمل هذه الوظيفة على أتمتة عملية التعليقات التوضيحية، مما يجعلها أسرع وأكثر كفاءة. لمزيد من التفاصيل، استكشف مرجع التعليق التلقائي.



📅 تم الإنشاء منذ سنة واحدة ✏️ تم التحديث منذ 19 يومًا

تعليقات