تقدير الوضعية باستخدام Ultralytics YOLO#
تقدير الوضعية مهمة تتضمن تحديد مواقع نقاط محددة في الصورة، يُشار إليها عادةً بالنقاط المفتاحية. قد تمثل النقاط المفتاحية أجزاء مختلفة من الكائن، مثل المفاصل أو المعالم أو السمات المميزة الأخرى. وعادةً ما تُمثَّل مواقع النقاط المفتاحية بمجموعة من إحداثيات ثنائية الأبعاد [x, y]، مع إمكانية إرفاق علامة رؤية [x, y, visible].
تتألف مخرجات نموذج تقدير الوضعية من مجموعة نقاط تمثل النقاط المفتاحية على كائن في الصورة، وعادةً ما تتضمن درجات الثقة لكل نقطة. ويُعد تقدير الوضعية خيارًا مناسبًا عند الحاجة إلى تحديد أجزاء معينة من كائن في مشهد، ومواقعها بالنسبة بعضها إلى بعض.
شاهد: كيفية تنفيذ تقدير الوضعية في الوقت الفعلي باستخدام Ultralytics YOLO26 | التتبع واستخراج النقاط المفتاحية 🕺
تستخدم نماذج YOLO26 Pose اللاحقة -pose، أي yolo26n-pose.pt، وتُدرَّب مسبقًا على النقاط المفتاحية COCO.
النماذج#
تظهر أدناه نماذج YOLO26 Pose المدرّبة مسبقًا على مجموعة بيانات النقاط المفتاحية COCO.
تُنزّل النماذج تلقائيًا من أحدث إصدار من Ultralytics عند استخدامها لأول مرة.
| النموذج | الحجم (بكسل) | mAPالوضعيات 50-95(e2e) | mAPالوضعيات 50(e2e) | السرعة CPU ONNX (مللي ثانية) | السرعة T4 TensorRT10 (ms) | المعاملات (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 pose val data=coco-pose.yaml device=0 nms=False - السرعة هي متوسط القياس على صور COCO val باستخدام ONNX على CPU وTensorRT10 على وحدة معالجة الرسومات NVIDIA T4.
أعِد إنتاج النتائج باستخدامyolo pose val data=coco-pose.yaml batch=1 device=0|cpu nms=False. - قيم المعلمات وFLOPs خاصة بالنماذج المدمجة بعد طي Conv/BatchNorm وإزالة فرع الاكتشاف غير المستخدم. تحتفظ نقاط التحقق المدرّبة مسبقًا ببنية التدريب الكاملة، وقد تُظهر أعدادًا أعلى.
اطّلع على معاينة YOLO27 غير المُصدرة لمعرفة النتائج الأولية للنقاط المفتاحية COCO.
التدريب#
درّب YOLO26n-pose على مجموعة بيانات COCO8-pose لمدة 100 حقبة وبحجم صورة 640. للاطلاع على القائمة الكاملة بالوسيطات المتاحة، راجع صفحة الإعدادات.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n-pose.yaml") # إنشاء نموذج جديد من YAML
model = YOLO("yolo26n-pose.pt") # تحميل نموذج مدرّب مسبقًا (موصى به للتدريب)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt") # الإنشاء من YAML ونقل الأوزان
# تدريب النموذج
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)راجع التفاصيل الكاملة لوضع train في صفحة التدريب. ويمكن أيضًا تدريب نماذج تقدير الوضعية باستخدام التدريب السحابي على منصة Ultralytics.
تنسيق مجموعة البيانات#
للاطلاع على التفاصيل المتعلقة بتنسيق مجموعة بيانات YOLO للوضعيات، راجع دليل مجموعة البيانات. لتحويل مجموعة بيانات JSON موجودة من النقاط المفتاحية COCO إلى تنسيق YOLO، استخدم الدالة المضمّنة convert_coco مع use_keypoints=True، وفقًا لما هو موضح في دليل التحويل من COCO إلى YOLO. كما تدعم التعليقات التوضيحية على منصة Ultralytics تسميات الوضعيات، باستخدام قوالب هيكلية مضمّنة للأشخاص والأيدي والوجوه وتخطيطات النقاط المفتاحية المخصصة.
لمهمات تقدير الوضعية المخصصة، يمكنك أيضًا استكشاف مجموعات بيانات متخصصة مثل Tiger-Pose لتقدير وضعيات الحيوانات، والنقاط المفتاحية لليد لتتبّع اليد، أو Dog-Pose لتحليل وضعيات الكلاب.
التحقق#
تحقّق من دقة نموذج YOLO26n-pose المدرَّب. لا حاجة إلى تمرير وسيطات، إذ يحتفظ model بإعدادات التدريب data ووسيطاته كسمات للنموذج: يتحقق path/to/best.pt الوارد في مثال التدريب من صحة النموذج على COCO8-pose. تسجل الأوزان الرسمية مسار مجموعة بيانات التدريب غير الموجود على جهازك، لذا تعود إلى coco8-pose.yaml الافتراضي للمهمة مع إصدار تحذير. مرّر data للتحقق من الصحة على مجموعة بيانات أخرى.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n-pose.pt") # حمّل نموذجًا رسميًا
model = YOLO("path/to/best.pt") # تحميل نموذج مخصص
# تحقّق من النموذج
metrics = model.val() # لا حاجة إلى وسيطات؛ إذ تُحفظ مجموعة البيانات والإعدادات
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # قائمة تتضمن mAP50-95 لكل فئة
metrics.box.image_metrics # قاموس المقاييس لكل صورة للمربعات، يتضمن الدقة والاستدعاء وF1 وTP وFP وFN
metrics.pose.map # map50-95(P)
metrics.pose.map50 # map50(P)
metrics.pose.map75 # map75(P)
metrics.pose.maps # قائمة تتضمن mAP50-95(P) لكل فئة
metrics.pose.image_metrics # قاموس المقاييس لكل صورة للوضعية، يتضمن الدقة والاستدعاء وF1 وTP وFP وFNالتنبؤ#
استخدم نموذج YOLO26n-pose مدرَّبًا لإجراء تنبؤات على الصور.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n-pose.pt") # حمّل نموذجًا رسميًا
model = YOLO("path/to/best.pt") # تحميل نموذج مخصص
# أجرِ التنبؤ باستخدام النموذج
results = model("https://ultralytics.com/images/bus.jpg") # أجرِ التنبؤ على صورة
# الوصول إلى النتائج
for result in results:
xy = result.keypoints.xy # إحداثيات x وy
xyn = result.keypoints.xyn # normalized
kpts = result.keypoints.data # x وy والرؤية (إن توفرت)اطّلع على التفاصيل الكاملة لوضع 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 الخاصة بكل مهمة، راجع قسم نتائج التنبؤ حسب المهمة.
خريطة فهارس النقاط المفتاحية#
تتنبأ نماذج YOLO26 Pose الافتراضية بالنقاط المفتاحية الـ17 في COCO، لذا يكون الفهرس k في result.keypoints.xy[:, k] كما يلي:
- الأنف
- العين اليسرى
- العين اليمنى
- الأذن اليسرى
- الأذن اليمنى
- الكتف الأيسر
- الكتف الأيمن
- المرفق الأيسر
- المرفق الأيمن
- المعصم الأيسر
- المعصم الأيمن
- الورك الأيسر
- الورك الأيمن
- الركبة اليسرى
- الركبة اليمنى
- الكاحل الأيسر
- الكاحل الأيمن
التصدير#
صدّر نموذج YOLO26n-pose إلى تنسيق آخر مثل ONNX أو CoreML وغيرها.
from ultralytics import YOLO
# تحميل نموذج
model = YOLO("yolo26n-pose.pt") # حمّل نموذجًا رسميًا
model = YOLO("path/to/best.pt") # تحميل نموذج مخصص
# صدّر النموذج
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 |
| Apple Core AI | coreai | yolo26n-pose.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n-pose_saved_model/ | ✅ | imgsz, 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 |
| LiteRT | litert | yolo26n-pose.tflite | ✅ | imgsz, quantize, batch, 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 |
| Hailo | hailo | yolo26n-pose_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n-pose_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n-pose_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
يعتمد nms=None على المخرجات الأولية لإجراء NMS خارجي. اضبط nms=False لتحديد رأس متاح خالٍ من NMS؛ وتعود التنسيقات غير المدعومة إلى مسار المخرجات الأصلي الخاص بها. تحدد إدخالات nms أعلاه التنسيقات التي يمكنها تضمين NMS باستخدام nms=True.
اطّلع على التفاصيل الكاملة لـexport في صفحة التصدير.
الأسئلة الشائعة#
يتضمن تقدير الوضعية باستخدام Ultralytics YOLO26 تحديد نقاط معينة في الصورة تُعرف باسم النقاط المفتاحية. وتمثل هذه النقاط عادةً المفاصل أو السمات المهمة الأخرى للكائن. تتضمن المخرجات إحداثيات
[x, y]ودرجات الثقة لكل نقطة. صُممت نماذج YOLO26-pose خصيصًا لهذه المهمة، وتستخدم اللاحقة-pose، مثلyolo26n-pose.pt. وتُدرَّب هذه النماذج مسبقًا على مجموعات بيانات مثل النقاط المفتاحية COCO، ويمكن استخدامها في مهام تقدير وضعية متنوعة. لمزيد من المعلومات، تفضّل بزيارة صفحة تقدير الوضعية.يتضمن تدريب نموذج YOLO26-pose على مجموعة بيانات مخصصة تحميل نموذج، سواء أكان نموذجًا جديدًا معرّفًا بملف YAML أم نموذجًا مدرَّبًا مسبقًا. وبعد ذلك، يمكنك بدء عملية التدريب باستخدام مجموعة البيانات والوسيطات التي تحددها.
مثالfrom ultralytics import YOLO # تحميل نموذج model = YOLO("yolo26n-pose.yaml") # إنشاء نموذج جديد من YAML model = YOLO("yolo26n-pose.pt") # تحميل نموذج مدرّب مسبقًا (موصى به للتدريب) # تدريب النموذج results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)للاطلاع على تفاصيل التدريب الشاملة، راجع قسم التدريب. ويمكنك أيضًا استخدام التدريب السحابي على منصة Ultralytics لتدريب نماذج تقدير الوضعية المخصصة دون كتابة أي شيفرة.
يتضمن التحقق من صحة نموذج YOLO26-pose تقييم دقته باستخدام معلمات مجموعة البيانات نفسها التي احتُفظ بها أثناء التدريب. إليك مثالًا:
مثالfrom ultralytics import YOLO # تحميل نموذج model = YOLO("yolo26n-pose.pt") # حمّل نموذجًا رسميًا model = YOLO("path/to/best.pt") # تحميل نموذج مخصص # تحقّق من النموذج metrics = model.val() # لا حاجة إلى وسيطات؛ إذ تُحفظ مجموعة البيانات والإعداداتلمزيد من المعلومات، تفضّل بزيارة قسم التحقق من الصحة.
نعم، يمكنك تصدير نموذج YOLO26-pose إلى تنسيقات متنوعة مثل ONNX وCoreML وTensorRT وغيرها. ويمكن إجراء ذلك باستخدام Python أو واجهة سطر الأوامر (CLI).
مثالfrom ultralytics import YOLO # تحميل نموذج model = YOLO("yolo26n-pose.pt") # حمّل نموذجًا رسميًا model = YOLO("path/to/best.pt") # تحميل نموذج مخصص # صدّر النموذج model.export(format="onnx")راجع قسم التصدير لمزيد من التفاصيل. ويمكن نشر النماذج المُصدَّرة على الأجهزة الطرفية لاستخدامها في تطبيقات الوقت الفعلي، مثل تتبّع اللياقة البدنية وتحليل الرياضة أو الروبوتات.
تقدم Ultralytics نماذج وضعيات متنوعة مدرّبة مسبقًا، مثل YOLO26n-pose وYOLO26s-pose وYOLO26m-pose وغيرها. وتختلف هذه النماذج في الحجم والدقة (mAP) والسرعة. للاطلاع على القائمة الكاملة التي تتضمن mAP للنقاط المفتاحية COCO والسرعة والمعلمات وFLOPs لكل نموذج، راجع قسم النماذج.