Ultralytics YOLO27:

نظرة عامة على مجموعات بيانات تقدير الوضعيات#

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

تنسيق Ultralytics YOLO#

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

  1. ملف نصي واحد لكل صورة: تحتوي كل صورة في مجموعة البيانات على ملف نصي مطابق له في الاسم مع ملف الصورة، ويمتد بالامتداد ".txt".
  2. صف واحد لكل كائن: يتوافق كل صف في الملف النصي مع مثيل كائن واحد في الصورة.
  3. معلومات الكائن في كل صف: يحتوي كل صف على المعلومات التالية حول مثيل الكائن:
    • فهرس فئة الكائن: عدد صحيح يمثل فئة الكائن (مثلًا، 0 للشخص، و1 للسيارة، وهكذا).
    • إحداثيات مركز الكائن: إحداثيا x وy لمركز الكائن، وقد جرت تسويتهما لتتراوح قيمتهما بين 0 و1.
    • عرض الكائن وارتفاعه: عرض الكائن وارتفاعه، وقد جرت تسويتهما لتتراوح قيمتهما بين 0 و1.
    • إحداثيات النقاط المفتاحية للكائن: النقاط المفتاحية للكائن، وقد جرت تسويتها لتتراوح قيمتها بين 0 و1.

فيما يلي مثال على تنسيق التسميات لمهمة تقدير الوضعية:

التنسيق مع النقاط المفتاحية ثنائية الأبعاد

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>

التنسيق مع إمكانية رؤية النقاط المفتاحية (يتضمن إمكانية الرؤية لكل نقطة)

<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> ... <pxn> <pyn> <pn-visibility>

في هذا التنسيق، يمثّل <class-index> فهرس الفئة للكائن، وتمثّل <x> <y> <width> <height> الإحداثيات المُسواة لـ المربع المحيط، وتمثّل <px1> <py1> <px2> <py2> ... <pxn> <pyn> إحداثيات النقاط المفتاحية المُسواة. قناة إمكانية الرؤية اختيارية، لكنها مفيدة لمجموعات البيانات التي تضع تعليقات توضيحية على الحجب.

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

يستخدم إطار Ultralytics تنسيق ملف YAML لتعريف تكوين مجموعة البيانات والنموذج لتدريب نماذج تقدير الوضعيات. فيما يلي مثال على تنسيق YAML المستخدم لتعريف مجموعة بيانات للوضعيات:

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

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

# Keypoints
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]

# Classes
names:
  0: person

# Keypoint names per class
kpt_names:
  0:
    - nose
    - left_eye
    - right_eye
    - left_ear
    - right_ear
    - left_shoulder
    - right_shoulder
    - left_elbow
    - right_elbow
    - left_wrist
    - right_wrist
    - left_hip
    - right_hip
    - left_knee
    - right_knee
    - left_ankle
    - right_ankle

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

تشير الحقول train وval وtest إلى صور التدريب والتحقق والاختبار. يقبل كل حقل دليلًا أو قائمة أدلة أو ملف *.txt يسرد مسار صورة واحدًا في كل سطر (تُحل المسارات التي تبدأ بـ ./ نسبةً إلى ملف *.txt). ويفيد ملف *.txt في التدريب على مجموعة فرعية من دليل، أو تخطي الصور غير الموسومة، أو دمج الصور من مصادر متعددة في مجموعة واحدة.

مسارات الصور في ملف `*.txt`
path: datasets/coco8-pose # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

يمثّل names قاموسًا لأسماء الفئات. ويجب أن يتطابق ترتيب الأسماء مع ترتيب فهارس فئات الكائنات في ملفات مجموعة بيانات YOLO.

(اختياري) يربط flip_idx كل نقطة مفتاحية بصورتها المرآتية، بحيث يحافظ تعزيز القلب الأفقي على الاتساق بين اليسار واليمين في الهياكل العظمية المتناظرة مثل جسم الإنسان أو وجهه. بالنسبة إلى خمس معالم وجه مفهرسة كالتالي: [العين اليسرى، العين اليمنى، الأنف، الفم الأيسر، الفم الأيمن] = [0، 1، 2، 3، 4]، تكون قيمة flip_idx هي [1، 0، 2، 4، 3]: يتبادل الزوجان 0-1 و3-4 بين اليسار واليمين، بينما يحتفظ الأنف بفهرسه الخاص.

