Model Card
PG-HandPose
A keypoint detection model (RF-DETR Keypoint Preview), locating each hand and its 21 keypoints, scoring 81.8% OKS.
Pictograph Research · Keypoint Detection · RF-DETR Keypoint Preview · FP32 · CC-BY-NC-SA-4.0 · Public
Overview
This is a keypoint detection model built on RF-DETR Keypoint Preview, trained on the Hand Keypoints dataset. It expects 576x576 input and runs in FP32 precision. It finds each hand and its 21 keypoints: the Skeleton section lists them in output order, with the joints each connects to.
Performance
Headline: 81.8% OKS.
| Metric | Value |
|---|---|
| OKS | 81.8% |
| OKS@50 | 92.7% |
| OKS@75 | 84.0% |
| Recall | 85.1% |
OKS is COCO's keypoint AP: the average precision over object keypoint similarity (OKS) thresholds 0.50 to 0.95. OKS@50 and OKS@75 are the AP at one threshold; Recall is the average recall over 0.50 to 0.95.
Skeleton
Each object the model finds is one instance: its keypoints share an instance_id, are named for their joint and carry their own confidence. The keypoint index is the model's output order.
| # | Keypoint | Connects to |
|---|---|---|
| 0 | wrist | thumb_cmc, index_finger_mcp, pinky_mcp |
| 1 | thumb_cmc | wrist, thumb_mcp |
| 2 | thumb_mcp | thumb_cmc, thumb_ip |
| 3 | thumb_ip | thumb_mcp, thumb_tip |
| 4 | thumb_tip | thumb_ip |
| 5 | index_finger_mcp | wrist, index_finger_pip, middle_finger_mcp |
| 6 | index_finger_pip | index_finger_mcp, index_finger_dip |
| 7 | index_finger_dip | index_finger_pip, index_finger_tip |
| 8 | index_finger_tip | index_finger_dip |
| 9 | middle_finger_mcp | index_finger_mcp, middle_finger_pip, ring_finger_mcp |
| 10 | middle_finger_pip | middle_finger_mcp, middle_finger_dip |
| 11 | middle_finger_dip | middle_finger_pip, middle_finger_tip |
| 12 | middle_finger_tip | middle_finger_dip |
| 13 | ring_finger_mcp | middle_finger_mcp, ring_finger_pip, pinky_mcp |
| 14 | ring_finger_pip | ring_finger_mcp, ring_finger_dip |
| 15 | ring_finger_dip | ring_finger_pip, ring_finger_tip |
| 16 | ring_finger_tip | ring_finger_dip |
| 17 | pinky_mcp | ring_finger_mcp, wrist, pinky_pip |
| 18 | pinky_pip | pinky_mcp, pinky_dip |
| 19 | pinky_dip | pinky_pip, pinky_tip |
| 20 | pinky_tip | pinky_dip |
Training
| Setting | Value |
|---|---|
| Base dataset | Hand Keypoints |
| Export | Hand Keypoints-base |
| Dataset size | 26,677 images |
| Input size | 576x576 |
| Epochs | 12 |
| Batch size | 4 |
| Learning rate | 0.0001 |
| Model size | preview |
| Precision | FP32 |
| Version | 1.0.0 |
Use this model
Run inference with the Pictograph SDK:
from pictograph import Client, get_model, KeypointModel, KeypointResult
client = Client(api_key="pk_live_...") # Settings -> API Keys
# Downloads + caches the weights on first use
model: KeypointModel = get_model(
name="PG-HandPose",
task="keypoint_detection",
format="onnx",
precision="fp32",
device="cpu",
client=client,
)
result: KeypointResult = model.predict(image="photo.jpg")
print(result)
# Fully offline (no API key) once you have the weights + config.json
from pictograph import load_model, KeypointModel, KeypointResult
model: KeypointModel = load_model(
"/path/to/weights.onnx",
"/path/to/config.json",
task="keypoint_detection",
format="onnx",
)
result: KeypointResult = model.predict(image="photo.jpg")
- Full inference guide: local inference docs.
- REST + CLI: models API reference.
- Deploy it as an always-on endpoint: deployments.
License
Released under CC-BY-NC-SA-4.0.
Download the model files
Exports to ONNX. Sign in to download the weights and config, or pull it from the SDK with the Use Model snippet.
Sign in to downloadAllows use and adaptation with credit, but not for commercial purposes, and adaptations must be shared under the same license.
Read the full Creative Commons Attribution-NonCommercial-ShareAlike 4.0 →Build your first vision tool
$5 of free compute every month. No card required.