PG-HandPose - a computer-vision model on Pictograph

Open in task arch OKS license

View on Pictograph · Pictograph Research · Keypoint Detection · RF-DETR Keypoint Preview · FP32 · Creative Commons Attribution-NonCommercial-ShareAlike 4.0

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. The ONNX weights are in this repo; run them with the Pictograph SDK (below) or open the model on Pictograph to test it in-browser, call the hosted API, or deploy it as an always-on endpoint.

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
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

The weights ship as ONNX (pg-handpose.onnx) with a config.json. The Pictograph SDK applies the model's exact pre/post-processing for you:

Pictograph SDK

pip install "pictograph[inference]"
from huggingface_hub import hf_hub_download
from pictograph import load_model, KeypointModel

onnx = hf_hub_download("pictograph/pg-handpose", "pg-handpose.onnx")
config = hf_hub_download("pictograph/pg-handpose", "config.json")

model: KeypointModel = load_model(onnx, config, task="keypoint_detection")
result = model.predict("photo.jpg")   # KeypointResult
for obj in result.instances:           # one list of joints per object
    print(f"instance {obj[0].instance_id}: {len(obj)} joints")
    for j in obj:                      # j.name IS the joint class
        print(f"  {j.name} ({j.keypoint.x:.0f},{j.keypoint.y:.0f}) {j.confidence:.2f}")

Example output (illustrative; your exact values depend on the image):

instance 1: 21 joints
  wrist (512,143) 0.97
  thumb_cmc (498,131) 0.96
instance 2: 21 joints
  wrist (188,160) 0.93
Raw ONNX Runtime (no SDK)
from huggingface_hub import hf_hub_download
import onnxruntime as ort

onnx = hf_hub_download("pictograph/pg-handpose", "pg-handpose.onnx")
sess = ort.InferenceSession(onnx, providers=["CPUExecutionProvider"])
inp = sess.get_inputs()[0]
print(inp.name, inp.shape)   # NCHW float32; input size + normalization in config.json
# outputs = sess.run(None, {inp.name: preprocessed_batch})
# Decoding is architecture-specific; the Pictograph SDK (above) does it for you.

License

Released under Creative Commons Attribution-NonCommercial-ShareAlike 4.0.

Citation

This model uses the RF-DETR Keypoint Preview architecture:

@inproceedings{robinson2026rfdetr,
  title     = {RF-DETR: Real-Time Detection Transformer},
  author    = {Robinson, Isaac and Robicheaux, Peter and Popov, Matvei and Ramanan, Deva and Peri, Neehar},
  booktitle = {International Conference on Learning Representations (ICLR)},
  year      = {2026},
  url       = {https://arxiv.org/abs/2511.09554}
}

Trained and published with Pictograph - annotate, train, and deploy from one API.

Downloads last month
22
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train pictograph/pg-handpose

Paper for pictograph/pg-handpose

Evaluation results