(اختياري) يعيّن kpt_oks_sigmas قيم سيغما مخصصة لكل نقطة مفتاحية لـ OKS تُستخدم أثناء التدريب والتحقق، مثل [0.26, 0.25, 0.25, ...]. يجب أن يساوي طول القائمة عدد النقاط المفتاحية N من kpt_shape، ويجب أن تكون كل قيمة موجبة. عند حذف هذا الحقل، تُستخدم قيم سيغما الخاصة بـ COCO ذات النقاط المفتاحية الـ17 مع kpt_shape: [17, 3]، وتُستخدم قيمة 1/N موحدة في الحالات الأخرى.

الاستخدام#

مثال
from ultralytics import YOLO

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

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

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

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

COCO-Pose#

  • الوصف: COCO-Pose هي مجموعة بيانات واسعة النطاق لتقدير الوضعيات البشرية، وتغطي صور COCO 2017 التي تتضمن أشخاصًا موضحة نقاطهم المفتاحية.
  • تنسيق التسميات: مطابق لتنسيق Ultralytics YOLO الموضح أعلاه، مع نقاط مفتاحية للوضعيات البشرية.
  • عدد الفئات: 1 (شخص).
  • النقاط المفتاحية: 17 نوعًا من النقاط المفتاحية، تشمل الأنف والعينين والأذنين والكتفين والمرفقين والمعصمين والوركين والركبتين والكاحلين، ولكل منها بُعد لإمكانية الرؤية.
  • الاستخدام: مناسبة لتدريب نماذج تقدير الوضعيات البشرية.
  • ملاحظات إضافية: تعتمد مجموعة البيانات على تحدي COCO Keypoints 2017، وتضم 58,945 صورة موضحًا فيها 156,165 شخصًا.
  • اقرأ المزيد عن COCO-Pose

COCO8-Pose#

  • الوصف: مجموعة بيانات COCO8-Pose من Ultralytics هي مجموعة صغيرة ومتعددة الاستخدامات لتقدير الوضعيات، وتتكون من أول 8 صور من مجموعة COCO train 2017، بواقع 4 صور للتدريب و4 للتحقق.
  • تنسيق التسميات: مطابق لتنسيق Ultralytics YOLO الموضح أعلاه، مع نقاط مفتاحية للوضعيات البشرية.
  • عدد الفئات: 1 (شخص).
  • النقاط المفتاحية: 17 نوعًا من النقاط المفتاحية، تشمل الأنف والعينين والأذنين والكتفين والمرفقين والمعصمين والوركين والركبتين والكاحلين، ولكل منها بُعد لإمكانية الرؤية.
  • الاستخدام: مناسبة لاختبار نماذج تقدير الوضعيات وتصحيح أخطائها، أو لتجربة أساليب جديدة لاكتشاف النقاط المفتاحية.
  • ملاحظات إضافية: تُعد COCO8-Pose مثالية لفحوصات السلامة وفحوصات CI.
  • اقرأ المزيد عن COCO8-Pose

Dog-Pose#

  • الوصف: تحتوي مجموعة بيانات Dog-Pose من Ultralytics على 6,773 صورة للتدريب و1,703 صور للتحقق، لتقدير النقاط المفتاحية للكلاب.
  • تنسيق التسميات: يتبع تنسيق Ultralytics YOLO، مع تعليقات توضيحية لنقاط مفتاحية متعددة خاصة بتشريح الكلاب.
  • عدد الفئات: 1 (كلب).
  • النقاط المفتاحية: 24 نقطة مفتاحية، لكل منها بُعد لإمكانية الرؤية، ومصممة لتناسب وضعيات الكلاب مثل أوضاع الأطراف والمفاصل والرأس.
  • الاستخدام: مثالية لتدريب نماذج تقدير وضعيات الكلاب في سيناريوهات متنوعة، بدءًا من البحث ووصولًا إلى التطبيقات الواقعية.
  • ملاحظات إضافية: مصدر الصور هو Stanford Dogs Dataset.
  • اقرأ المزيد عن Dog-Pose

النقاط المفتاحية لليد#

  • الوصف: تتكون مجموعة بيانات النقاط المفتاحية لليد من Ultralytics من 26,768 صورة، خُصصت 18,776 صورة منها للتدريب و7,992 للتحقق.
  • تنسيق التسميات: مطابق لتنسيق Ultralytics YOLO الموضح أعلاه، لكنه يتضمن 21 نقطة مفتاحية ليد بشرية وبُعدًا لإمكانية الرؤية.
  • عدد الفئات: 1 (يد).
  • النقاط المفتاحية: 21 نقطة مفتاحية.
  • الاستخدام: مفيدة لتقدير وضعيات اليد البشرية والتعرف على الإيماءات.
  • ملاحظات إضافية: تُنشأ تعليقات النقاط المفتاحية باستخدام Google MediaPipe لضمان اتساق التسمية.
  • اقرأ المزيد عن النقاط المفتاحية لليد

