تقدير الوضعية باستخدام Ultralytics YOLO#
تقدير الوضعية هو مهمة تتضمن تحديد موقع نقاط محددة في صورة، يُشار إليها عادةً باسم النقاط الأساسية. ويمكن أن تمثل النقاط الأساسية أجزاءً مختلفة من الكائن، مثل المفاصل أو المعالم أو السمات المميزة الأخرى. وعادةً ما تُمثَّل مواقع النقاط الأساسية كمجموعة من إحداثيات ثنائية الأبعاد [x, y]، مع خيار إضافة علامة رؤية [x, y, visible].
يتمثل ناتج نموذج تقدير الوضعية في مجموعة من النقاط التي تمثل النقاط الأساسية على كائن في الصورة، وعادةً ما تترافق مع درجات الثقة لكل نقطة. ويُعد تقدير الوضعية خيارًا مناسبًا عندما تحتاج إلى تحديد أجزاء معينة من كائن في مشهد، وتحديد موقع كل جزء بالنسبة إلى الأجزاء الأخرى.
Watch: How to Run Real-Time Pose Estimation with Ultralytics YOLO26 | Tracking & Keypoints Extraction 🕺
تستخدم نماذج pose في YOLO26 اللاحقة -pose، أي yolo26n-pose.pt. وقد دُرِّبت هذه النماذج على مجموعة بيانات COCO keypoints، وهي مناسبة لمجموعة متنوعة من مهام تقدير الوضعية.
يحتوي نموذج YOLO26 pose الافتراضي على 17 نقطة أساسية، تمثل كل منها جزءًا مختلفًا من جسم الإنسان. فيما يلي تعيين كل فهرس إلى مفصل الجسم المقابل له:
- الأنف
- العين اليسرى
- العين اليمنى
- الأذن اليسرى
- الأذن اليمنى
- الكتف الأيسر
- الكتف الأيمن
- المرفق الأيسر
- المرفق الأيمن
- المعصم الأيسر
- المعصم الأيمن
- الورك الأيسر
- الورك الأيمن
- الركبة اليسرى
- الركبة اليمنى
- الكاحل الأيسر
- الكاحل الأيمن
النماذج#
تظهر هنا نماذج Ultralytics YOLO26 Pose المُدرَّبة مسبقًا. دُرِّبت نماذج Detect وSegment وPose مسبقًا على مجموعة بيانات COCO، ودُرِّبت نماذج Semantic مسبقًا على Cityscapes، بينما دُرِّبت نماذج Classify مسبقًا على مجموعة بيانات ImageNet.
تُنزل النماذج تلقائيًا من أحدث إصدار من Ultralytics عند الاستخدام الأول.
| النموذج | الحجم (بكسل) | mAPالوضعية 50-95(e2e) | mAPالوضعية 50(e2e) | السرعة CPU ONNX (مللي ثانية) | السرعة T4 TensorRT10 (مللي ثانية) | المعاملات (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-pose | 640 | 57.2 | 83.3 | 40.3 ± 0.5 | 1.8 ± 0.0 | 2.9 | 7.6 |
| YOLO26s-pose | 640 | 63.0 | 86.6 | 85.3 ± 0.9 | 2.7 ± 0.0 | 10.4 | 24.1 |
| YOLO26m-pose | 640 | 68.8 | 89.6 | 218.0 ± 1.5 | 5.0 ± 0.1 | 21.5 | 73.3 |
| YOLO26l-pose | 640 | 70.4 | 90.5 | 275.4 ± 2.4 | 6.5 ± 0.1 | 25.9 | 91.7 |
| YOLO26x-pose | 640 | 71.6 | 91.6 | 565.4 ± 3.0 | 12.2 ± 0.2 | 57.6 | 202.3 |
- قيم mAPval مخصصة لنموذج واحد وبمقياس واحد على مجموعة بيانات COCO Keypoints val2017.
أعد الإنتاج باستخدامyolo val pose data=coco-pose.yaml device=0 nms=False - السرعة هي المتوسط عبر صور COCO val باستخدام مثيل Amazon EC2 P4d.
يمكن إعادة الإنتاج باستخدامyolo val pose data=coco-pose.yaml batch=1 device=0|cpu nms=False - Params and FLOPs values are for fused models after Conv/BatchNorm folding and removal of the unused detection branch. Pretrained checkpoints retain the full training architecture and may show higher counts.
راجع مع معاينة YOLO27 غير المُصدرة للحصول على نتائج نقاط التباين الأولية لـ COCO.
التدريب#
درّب نموذج 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 باستخدام التدريب السحابي على Ultralytics Platform.
تنسيق مجموعة البيانات#
يمكن العثور على تنسيق مجموعات بيانات وضعيات YOLO بالتفصيل في دليل مجموعة البيانات. لتحويل مجموعة بيانات JSON موجودة لنقاط مفتاحية لـ COCO إلى تنسيق YOLO، استخدم دالة convert_coco المدمجة مع use_keypoints=True، كما هو موضح في دليل تحويل COCO إلى YOLO. يدعم ترميز منصة Ultralytics أيضاً تسميات الوضعيات مع قوالب هياكل عظمية مدمجة لتخطيطات الأشخاص، واليدين، والوجوه، والنقاط المفتاحية المخصصة.
لمهام تقدير الوضعية المخصصة، يمكنك أيضًا استكشاف مجموعات بيانات متخصصة مثل Tiger-Pose لتقدير وضعية الحيوانات، وHand Keypoints لتتبّع اليدين، وDog-Pose لتحليل وضعية الكلاب.
التحقق#
تحقق من دقة نموذج 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.keypoints | Keypoints | (N) | النقاط الأساسية. |
result.keypoints.data | torch.float32 | (N,K,2/3) | x,y بالإضافة إلى الرؤية أو الثقة الاختيارية. |
result.keypoints.xy | torch.float32 | (N,K,2) | النقاط الأساسية للبكسلات. |
result.keypoints.xyn | torch.float32 | (N,K,2) | النقاط الأساسية المُطبَّعة. |
result.boxes | Boxes | (N) | مربعات المثيلات. |
للاطلاع على حقول Results الخاصة بالمهمة عبر جميع المهام، راجع قسم نتائج التنبؤ حسب المهمة.
التصدير#
صدّر نموذج 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 | ✅ | - |
| TorchScript | torchscript | yolo26n-pose.torchscript | ✅ | imgsz، quantize، dynamic، nms، batch، device |
| ONNX | onnx | yolo26n-pose.onnx | ✅ | imgsz، quantize، dynamic، simplify، opset، nms، batch، data، fraction، device |
| OpenVINO | openvino | yolo26n-pose_openvino_model/ | ✅ | imgsz، quantize، dynamic، nms، batch، data، fraction، device |
| TensorRT | engine | yolo26n-pose.engine | ✅ | imgsz، quantize، dynamic، simplify، opset، workspace، nms، batch، data، fraction، device |
| CoreML | coreml | yolo26n-pose.mlpackage | ✅ | imgsz، dynamic، quantize، nms، batch، device |
| TF SavedModel | saved_model | yolo26n-pose_saved_model/ | ✅ | imgsz، keras، quantize، opset، nms، batch، data، fraction، device |
| TF GraphDef | pb | yolo26n-pose.pb | ❌ | imgsz، opset، batch، device |
| TF Edge TPU | edgetpu | yolo26n-pose_edgetpu.tflite | ✅ | imgsz، quantize، opset، data، fraction، device |
| PaddlePaddle | paddle | yolo26n-pose_paddle_model/ | ✅ | imgsz، batch، device |
| MNN | mnn | yolo26n-pose.mnn | ✅ | imgsz، batch، dynamic، quantize، simplify، opset، nms، device |
| NCNN | ncnn | yolo26n-pose_ncnn_model/ | ✅ | imgsz، quantize، batch، device |
| IMX500 | imx | yolo26n-pose_imx_model/ | ✅ | imgsz، quantize، data، fraction، nms، device |
| RKNN | rknn | yolo26n-pose_rknn_model/ | ✅ | imgsz، batch، name، quantize، simplify، opset، data، fraction، device |
| ExecuTorch | executorch | yolo26n-pose_executorch_model/ | ✅ | imgsz، batch، device |
| Axelera | axelera | yolo26n-pose_axelera_model/ | ✅ | imgsz، batch، quantize، data، fraction، device |
| DEEPX | deepx | yolo26n-pose_deepx_model/ | ✅ | imgsz، quantize، simplify، opset، data، optimize، device |
| Qualcomm QNN | qnn | yolo26n-pose_qnn.onnx | ✅ | imgsz، batch، name، quantize، simplify، opset، data، fraction، device |
| LiteRT | litert | yolo26n-pose.tflite | ✅ | imgsz، quantize، batch، data، fraction، device |
| Hailo | hailo | yolo26n-pose_hailo_model/ | ✅ | imgsz، name، quantize، data، fraction، simplify، conf، iou |
| Huawei Ascend | ascend | yolo26n-pose_ascend_model/ | ✅ | imgsz، batch، name، quantize، opset، simplify، nms |
| Apple Core AI | coreai | yolo26n-pose.aimodel | ✅ | imgsz، batch، quantize |
يفترض nms=None المخرجات الخام لـ NMS الخارجي. قم بتعيين nms=False لتحديد رأس متاح خالٍ من NMS؛ وتتراجع التنسيقات غير المدعومة إلى مسار إخراجها الأصلي. وتحدد مُدخلات nms أعلاه التنسيقات التي يمكنها تضمين NMS باستخدام nms=True.
راجع تفاصيل export الكاملة في صفحة التصدير.
الأسئلة الشائعة#
يتضمن تقدير الوضعية باستخدام Ultralytics YOLO26 تحديد نقاط معينة في الصورة تُعرف باسم النقاط الأساسية. وتمثل هذه النقاط عادةً المفاصل أو السمات المهمة الأخرى للكائن. ويتضمن الناتج إحداثيات
[x, y]ودرجات الثقة لكل نقطة. وقد صُممت نماذج YOLO26-pose خصيصًا لهذه المهمة، وتستخدم اللاحقة-pose، مثلyolo26n-pose.pt. وهذه النماذج مُدرَّبة مسبقًا على مجموعات بيانات مثل COCO keypoints، ويمكن استخدامها لمختلف مهام تقدير الوضعية. لمزيد من المعلومات، تفضل بزيارة صفحة تقدير الوضعية.يتضمن تدريب نموذج 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)للاطّلاع على التفاصيل الشاملة حول التدريب، راجع قسم Train. ويمكنك أيضًا استخدام التدريب السحابي على Ultralytics Platform لتدريب نماذج تقدير الوضعية المخصصة دون كتابة تعليمات برمجية.
يتضمن التحقق من نموذج 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لمزيد من المعلومات، تفضل بزيارة قسم Val.
نعم، يمكنك تصدير نموذج 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")راجع قسم Export لمزيد من التفاصيل. ويمكن نشر النماذج المُصدَّرة على الأجهزة الطرفية لتطبيقات الوقت الفعلي مثل تتبّع اللياقة البدنية وتحليل الرياضة أو الروبوتات.
تقدم Ultralytics YOLO26 نماذج Pose مُدرَّبة مسبقًا متنوعة، مثل YOLO26n-pose وYOLO26s-pose وYOLO26m-pose وغيرها. وتختلف هذه النماذج في الحجم والدقة (mAP) والسرعة. فعلى سبيل المثال، يحقق نموذج YOLO26n-pose قيمة mAPpose50-95 تبلغ 57.2 وقيمة mAPpose50 تبلغ 83.3. للحصول على القائمة الكاملة وتفاصيل الأداء، تفضل بزيارة قسم Models.