نظرة عامة على مجموعات بيانات اكتشاف الكائنات

يتطلب تدريب نموذج قوي ودقيق لـ اكتشاف الكائنات مجموعة بيانات شاملة. يقدم هذا الدليل تنسيقات مختلفة لمجموعات البيانات المتوافقة مع نموذج Ultralytics YOLO، ويوفر رؤى حول هيكلها، وطريقة استخدامها، وكيفية التحويل بين التنسيقات المختلفة.

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

تنسيق Ultralytics YOLO

تنسيق Ultralytics YOLO هو تنسيق إعداد لمجموعات البيانات يسمح لك بتحديد الدليل الجذر لمجموعة البيانات، والمسارات النسبية لأدلة الصور الخاصة بالتدريب/التحقق/الاختبار أو ملفات *.txt التي تحتوي على مسارات الصور، وقاموس بأسماء الفئات. فيما يلي مثال:

ultralytics/cfg/datasets/coco8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← 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 # 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.zip

يجب تصدير التصنيفات لهذا التنسيق إلى تنسيق YOLO مع ملف *.txt واحد لكل صورة. إذا لم تكن هناك كائنات في صورة ما، فلا يلزم وجود ملف *.txt. يجب تنسيق ملف *.txt مع صف واحد لكل كائن بتنسيق class x_center y_center width height. يجب أن تكون إحداثيات الصندوق بتنسيق xywh مُطبّع (من 0 إلى 1). إذا كانت صناديقك مقاسة بالبكسل، فيجب عليك قسمة x_center و width على عرض الصورة، و y_center و height على ارتفاع الصورة. يجب أن تبدأ أرقام الفئات من صفر (تبدأ بـ 0).

YOLO labeled image with bounding boxes on persons and tie

يحتوي ملف التصنيف المطابق للصورة أعلاه على شخصين (الفئة 0) وربطة عنق (الفئة 27):

YOLO format label file with normalized coordinates

عند استخدام تنسيق Ultralytics YOLO، قم بتنظيم صور التدريب والتحقق من الصحة والتصنيفات كما هو موضح في مثال مجموعة بيانات COCO8 أدناه.

YOLO dataset directory structure with train and val folders

مثال على الاستخدام

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

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

تنسيق Ultralytics NDJSON

يوفر تنسيق NDJSON (JSON محدد بأسطر جديدة) طريقة بديلة لتحديد مجموعات البيانات لنماذج Ultralytics YOLO. يخزن هذا التنسيق بيانات تعريف مجموعة البيانات والتعليقات التوضيحية في ملف واحد حيث يحتوي كل سطر على كائن JSON منفصل.

يحتوي ملف مجموعة بيانات NDJSON على:

  1. سجل مجموعة البيانات (السطر الأول): يحتوي على بيانات تعريف مجموعة البيانات بما في ذلك نوع المهمة، وأسماء الفئات، والمعلومات العامة
  2. سجلات الصور (السطور اللاحقة): تحتوي على بيانات الصورة الفردية بما في ذلك الأبعاد، والتعليقات التوضيحية، ومسارات الملفات
مثال على NDJSON
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://app.ultralytics.com/user/datasets/example",
    "class_names": { "0": "person", "1": "bicycle", "2": "car" },
    "bytes": 426342,
    "version": 0,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2025-01-01T00:00:00Z"
}

مثال على الاستخدام

لاستخدام مجموعة بيانات NDJSON مع YOLO26، ما عليك سوى تحديد مسار ملف .ndjson:

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Train using NDJSON dataset
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)

مزايا تنسيق NDJSON

  • ملف واحد: جميع معلومات مجموعة البيانات موجودة في ملف واحد
  • البث: يمكن معالجة مجموعات البيانات الكبيرة سطراً بسطر دون تحميل كل شيء في الذاكرة
  • التكامل السحابي: يدعم روابط الصور عن بُعد للتدريب القائم على السحابة
  • قابل للتوسيع: من السهل إضافة حقول بيانات تعريف مخصصة
  • التحكم في الإصدار: يعمل تنسيق الملف الواحد بشكل جيد مع git وأنظمة التحكم في الإصدار

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

