ER-Pose: Rethinking Keypoint-Driven Representation Learning for Real-Time Human Pose Estimation
Abstract
Single-stage multi-person pose estimation aims to jointly perform human localization and keypoint prediction within a unified framework, offering advantages in inference efficiency and architectural simplicity. Consequently, multi-scale real-time detection architectures, such as YOLO-like models, are widely adopted for real-time pose estimation. However, these approaches typically inherit a box-driven modeling paradigm from object detection, in which pose estimation is implicitly constrained by bounding-box supervision during training. This formulation introduces biases in sample assignment and feature representation, resulting in task misalignment and ultimately limiting pose estimation accuracy. In this work, we revisit box-driven single-stage pose estimation from a keypoint-driven perspective and identify semantic conflicts among parallel objectives as a key source of performance degradation. To address this issue, we propose a keypoint-driven learning paradigm that elevates pose estimation to a primary prediction objective. Specifically, we remove bounding-box prediction and redesign the prediction head to better accommodate the high-dimensional structured representations for pose estimation. We further introduce a keypoint-driven dynamic sample assignment strategy to align training objectives with pose evaluation metrics, enabling dense supervision during training and efficient NMS-free inference. In addition, we propose a smooth OKS-based loss function to stabilize optimization in regression-based pose estimation. Based on these designs, we develop a single-stage multi-person pose estimation framework, termed ER-Pose. On MS COCO and CrowdPose, ER-Pose-n achieves AP improvements of 3.2/6.7 without pre-training and 7.4/4.9 with pre-training respectively compared with the baseline YOLO-Pose. These improvements are achieved with fewer parameters and higher inference efficiency.
Figures & tables
| Method | Backbone | Input Size | Params (M) | Latency (ms) | AP | ||
| HigherHRNet [ 21 ] | HRNet-W32 [ 17 ] | 512 512 | 28.6 | 34.398 | 66.4 | 87.5 | 72.8 |
| CenterNet [ 45 ] | Hourglass-3x [ 23 ] | 512 512 | 194.9 | 45.855 | 63.0 | 86.8 | 69.6 |
| DEKR [ 51 ] | HRNet-W32 [ 17 ] | 512 512 | 29.6 | 33.935 | 68.0 | 86.7 | 74.5 |
| DEKR [ 51 ] | HRNet-W48 [ 17 ] | 640 512 | 65.7 | 36.585 | 71.0 | 88.3 | 77.4 |
| CID [ 47 ] | HRNet-W32 [ 17 ] | 512 512 | 29.4 | 45.678 | 68.9 | 88.5 | 76.6 |
| ED-Pose [ 42 ] | ResNet-50 [ 63 ] | 800 1333 | 50.6 | 171.971 | 69.8 | 90.2 | 77.2 |
| Input size | Latency(ms) | AP | AR | ||
| 640 | 10.587 | 57.1 | 84.6 | 62.0 | 62.4 |
| 800 | 11.844 | 59.5 | 86.2 | 65.0 | 64.5 |
| 960 | 13.412 | 60.9 | 86.8 | 68.8 | 65.9 |
| Box branch | Keypoint-driven Assignment | AP | AR | ||
| 50.4 | 79.5 | 54.2 | 57.8 | ||
| 54.7 | 83.2 | 58.8 | 60.2 | ||
| 57.1 | 84.6 | 62.0 | 62.4 |
| scale | features | AP | AR | ||||
| n | {P5} | 55.9 | 46.7 | 69.1 | 60.4 | 51.2 | 73.2 |
| {P4, P5} | 57.1 | 49.1 | 68.8 | 62.4 | 54.9 | 73.0 | |
| {P3, P4, P5} | 56.4 | 47.5 | 68.9 | 61.6 | 53.4 | 73.0 | |
| s | {P5} | 64.0 | 56.1 | 75.9 | 68.4 | 60.5 | 79.7 |
| {P4, P5} | 64.0 | 58.9 | 72.1 | 68.6 | 63.4 | 75.9 | |
| {P3, P4, P5} | 65.7 | 58.7 | 75.9 | 70.5 | 63.9 | 79.7 |
| scale | features |
| n | {P4, P5} |
| s | {P3, P4, P5} |
| m | {P3, P4, P5} |
| l | {P3, P4, P5} |
| IoU thr. | ER-Pose(OKS-IoU) | Box-driven(IoU) | ||||
| AP | AR | NMS(ms) | AP | AR | NMS(ms) | |
| 0.4 | 57.1 | 61.5 | 7.434 | 49.9 | 56.3 | 0.978 |
| 0.5 | 57.0 | 61.7 | 8.769 | 50.1 | 56.7 | 1.085 |
| 0.6 | 56.9 | 61.8 | 9.746 | 50.3 | 57.1 | 1.034 |
| 0.7 | 56.6 | 61.9 | 12.199 | 50.4 | 57.4 | 1.040 |
| 0.8 | 56.2 | 62.2 | 13.791 | 50.4 | 57.8 | 0.951 |
| model | AP | AR | latency(ms) | ||
| SAH | 53.1 | 81.8 | 56.7 | 58.8 | 10.587 |
| MAH+NMS(OKS) | 56.6 | 83.4 | 61.4 | 60.8 | 13.544 |
| MAH+SAH | 57.1 | 84.6 | 62.0 | 62.4 | 10.721 |
| AP | AR | ||||
| 0.5 | 0 | 50.7 | 78.9 | 54.6 | 56.7 |
| 0.5 | 2 | 46.2 | 80.6 | 46.4 | 52.0 |
| 0.5 | 4 | 54.8 | 82.9 | 58.8 | 60.4 |
| 0.5 | 6 | 57.1 | 84.4 | 62.4 | 62.2 |
| 0.5 | 8 | 56.7 | 84.4 | 61.2 | 62.1 |
| 1.0 | 0 | 48.7 | 77.7 | 52.2 | 54.1 |
| Loss | ER-Pose-n | ER-Pose-s | ER-Pose-m | |||
| AP | AR | AP | AR | AP | AR | |
| Lap | 55.7 | 60.6 | 62.2 | 67.2 | 68.9 | 73.0 |
| Gau(OKS) | 56.1 | 61.4 | 65.3 | 70.1 | 69.1 | 73.3 |
| SOKS | 57.1 | 61.6 | 65.8 | 70.2 | 69.7 | 73.8 |
| model | Backbone | Input size | Params(M) | AP | |||||
| SimpleBaseline [ 22 ] | ResNet-101 | 256 192 | 34.0 | 60.8 | 81.4 | 65.7 | 71.4 | 61.2 | 51.2 |
| DEKR [ 22 ] | HRNet-W32 | 512 512 | 65.7 | 67.3 | 86.4 | 72.2 | 74.6 | 68.1 | 58.7 |
| CID [ 47 ] | HRNet-W32 | 512 512 | 29.4 | 71.2 | 89.8 | 76.7 | 77.9 | 71.9 | 63.8 |
| HigherHRNet [ 21 ] | HRNet-W32 | 512 512 | 63.8 | 65.9 | 86.4 | 70.6 | 73.3 | 66.5 | 57.9 |
| YOLO-Pose-s [ 6 ] | CSPDarknet | 640 640 | 11.6 | 61.9 | 87.6 | 67.8 | 69.3 | 62.5 | 53.9 |
| YOLO-Pose-m [ 6 ] | CSPDarknet | 640 640 | 26.4 | 66.6 | 89.4 | 73.7 | 73.8 | 67.3 | 58.8 |
| Setting | Dataset | YOLO-Pose-n | ER-POSE-n | |
| From scratch | COCO | 47.5 | 50.7 | +3.2 |
| Pretrained | COCO | 50.4 | 57.1 | +6.7 |
| From scratch | CrowdPose | 45.5 | 52.9 | +7.4 |
| Pretrained | CrowdPose | 53.4 | 58.3 | +4.9 |
| Pretrained(COCO) | OCHuman | 30.7 | 37.1 | +6.4 |
Human Pose Estimation
Human pose estimation recovers people’s body keypoints, 3D skeletons, or meshes from images, video, and other sensor data.
See all 79 papers