Ultralytics YOLO27:
Get Started

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

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

تنسيق 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
kpt_shape: [17, 3] # required for pose datasets
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، ويجب أن تكون كل قيمة موجبة. عند عدم تحديدها، تُستخدم قيم سيغما الخاصة بـ17 نقطة مفتاحية في COCO من أجل kpt_shape: [17, 3]، وتُستخدم قيمة 1/N موحدة فيما عدا ذلك.

الاستخدام#

مثال
from ultralytics import YOLO

# ⁨تحميل نموذج⁩
model = YOLO("yolo26n-pose.pt")  # ⁨تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)⁩

# ⁨تدريب النموذج⁩
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

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

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

COCO-Pose#

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

COCO8-Pose#

  • الوصف: مجموعة بيانات Ultralytics COCO8-Pose صغيرة لكنها متعددة الاستخدامات لتقدير الوضعية، وتتألف من أول 8 صور من مجموعة تدريب COCO لعام 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.
  • اقرأ المزيد عن 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")  # ⁨تحميل نموذج مدرّب مسبقًا⁩
    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 بسلاسة. للتفاصيل، راجع قسم أداة التحويل ودليل المعالجة المسبقة للبيانات.

التعليقات