فيما يلي قائمة بمجموعات البيانات المدعومة ووصف موجز لكل منها:

  • African-wildlife: مجموعة بيانات تضم صوراً للحياة البرية الأفريقية، بما في ذلك الجاموس، والفيل، ووحيد القرن، والحمير الوحشية.
  • Argoverse: مجموعة بيانات تحتوي على بيانات التتبع ثلاثي الأبعاد وتنبؤ الحركة من بيئات حضرية مع تعليقات توضيحية غنية.
  • Brain-tumor: مجموعة بيانات لاكتشاف أورام المخ تتضمن صور التصوير بالرنين المغناطيسي (MRI) أو الأشعة المقطعية (CT) مع تفاصيل حول وجود الورم وموقعه وخصائصه.
  • COCO: تعد COCO (كائنات شائعة في السياق) مجموعة بيانات واسعة النطاق لـ اكتشاف الكائنات، والتجزئة، وشرح الصور مع 80 فئة من الكائنات.
  • COCO8: مجموعة فرعية أصغر من الصور الأربع الأولى من COCO train و COCO val، مناسبة للاختبارات السريعة.
  • COCO8-Grayscale: نسخة بتدرج رمادي من COCO8 تم إنشاؤها عن طريق تحويل RGB إلى تدرج رمادي، وهي مفيدة لتقييم النماذج ذات القناة الواحدة.
  • COCO8-Multispectral: نسخة متعددة الأطياف مكونة من 10 قنوات من COCO8 تم إنشاؤها عن طريق استيفاء أطوال موجات RGB، وهي مفيدة لتقييم النماذج الواعية بالطيف.
  • COCO12-Formats: مجموعة بيانات اختبارية تحتوي على 12 صورة تغطي جميع تنسيقات الصور المدعومة (AVIF، BMP، DNG، HEIC، JP2، JPEG، JPG، MPO، PNG، TIF، TIFF، WebP) للتحقق من صحة خطوط أنابيب تحميل الصور.
  • COCO128: مجموعة فرعية أصغر من الصور الـ 128 الأولى من COCO train و COCO val، مناسبة للاختبارات.
  • Construction-PPE: مجموعة بيانات تضم عمال مواقع البناء مع معدات السلامة المصنفة مثل الخوذات، والسترات، والقفازات، والأحذية، والنظارات الواقية، بما في ذلك تعليقات توضيحية للمعدات المفقودة مثل no_helmet و no_googles لمراقبة الامتثال في العالم الحقيقي.
  • Global Wheat 2020: مجموعة بيانات تحتوي على صور لرؤوس القمح لتحدي القمح العالمي 2020.
  • HomeObjects-3K: مجموعة بيانات للأدوات المنزلية الداخلية بما في ذلك الأسرة، والكراسي، وأجهزة التلفزيون، والمزيد - مثالية للتطبيقات في أتمتة المنزل الذكي، والروبوتات، والواقع المعزز، وتحليل تخطيط الغرف.
  • KITTI: مجموعة بيانات تضم مشاهد قيادة واقعية مع بيانات ستريو، و LiDAR، و GPS/IMU، وتُستخدم هنا لمهام اكتشاف الكائنات ثنائية الأبعاد مثل تحديد السيارات والمشاة وراكبي الدراجات في بيئات حضرية وريفية وسريعة.
  • LVIS: مجموعة بيانات واسعة النطاق لاكتشاف الكائنات والتجزئة وشرح الصور مع 1203 فئة من الكائنات.
  • Medical-pills: مجموعة بيانات تضم صوراً للأدوية الطبية، مصنفة لتطبيقات مثل ضمان جودة الأدوية، وفرز الأدوية، والامتثال التنظيمي.
  • Objects365: مجموعة بيانات عالية الجودة وواسعة النطاق لاكتشاف الكائنات مع 365 فئة من الكائنات وأكثر من 600 ألف صورة مصنفة.
  • OpenImagesV7: مجموعة بيانات شاملة من Google تحتوي على 1.7 مليون صورة تدريب و 42 ألف صورة للتحقق من الصحة.
  • Roboflow 100: معيار متنوع لاكتشاف الكائنات يضم 100 مجموعة بيانات تغطي سبعة مجالات تصوير لتقييم شامل للنموذج.
  • Signature: مجموعة بيانات تضم صوراً لمستندات متنوعة مع تواقيع مصنفة، مما يدعم أبحاث التحقق من المستندات واكتشاف الاحتيال.
  • SKU-110K: مجموعة بيانات تضم اكتشاف كائنات كثيفة في بيئات البيع بالتجزئة مع أكثر من 11 ألف صورة و 1.7 مليون صندوق إحاطة.
  • TT100K: استكشف مجموعة بيانات إشارات المرور Tsinghua-Tencent 100K (TT100K) التي تضم 100,000 صورة لمنظر الشارع وأكثر من 30,000 إشارة مرور مصنفة لاكتشاف وتصنيف قوي.
  • VisDrone: مجموعة بيانات تحتوي على بيانات اكتشاف الكائنات وتتبع كائنات متعددة من صور ملتقطة بطائرات بدون طيار مع أكثر من 10 آلاف صورة وتسلسلات فيديو.
  • VOC: مجموعة بيانات فئات الكائنات البصرية Pascal (VOC) لاكتشاف وتجزئة الكائنات مع 20 فئة كائن وأكثر من 11 ألف صورة.
  • xView: مجموعة بيانات لاكتشاف الكائنات في الصور العلوية مع 60 فئة كائن وأكثر من مليون كائن مصنف.