Tiger-Pose#

  • الوصف: تتكون مجموعة بيانات Tiger-Pose من Ultralytics من 263 صورة مصدرها فيديو على YouTube، خُصصت 210 صور منها للتدريب و53 للتحقق.
  • تنسيق التسميات: مطابق لتنسيق Ultralytics YOLO الموضح أعلاه، مع 12 نقطة مفتاحية لوضعية الحيوان ومن دون بُعد لإمكانية الرؤية.
  • عدد الفئات: 1 (نمر).
  • النقاط المفتاحية: 12 نقطة مفتاحية.
  • الاستخدام: مفيدة لوضعيات الحيوانات أو لأي وضعية أخرى لا تخص البشر.
  • ملاحظات إضافية: منشورة بموجب رخصة AGPL-3.0.
  • اقرأ المزيد عن Tiger-Pose

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

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

لتخطي خطوة التحويل بالكامل، تتيح لك Ultralytics Platform تحميل الصور الخام، وإضافة تعليقات توضيحية للنقاط المفتاحية في المتصفح، والتدريب مباشرةً على مجموعة البيانات الناتجة.

أداة التحويل#

توفر Ultralytics أداة تحويل ملائمة لتحويل التسميات من تنسيق مجموعة بيانات COCO الشائعة إلى تنسيق YOLO:

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

convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

يمكن استخدام أداة التحويل هذه لتحويل مجموعة بيانات COCO أو أي مجموعة بيانات بتنسيق COCO إلى تنسيق Ultralytics YOLO. تحدد المعلمة use_keypoints ما إذا كان ينبغي تضمين النقاط المفتاحية (لتقدير الوضعيات) في التسميات المحوّلة.

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

  • يتضمن تنسيق Ultralytics YOLO لمجموعات بيانات تقدير الوضعيات تسمية كل صورة بملف نصي مطابق. ويخزن كل صف من الملف النصي معلومات عن مثيل كائن:

    • فهرس فئة الكائن
    • إحداثيات مركز الكائن (x وy مُسويان)
    • عرض الكائن وارتفاعه (مُسويان)
    • إحداثيات النقاط المفتاحية للكائن (pxn وpyn مُسويان)

    بالنسبة إلى الوضعيات ثنائية الأبعاد، تتضمن النقاط المفتاحية إحداثيي x وy مُسويين. ومع إضافة بُعد لإمكانية الرؤية، تتضمن كل نقطة مفتاحية أيضًا علامة لإمكانية الرؤية. لمزيد من التفاصيل، راجع تنسيق Ultralytics YOLO.

  • يأتي coco-pose.yaml مضمّنًا مع الحزمة، وينزّل الصور والتسميات عند الاستخدام الأول، لذا لا حاجة إلى إعداد يدوي:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")  # load pretrained model
    results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)

    للاطلاع على تفاصيل مجموعة البيانات، راجع COCO-Pose، وراجع صفحة التدريب للحصول على القائمة الكاملة للوسائط.

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

    1. حوّل تعليقاتك التوضيحية إلى تنسيق Ultralytics YOLO.

    2. أنشئ ملف تكوين YAML يحدد مسارات مجموعة البيانات وعدد الفئات وأسماء الفئات.

    3. استخدم ملف التكوين لتدريب نموذجك:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n-pose.pt")
      results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

      للاطلاع على الخطوات الكاملة، راجع قسم إضافة مجموعة بياناتك الخاصة.

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

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose
    # Example usage: yolo train data=coco8-pose.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8-pose ← 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-pose # 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)
    
    # Keypoints
    kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
    flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
    
    # Classes
    names:
      0: person
    
    # Keypoint names per class
    kpt_names:
      0:
        - nose
        - left_eye
        - right_eye
        - left_ear
        - right_ear
        - left_shoulder
        - right_shoulder
        - left_elbow
        - right_elbow
        - left_wrist
        - right_wrist
        - left_hip
        - right_hip
        - left_knee
        - right_knee
        - left_ankle
        - right_ankle
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip

    اقرأ المزيد عن إنشاء ملفات تكوين YAML في تنسيق YAML لمجموعة البيانات.

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

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)

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

التعليقات