Hand keypoints (RTMPose-M, 256, 21 joints)

This is an RTMPose-M top-down model. It predicts 21 hand keypoints in MediaPipe joint order from a hand box. OpenGraph Labs uses it after the bare-hand detector in its NVIDIA V2D Challenge Track 3 pipeline (og_v2d.hands.front_end).

Architecture MMPose TopdownPoseEstimator: CSPNeXt-P5 backbone (deepen 0.67, widen 0.75) and an RTMCCHead with 21 keypoints (GAU 256, s 128)
Codec SimCCLabel, input 256 x 256, sigma 5.66, split ratio 2.0
Input The detector box is expanded by 25 % per side, then GetBBoxCenterScale (padding 1.25) and TopdownAffine map it to 256 x 256. Mean (123.675, 116.28, 103.53), std (58.395, 57.12, 57.375), BGR to RGB. Flip test is on
Output 21 keypoints (wrist, then thumb, index, middle, ring and little finger, each base to tip), with scores clipped to [0, 1]
Runtime used mmpose 1.3.2, mmdet 3.2.0, mmcv 2.1.0, torch 2.1.2
File rtmpose_m_hand21_256.pth: 55,334,196 bytes, sha256 9fcb071d40ae2bd6ec53d99ddbbf2d43e7f2b79e03921d84dcbe99c295fcf91e

This is a weights-only export of the training checkpoint (sha256 76df865f48119d3a5a88cbf9ac3a54d2e64d865fc453fa4bc6b2a68e3535c9ab) that produced the challenge submission. It keeps state_dict and meta.dataset_meta, which are the parts that MMPose's init_model reads, and both are bit-identical to the original. Training-run metadata, logs and the EMA copy were removed.

Training data

We trained the model on OpenGraph Labs' internal hand keypoint dataset. That dataset is not released.

Evaluation

On our internal validation set, measured end to end from detector boxes:

Metric Value
PCK@0.1 0.916
NME 0.052
Median endpoint error 9.4 px

Usage

For inference, use og_v2d.hands.front_end in the og-v2d-track3 repository. It ships the matching MMPose config.

License

Apache-2.0.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support