إضافة مجموعة بياناتك الخاصة

إذا كان لديك مجموعة بيانات خاصة بك وترغب في استخدامها لتدريب نماذج الاكتشاف باستخدام تنسيق Ultralytics YOLO، فتأكد من أنها تتبع التنسيق المحدد أعلاه تحت عنوان "تنسيق Ultralytics YOLO". قم بتحويل تعليقاتك التوضيحية إلى التنسيق المطلوب وحدد المسارات، وعدد الفئات، وأسماء الفئات في ملف إعداد YAML.

نقل أو تحويل تنسيقات التصنيف

تحويل تنسيق مجموعة بيانات COCO إلى تنسيق YOLO

يمكنك بسهولة تحويل التصنيفات من تنسيق مجموعة بيانات COCO الشهير إلى تنسيق YOLO باستخدام مقتطف الكود التالي:

مثال
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

يمكن استخدام أداة التحويل هذه لتحويل مجموعة بيانات COCO أو أي مجموعة بيانات بتنسيق COCO إلى تنسيق Ultralytics YOLO. تقوم العملية بتحويل تعليقات COCO التوضيحية القائمة على JSON إلى تنسيق YOLO القائم على النصوص والأبسط، مما يجعلها متوافقة مع نماذج Ultralytics YOLO.

تذكر التحقق مرتين مما إذا كانت مجموعة البيانات التي تريد استخدامها متوافقة مع نموذجك وتتبع اتفاقيات التنسيق اللازمة. تعد مجموعات البيانات المهيأة بشكل صحيح أمراً بالغ الأهمية لتدريب نماذج ناجحة لاكتشاف الكائنات.

الأسئلة الشائعة

ما هو تنسيق مجموعة بيانات Ultralytics YOLO وكيفية هيكلته؟

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

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← 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 # 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.zip

يتم حفظ التصنيفات في ملفات *.txt بملف واحد لكل صورة، بتنسيق class x_center y_center width height مع إحداثيات مُطبّعة. للحصول على دليل مفصل، راجع مثال مجموعة بيانات COCO8.

كيف أقوم بتحويل مجموعة بيانات COCO إلى تنسيق YOLO؟

يمكنك تحويل مجموعة بيانات COCO إلى تنسيق YOLO باستخدام أدوات تحويل Ultralytics. إليك طريقة سريعة:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

سيقوم هذا الكود بتحويل تعليقات COCO التوضيحية إلى تنسيق YOLO، مما يتيح تكاملاً سلساً مع نماذج Ultralytics YOLO. لمزيد من التفاصيل، تفضل بزيارة قسم نقل أو تحويل تنسيقات التصنيف.

ما هي مجموعات البيانات التي يدعمها Ultralytics YOLO لاكتشاف الكائنات؟

يدعم Ultralytics YOLO مجموعة واسعة من مجموعات البيانات، بما في ذلك:

توفر كل صفحة لمجموعة بيانات معلومات مفصلة حول الهيكل والاستخدام المصمم لتدريب YOLO26 بكفاءة. استكشف القائمة الكاملة في قسم مجموعات البيانات المدعومة.

كيف أبدأ تدريب نموذج YOLO26 باستخدام مجموعة البيانات الخاصة بي؟

لبدء تدريب نموذج YOLO26، تأكد من تنسيق مجموعة بياناتك بشكل صحيح وأن المسارات محددة في ملف YAML. استخدم البرنامج النصي التالي لبدء التدريب:

مثال
from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # Load a pretrained model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

ارجع إلى قسم الاستخدام لمزيد من التفاصيل حول استخدام أوضاع مختلفة، بما في ذلك أوامر CLI.

أين يمكنني العثور على أمثلة عملية لاستخدام Ultralytics YOLO لاكتشاف الكائنات؟

توفر Ultralytics العديد من الأمثلة والأدلة العملية لاستخدام YOLO26 في تطبيقات متنوعة. للحصول على نظرة شاملة، قم بزيارة مدونة Ultralytics حيث يمكنك العثور على دراسات حالة، ودروس تعليمية مفصلة، وقصص مجتمعية تعرض اكتشاف الكائنات، والتجزئة، والمزيد باستخدام YOLO26. للحصول على أمثلة محددة، تحقق من قسم الاستخدام في الوثائق.

التعليقات