تقدير وضع الجسم

YOLO pose estimation with human body keypoint detection

تقدير وضع الجسم هو مهمة تتضمن تحديد مواقع نقاط معينة في الصورة، يشار إليها عادةً باسم النقاط الرئيسية (keypoints). يمكن أن تمثل النقاط الرئيسية أجزاءً مختلفة من الكائن مثل المفاصل، أو العلامات، أو ميزات مميزة أخرى. عادةً ما يتم تمثيل مواقع النقاط الرئيسية كمجموعة من إحداثيات [x, y] ثنائية الأبعاد أو إحداثيات [x, y, visible] ثلاثية الأبعاد.

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



Watch: How to Run Real-Time Pose Estimation with Ultralytics YOLO26 | Tracking & Keypoints Extraction 🕺
تلميح

تستخدم نماذج YOLO26 pose اللاحقة -pose، على سبيل المثال yolo26n-pose.pt. تم تدريب هذه النماذج على مجموعة بيانات COCO keypoints وهي مناسبة لمجموعة متنوعة من مهام تقدير وضع الجسم.

في نموذج YOLO26 pose الافتراضي، يوجد 17 نقطة رئيسية، كل منها يمثل جزءاً مختلفاً من جسم الإنسان. فيما يلي تعيين كل فهرس لمفصل الجسم المقابل له:

  1. الأنف
  2. العين اليسرى
  3. العين اليمنى
  4. الأذن اليسرى
  5. الأذن اليمنى
  6. الكتف الأيسر
  7. الكتف الأيمن
  8. المرفق الأيسر
  9. المرفق الأيمن
  10. المعصم الأيسر
  11. المعصم الأيمن
  12. الورك الأيسر
  13. الورك الأيمن
  14. الركبة اليسرى
  15. الركبة اليمنى
  16. الكاحل الأيسر
  17. الكاحل الأيمن

نماذج

يتم عرض نماذج Ultralytics YOLO26 Pose المدربة مسبقاً هنا. نماذج الكشف (Detect)، والتقسيم (Segment)، وتقدير وضع الجسم (Pose) مدربة مسبقاً على مجموعة بيانات COCO، ونماذج التقسيم الدلالي Semantic مدربة مسبقاً على Cityscapes، ونماذج التصنيف (Classify) مدربة مسبقاً على مجموعة بيانات ImageNet.

يتم تحميل النماذج تلقائياً من أحدث إصدار لـ Ultralytics عند الاستخدام لأول مرة.

النموذجالحجم
(بكسل)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
السرعة
CPU ONNX
(مللي ثانية)
السرعة
T4 TensorRT10
(مللي ثانية)
البارامترات
(مليون)
FLOPs
(مليار)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.5
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.423.9
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.1
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.3
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6201.7
  • قيم mAPval مخصصة لنموذج واحد ومقياس واحد على مجموعة بيانات COCO Keypoints val2017.
    يمكنك إعادة الإنتاج باستخدام yolo val pose data=coco-pose.yaml device=0
  • تم حساب السرعة (Speed) كمتوسط عبر صور COCO val باستخدام مثيل Amazon EC2 P4d.
    يمكنك إعادة الإنتاج باستخدام yolo val pose data=coco-pose.yaml batch=1 device=0|cpu
  • قيم البارامترات و FLOPs هي للنموذج المدمج بعد model.fuse()، والذي يدمج طبقات Conv وBatchNorm، وبالنسبة للنماذج من النوع end2end، فإنه يزيل رأس الكشف المساعد one-to-many. تحتفظ نقاط التحقق المدربة مسبقًا ببنية التدريب الكاملة وقد تظهر أعدادًا أعلى.

التدريب (Train)

قم بتدريب نموذج YOLO26-pose على مجموعة بيانات COCO8-pose. تعد مجموعة بيانات COCO8-pose مجموعة بيانات عينة صغيرة مثالية لاختبار وتصحيح نماذج تقدير وضع الجسم الخاصة بك.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt")  # build from YAML and transfer weights

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

