نظرة عامة على مجموعات بيانات تقدير الوضع#
تنسيقات مجموعات البيانات المدعومة#
تنسيق 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> هي إحداثيات النقاط الرئيسية المُطبعة. قناة الرؤية اختيارية ولكنها مفيدة لمجموعات البيانات التي توضح الانسداد.
تنسيق 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 إلى صور التدريب والتحقق والاختبار. يقبل كل منها دليلاً (directory)، أو قائمة من الأدلة، أو ملف *.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 هو قاموس لأسماء الفئات. يجب أن يطابق ترتيب الأسماء ترتيب فهارس فئات الكائنات في ملفات مجموعة بيانات YOLO.
(اختياري) يقوم flip_idx بتعيين كل نقطة رئيسية إلى صورتها المعكوسة، بحيث يحافظ التكبير عن طريق القلب الأفقي على اتساق اليمين واليسار في الهياكل المتماثلة مثل جسم الإنسان أو الوجه. بالنسبة لخمس معالم وجه مفهرسة كـ [العين اليسرى، العين اليمنى، الأنف، الفم الأيسر، الفم الأيمن] = [0، 1، 2، 3، 4]، فإن flip_idx هو [1، 0، 2، 4، 3]: تتبادل أزواج اليسار-اليمين 0-1 و 3-4 أماكنها، ويحتفظ الأنف بمؤشره الخاص.
(اختياري) تقوم kpt_oks_sigmas بتعيين قيم sigma مخصصة لكل نقطة رئيسية (per-keypoint) لـ 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 والتي يمكن استخدامها لتدريب نماذج تقدير الوضع:
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 train 2017، منها 4 للتدريب و4 للتحقق من الصحة.
- تنسيق التسمية: نفس تنسيق Ultralytics YOLO كما هو موضح أعلاه، مع نقاط رئيسية لأوضاع الإنسان.
- عدد الفئات: 1 (شخص).
- النقاط الرئيسية: 17 نوعاً من النقاط الرئيسية بما في ذلك الأنف، العينان، الأذنان، الكتفان، المرفقان، الرسغان، الوركان، الركبتان، والكاحلان، ولكل منها بُعد للرؤية.
- الاستخدام: مناسبة لاختبار وتصحيح نماذج تقدير الوضعية، أو لتجربة أساليب جديدة للكشف عن النقاط الرئيسية.
- ملاحظات إضافية: تُعد COCO8-Pose مثالية لاختبارات السلامة وفحوصات CI.
- اقرأ المزيد عن COCO8-Pose
Dog-Pose#
- الوصف: تحتوي مجموعة بيانات Ultralytics Dog-Pose على 6,773 صورة للتدريب و1,703 صورة للتحقق من الصحة لتقدير النقاط الرئيسية للكلاب.
- تنسيق التسمية: يتبع تنسيق Ultralytics YOLO، مع تعليقات توضيحية لنقاط رئيسية متعددة خاصة بتشريح الكلب.
- عدد الفئات: 1 (كلب).
- النقاط الرئيسية: 24 نقطة رئيسية، لكل منها بُعد للرؤية، مصممة خصيصاً لوضعيات الكلاب مثل الأطراف، المفاصل، ومواضع الرأس.
- الاستخدام: مثالية لتدريب النماذج لتقدير أوضاع الكلاب في سيناريوهات مختلفة، من البحث إلى التطبيقات الواقعية.
- ملاحظات إضافية: تم استقاء صور المصدر من Stanford Dogs Dataset.
- اقرأ المزيد عن Dog-Pose
Hand Keypoints#
- الوصف: تتكون مجموعة بيانات Ultralytics Hand Keypoints من 26,768 صورة، مع تخصيص 18,776 للتدريب و7,992 للتحقق من الصحة.
- تنسيق التسمية: نفس تنسيق Ultralytics YOLO الموضح أعلاه، ولكن مع 21 نقطة رئيسية ليد الإنسان وبُعد للرؤية.
- عدد الفئات: 1 (يد).
- النقاط الرئيسية: 21 نقطة رئيسية.
- الاستخدام: رائعة لتقدير وضع يد الإنسان والتعرف على الإيماءات.
- ملاحظات إضافية: تم إنشاء تعليقات النقاط الرئيسية باستخدام Google MediaPipe لضمان اتساق التصنيف.
- اقرأ المزيد عن Hand Keypoints
Tiger-Pose#
- الوصف: تتكون مجموعة بيانات Tiger-Pose من Ultralytics من 263 صورة مستمدة من مقطع فيديو على YouTube، حيث تم تخصيص 210 صورة للتدريب و53 للتحقق من الصحة.
- تنسيق التسميات: نفس تنسيق Ultralytics YOLO الموضح أعلاه، مع 12 نقطة رئيسية لوضعية الحيوان وبدون بُعد للرؤية.
- عدد الفئات: 1 (نمر).
- النقاط الرئيسية: 12 نقطة رئيسية.
- الاستخدام: رائعة لوضع الحيوان أو أي وضع آخر لا يعتمد على الإنسان.
- ملاحظات إضافية: تم الإصدار بموجب AGPL-3.0 License.
- اقرأ المزيد عن 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 لتقدير الوضع؟#
يتضمن تنسيق Ultralytics YOLO لمجموعات بيانات تقدير الوضع تسمية كل صورة بملف نصي مطابق. يخزن كل صف من الملف النصي معلومات حول مثيل كائن:
- فهرس فئة الكائن
- إحداثيات مركز الكائن (x و y مُطبعة)
- عرض وارتفاع الكائن (مُطبعان)
- إحداثيات النقاط الرئيسية للكائن (pxn و pyn مُطبعة)
بالنسبة للأوضاع ثنائية الأبعاد، تشمل النقاط الرئيسية إحداثيات x و y المُطبعة. مع بُعد الرؤية، تحتوي كل نقطة رئيسية أيضاً على علامة رؤية. لمزيد من التفاصيل، انظر تنسيق Ultralytics YOLO.
كيف يمكنني استخدام مجموعة بيانات COCO-Pose مع 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، وصفحة Train للحصول على قائمة الوسائط الكاملة.
كيف يمكنني إضافة مجموعة البيانات الخاصة بي لتقدير الوضع في Ultralytics YOLO؟#
لإضافة مجموعة البيانات الخاصة بك:
-
قم بتحويل تعليقاتك التوضيحية إلى تنسيق Ultralytics YOLO.
-
قم بإنشاء ملف تكوين YAML يحدد مسارات مجموعة البيانات، وعدد الفئات، وأسماء الفئات.
-
استخدم ملف التكوين لتدريب نموذجك:
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 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 لمجموعة البيانات.
كيف يمكنني تحويل تسميات مجموعة بيانات COCO إلى تنسيق Ultralytics YOLO لتقدير الوضع؟#
يوفر Ultralytics أداة تحويل لتحويل تسميات مجموعة بيانات COCO إلى تنسيق YOLO، بما في ذلك معلومات النقاط الرئيسية:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)تساعد هذه الأداة في دمج مجموعات بيانات COCO بسلاسة في مشاريع YOLO. لمزيد من التفاصيل، راجع قسم أداة التحويل ودليل معالجة البيانات مسبقًا.