Meet YOLO26: next-gen vision AI.

Link to this sectionنظرة عامة على مجموعات بيانات تجزئة المثيلات#

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

Link to this sectionتنسيقات مجموعات البيانات المدعومة#

Link to this sectionتنسيق 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> هي إحداثيات المضلع المطبعة لقناع تجزئة الكائن (القيم في [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/cfg/datasets/coco8-seg.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")
الوسيطالنوعالافتراضيالوصف
datastrمطلوبمسار إلى الدليل الذي يحتوي على الصور المستهدفة للتعليق أو التقسيم.
det_modelstr'yolo26x.pt'مسار نموذج اكتشاف YOLO للاكتشاف الأولي للكائنات.
sam_modelstr'sam_b.pt'مسار نموذج SAM للتقسيم (يدعم أوزان SAM وSAM 2 وMobileSAM وSAM 3).
devicestr''جهاز الحوسبة (مثلاً 'cuda:0' أو 'cpu' أو '' للاكتشاف التلقائي للجهاز).
conffloat0.25عتبة ثقة كشف YOLO لتصفية الاكتشافات الضعيفة.
ioufloat0.45عتبة IoU لـ Non-Maximum Suppression لتصفية المربعات المتداخلة.
imgszint640حجم الإدخال لتغيير حجم الصور (يجب أن يكون من مضاعفات 32).
max_detint300الحد الأقصى لعدد الاكتشافات لكل صورة لتحسين كفاءة الذاكرة.
classeslist[int]Noneقائمة بفهارس الفئات للكشف عنها (على سبيل المثال، [0, 1] للشخص والدراجة).
output_dirstrNoneدليل الحفظ للتعليقات التوضيحية (الافتراضي: مجلد شقيق باسم <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).

التعليقات