راجع تفاصيل وضع train الكاملة في صفحة Train. يمكن أيضاً تدريب نماذج Pose على وحدات معالجة الرسومات السحابية (Cloud GPUs) من خلال Ultralytics Platform.

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

يمكن العثور على تنسيق مجموعة بيانات YOLO pose بالتفصيل في دليل مجموعة البيانات. لتحويل مجموعة بياناتك الحالية من تنسيقات أخرى (مثل COCO وغيرها) إلى تنسيق YOLO، يرجى استخدام أداة JSON2YOLO من Ultralytics. تدعم Ultralytics Platform أيضاً إضافة تعليقات توضيحية لوضع الجسم مع قوالب هيكل عظمي مدمجة للأشخاص، واليدين، والوجه، وتخطيطات النقاط الرئيسية المخصصة.

بالنسبة لمهام تقدير وضع الجسم المخصصة، يمكنك أيضاً استكشاف مجموعات بيانات متخصصة مثل Tiger-Pose لتقدير وضع الحيوانات، و Hand Keypoints لتتبع اليد، أو Dog-Pose لتحليل وضع الكلاب.

التحقق (Val)

تحقق من دقة نموذج YOLO26n-pose المدرب على مجموعة بيانات COCO8-pose. لا حاجة إلى وسيطات حيث يحتفظ model ببيانات التدريب data والوسيطات الخاصة به كسمات للنموذج.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary for box with precision, recall, F1, TP, FP, and FN
metrics.pose.map  # map50-95(P)
metrics.pose.map50  # map50(P)
metrics.pose.map75  # map75(P)
metrics.pose.maps  # a list containing mAP50-95(P) for each category
metrics.pose.image_metrics  # per-image metrics dictionary for pose with precision, recall, F1, TP, FP, and FN

التنبؤ

استخدم نموذج YOLO26n-pose مدرب لتشغيل التنبؤات على الصور. يسمح لك وضع التنبؤ بإجراء الاستدلال على الصور، أو مقاطع الفيديو، أو البث المباشر.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    xy = result.keypoints.xy  # x and y coordinates
    xyn = result.keypoints.xyn  # normalized
    kpts = result.keypoints.data  # x, y, visibility (if available)

راجع تفاصيل وضع predict الكاملة في صفحة التنبؤ.

مخرجات النتائج

يعيد تقدير وضع الجسم كائناً واحداً من Results لكل صورة. حقول التنبؤ الأساسية هي result.keypoints لإحداثيات الوضع و result.boxes للحالات المكتشفة التي تنتمي إليها تلك النقاط الرئيسية.

السمةالنوعالشكلالوصف
result.keypointsKeypoints(N)النقاط الرئيسية.
result.keypoints.datatorch.float32(N,K,2/3)x,y بالإضافة إلى إمكانية الرؤية/الثقة.
result.keypoints.xytorch.float32(N,K,2)نقاط رئيسية للبكسل.
result.keypoints.xyntorch.float32(N,K,2)نقاط رئيسية مُطبعة (Normalized).
result.boxesBoxes(N)صناديق المثيلات.

لحقول Results الخاصة بكل مهمة عبر كل مهمة، راجع قسم تنبؤ النتائج حسب المهمة.

التصدير (Export)

قم بتصدير نموذج YOLO26n Pose إلى تنسيق مختلف مثل ONNX، أو CoreML، إلخ. هذا يسمح لك بنشر نموذجك على منصات وأجهزة مختلفة للاستدلال في الوقت الفعلي.

مثال
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

تنسيقات تصدير YOLO26-pose المتاحة موجودة في الجدول أدناه. يمكنك التصدير إلى أي تنسيق باستخدام الوسيطة format، على سبيل المثال format='onnx' أو format='engine'. يمكنك التنبؤ أو التحقق مباشرة على النماذج المصدرة، على سبيل المثال yolo predict model=yolo26n-pose.onnx. يتم عرض أمثلة الاستخدام لنموذجك بعد اكتمال التصدير.

