نظرة عامة على مجموعات بيانات تقدير الوضع#
تنسيقات مجموعات البيانات المدعومة#
تنسيق Ultralytics YOLO#
تنسيق تسمية مجموعة البيانات المستخدم لتدريب نماذج تقدير الوضع YOLO هو كما يلي:
- ملف نصي واحد لكل صورة: تحتوي كل صورة في مجموعة البيانات على ملف نصي مقابل له نفس اسم ملف الصورة وملحق ".txt".
- صف واحد لكل كائن: يتوافق كل صف في الملف النصي مع مثيل كائن واحد في الصورة.
- معلومات الكائن لكل صف: يحتوي كل صف على المعلومات التالية حول مثيل الكائن:
- فهرس فئة الكائن: عدد صحيح يمثل فئة الكائن (على سبيل المثال، 0 للشخص، 1 للسيارة، إلخ).
- إحداثيات مركز الكائن: إحداثيات x و y لمركز الكائن، مُطبعة لتكون بين 0 و 1.
- عرض وارتفاع الكائن: عرض وارتفاع الكائن، مُطبعين ليكون بين 0 و 1.
- إحداثيات النقاط الرئيسية للكائن: النقاط الرئيسية للكائن، مُطبعة لتكون بين 0 و 1.
إليك مثال على تنسيق التسمية لمهمة تقدير الوضع:
التنسيق مع نقاط رئيسية ثنائية الأبعاد (2D)
<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> إحداثيات النقاط الرئيسية المُطَبَّعَة. قناة الرؤية اختيارية ولكنها مفيدة للdatasets التي توثق الانسداد.
تنسيق YAML لمجموعة البيانات#
يستخدم إطار عمل Ultralytics تنسيق ملف YAML لتحديد تكوين مجموعة البيانات والنموذج لتدريب نماذج تقدير الوضع. إليك مثال على تنسيق 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 مفيد للتدريب على مجموعة فرعية من المجلد، أو تخطي الصور غير المُصنَّفة، أو دمج الصور من مصادر متعددة في تقسيم واحد.
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: personnames هو قاموس لأسماء الفئات. يجب أن تتطابق ترتيب الأسماء مع ترتيب فهارس فئات الكائنات في ملفات dataset الخاصة بـ 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)مجموعات البيانات المدعومة#
يُحدد هذا القسم الـ datasets المتوافقة مع تنسيق Ultralytics YOLO والتي يمكن استخدامها لتدريب نماذج تقدير الوضعية:
COCO-Pose#
- الوصف: COCO-Pose هو مجموعة بيانات واسعة النطاق لتقدير وضعية الإنسان تغطي صور COCO 2017 التي تحتوي على أشخاص محددين بنقاط رئيسية.
- تنسيق التسمية: نفس تنسيق Ultralytics YOLO كما هو موضح أعلاه، مع نقاط رئيسية لأوضاع الإنسان.
- عدد الفئات: 1 (شخص).
- النقاط الرئيسية: 17 نوعاً من النقاط الرئيسية بما في ذلك الأنف، العينان، الأذنان، الكتفان، المرفقان، الرسغان، الوركان، الركبتان، والكاحلان، ولكل منها بُعد للرؤية.
- الاستخدام: مناسب لتدريب نماذج تقدير وضع الإنسان.
- ملاحظات إضافية: يعتمد الـ dataset على تحدي COCO Keypoints 2017: 58,945 صورة معنونة لـ 156,165 شخصاً.
- اقرأ المزيد حول COCO-Pose
COCO8-Pose#
- الوصف: Ultralytics COCO8-Pose هو dataset لتقدير الوضعية صغير ولكنه متعدد الاستخدامات ويتألف من اول 8 صور من مجموعة التدريب COCO لعام 2017، 4 للتدريب و4 للتحقق.
- تنسيق التسمية: نفس تنسيق Ultralytics YOLO كما هو موضح أعلاه، مع نقاط رئيسية لأوضاع الإنسان.
- عدد الفئات: 1 (شخص).
- النقاط الرئيسية: 17 نوعاً من النقاط الرئيسية بما في ذلك الأنف، العينان، الأذنان، الكتفان، المرفقان، الرسغان، الوركان، الركبتان، والكاحلان، ولكل منها بُعد للرؤية.
- الاستخدام: مناسبة لاختبار وتصحيح نماذج تقدير الوضعية، أو لتجربة أساليب جديدة للكشف عن النقاط الرئيسية.
- ملاحظات إضافية: COCO8-Pose مثالي لفحوصات الصحة وفحوصات الـ CI.
- اقرأ المزيد حول COCO8-Pose
Dog-Pose#
- الوصف: يحتوي dataset Ultralytics Dog-Pose على 6,773 صورة تدريب و1,703 صورة تحقق لتقدير النقاط الرئيسية للكلاب.
- تنسيق التسمية: يتبع تنسيق Ultralytics YOLO، مع تعليقات توضيحية لنقاط رئيسية متعددة خاصة بتشريح الكلب.
- عدد الفئات: 1 (كلب).
- النقاط الرئيسية: 24 نقطة رئيسية، لكل منها بُعد للرؤية، مصممة خصيصاً لوضعيات الكلاب مثل الأطراف، المفاصل، ومواضع الرأس.
- الاستخدام: مثالي لتدريب النماذج لتقدير وضعيات الكلاب في سيناريوهات مختلفة، بدءاً من الأبحاث وحتى التطبيقات الواقعية.
- ملاحظات إضافية: صور المصدر مأخوذة من Stanford Dogs Dataset.
- اقرأ المزيد حول Dog-Pose
Hand Keypoints#
- الوصف: يتألف dataset النقاط الرئيسية لليد من Ultralytics من 26,768 صورة، مع تخصيص 18,776 للتدريب و7,992 للتحقق.
- تنسيق التسمية: نفس تنسيق Ultralytics YOLO الموضح أعلاه، ولكن مع 21 نقطة رئيسية ليد الإنسان وبُعد للرؤية.
- عدد الفئات: 1 (يد).
- النقاط الرئيسية: 21 نقطة رئيسية.
- الاستخدام: رائع لتقدير وضعية اليد البشرية والتعرف على الإيماءات.
- ملاحظات إضافية: يتم إنشاء تعليقات النقاط الرئيسية باستخدام Google MediaPipe لتسمية متسقة.
- اقرأ المزيد حول النقاط الرئيسية لليد
Tiger-Pose#
- الوصف: يتألف dataset Ultralytics Tiger-Pose من 263 صورة مستمدة من فيديو على YouTube، مع تخصيص 210 صور للتدريب و53 للتحقق.
- تنسيق التسميات: نفس تنسيق Ultralytics YOLO الموضح أعلاه، مع 12 نقطة رئيسية لوضعية الحيوان وبدون بُعد للرؤية.
- عدد الفئات: 1 (نمر).
- النقاط الرئيسية: 12 نقطة رئيسية.
- الاستخدام: رائعة لوضع الحيوان أو أي وضع آخر لا يعتمد على الإنسان.
- ملاحظات إضافية: مُصَدَر بموجب رخصة AGPL-3.0.
- اقرأ المزيد حول Tiger-Pose
إضافة مجموعة البيانات الخاصة بك#
إذا كان لديك مجموعة البيانات الخاصة بك وترغب في استخدامها لتدريب نماذج تقدير الوضع باستخدام تنسيق Ultralytics YOLO، فتأكد من أنها تتبع التنسيق المحدد أعلاه تحت "تنسيق Ultralytics YOLO". قم بتحويل تعليقاتك التوضيحية إلى التنسيق المطلوب وحدد المسارات، وعدد الفئات، وأسماء الفئات في ملف تكوين YAML.
لتخطي خطوة التحويل تماماً، تتيح لك منصة Ultralytics تحميل الصور الخام، وتعليق النقاط الرئيسية في المتصفح، والتدريب على الـ dataset الناتج مباشرة.
أداة التحويل#
توفر Ultralytics أداة تحويل مريحة لتحويل التسميات من تنسيق COCO dataset الشائع إلى تنسيق YOLO:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)يمكن استخدام أداة التحويل هذه لتحويل COCO dataset أو أي dataset بتنسيق 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)لتفاصيل الـ dataset، راجع COCO-Pose، وصفحة Train للحصول على قائمة الحجج الكاملة.
لإضافة مجموعة البيانات الخاصة بك:
-
قم بتحويل تعليقاتك التوضيحية إلى تنسيق Ultralytics YOLO.
-
قم بإنشاء ملف تكوين YAML يحدد مسارات مجموعة البيانات، وعدد الفئات، وأسماء الفئات.
-
استخدم ملف التكوين لتدريب نموذجك:
from ultralytics import YOLO model = YOLO("yolo26n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)للخطوات الكاملة، تحقق من قسم إضافة dataset الخاص بك.
-
يحدد ملف 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 في تنسيق Dataset YAML.
يوفر Ultralytics أداة تحويل لتحويل تسميات مجموعة بيانات COCO إلى تنسيق YOLO، بما في ذلك معلومات النقاط الرئيسية:
from ultralytics.data.converter import convert_coco convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)تساعد هذه الأداة في دمج COCO datasets بسلاسة في مشاريع YOLO. للتفاصيل، راجع قسم أداة التحويل ودليل المعالجة المسبقة للبيانات.