التنسيقوسيطة formatالنموذجالبيانات الوصفيةالوسيطات
PyTorch-yolo26n-pose.pt-
TorchScripttorchscriptyolo26n-pose.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-pose.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-pose_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-pose_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pbimgsz, batch, device
TF Litetfliteyolo26n-pose.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-pose_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/imgsz, batch, device
MNNmnnyolo26n-pose.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-pose_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-pose_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-pose_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-pose_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-pose_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-pose_deepx_model/imgsz, int8, data, optimize, device

اطلع على تفاصيل export الكاملة في صفحة Export.

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

ما هو تقدير وضع الجسم (Pose Estimation) باستخدام Ultralytics YOLO26 وكيف يعمل؟

يتضمن تقدير وضع الجسم مع Ultralytics YOLO26 تحديد نقاط معينة، تُعرف باسم النقاط الرئيسية (keypoints)، في الصورة. تمثل هذه النقاط الرئيسية عادةً المفاصل أو ميزات مهمة أخرى للكائن. تتضمن المخرجات إحداثيات [x, y] ودرجات الثقة لكل نقطة. تم تصميم نماذج YOLO26-pose خصيصاً لهذه المهمة وتستخدم اللاحقة -pose، مثل yolo26n-pose.pt. هذه النماذج مدربة مسبقاً على مجموعات بيانات مثل COCO keypoints ويمكن استخدامها لمهام تقدير وضع الجسم المختلفة. لمزيد من المعلومات، تفضل بزيارة صفحة تقدير وضع الجسم.

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

يتضمن تدريب نموذج YOLO26-pose على مجموعة بيانات مخصصة تحميل نموذج، سواء كان نموذجاً جديداً محدداً بواسطة ملف YAML أو نموذجاً مدرباً مسبقاً. يمكنك بعد ذلك بدء عملية التدريب باستخدام مجموعة البيانات والمعلمات المحددة الخاصة بك.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)

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

للحصول على تفاصيل شاملة حول التدريب، راجع قسم التدريب. يمكنك أيضاً استخدام Ultralytics Platform للحصول على نهج بدون كود (no-code) لتدريب نماذج تقدير وضع الجسم المخصصة.

كيف يمكنني التحقق من نموذج YOLO26-pose مدرب؟

يتضمن التحقق من نموذج YOLO26-pose تقييم دقته باستخدام نفس معلمات مجموعة البيانات المحتفظ بها أثناء التدريب. إليك مثال:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered

لمزيد من المعلومات، تفضل بزيارة قسم التحقق.

هل يمكنني تصدير نموذج YOLO26-pose إلى تنسيقات أخرى، وكيف؟

نعم، يمكنك تصدير نموذج YOLO26-pose إلى تنسيقات مختلفة مثل ONNX، وCoreML، وTensorRT، وغيرها. يمكن القيام بذلك باستخدام Python أو واجهة سطر الأوامر (CLI).

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

راجع قسم التصدير لمزيد من التفاصيل. يمكن نشر النماذج المصدرة على أجهزة الحافة (edge devices) لتطبيقات الوقت الفعلي مثل تتبع اللياقة البدنية، أو التحليل الرياضي، أو الروبوتات.

ما هي نماذج Ultralytics YOLO26-pose المتاحة وما هي مقاييس أدائها؟

توفر Ultralytics YOLO26 نماذج متنوعة لتقدير الوضعية (pose) مدربة مسبقاً مثل YOLO26n-pose وYOLO26s-pose وYOLO26m-pose، من بين نماذج أخرى. تختلف هذه النماذج في الحجم، والدقة (mAP)، والسرعة. على سبيل المثال، يحقق نموذج YOLO26n-pose قيمة mAPpose50-95 تبلغ 50.0 وقيمة mAPpose50 تبلغ 81.0. للحصول على قائمة كاملة وتفاصيل الأداء، قم بزيارة قسم النماذج.

تعليقات