Skip to content

feat: add CIGPose pose estimation models#260

Merged
jamjamjon merged 1 commit into
jamjamjon:mainfrom
wep21:cigpose
Jun 7, 2026
Merged

feat: add CIGPose pose estimation models#260
jamjamjon merged 1 commit into
jamjamjon:mainfrom
wep21:cigpose

Conversation

@wep21

@wep21 wep21 commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

What

Adds support for CIGPose, SimCC-based human pose estimation models exported to ONNX. Since the model architecture shares its I/O contract with RTMPose, CIGPose is a type alias of RTMPose with its own model configs.

Model Variants

Config Keypoints Input Scale
cigpose_17_l 17 (COCO body) 256x192 L
cigpose_17_l_384 17 (COCO body) 384x288 L
cigpose_133_l 133 (COCO-WholeBody) 256x192 L
cigpose_133_l_384 133 (COCO-WholeBody) 384x288 L
cigpose_133_x_384 133 (COCO-WholeBody) 384x288 X

All variants are available in FP32 and FP16, hosted at wep21/assets cigpose release.

Changes

  • src/models/vision/cigpose/: model configs (CIGPose = RTMPose alias + Config::cigpose_* constructors)
  • examples/pose-estimation/cigpose.rs + main.rs: cigpose subcommand with --scale, --is-coco, --hires, --dtype, --device options
  • examples/pose-estimation/README.md, docs/model-zoo/pose.md: docs

Usage

cargo run -F cuda-full --example pose-estimation -- cigpose --dtype fp16 --device cuda:0 --processor-device cuda:0

Inference results for all variants will be posted as a follow-up comment.

🤖 Generated with Claude Code

Signed-off-by: wep21 <[email protected]>
@wep21

wep21 commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

Inference Results (all variants, CUDA)

Environment: NVIDIA GeForce RTX 4070 Laptop GPU (8 GB), driver 595.71.05, CUDA EP via ort v2.0.0-rc.12
Source: ./assets/bus.jpg (YOLO v26-n detector → 4 persons → batched pose estimation)

Command

cargo run -r -F cuda-full --example pose-estimation -- cigpose \
  --scale {l,x} --is-coco {true,false} --hires {true,false} \
  --dtype {fp32,fp16} --device cuda:0 --processor-device cuda:0

Performance

Variant Flags Dtype Preprocess Inference Postprocess
cigpose-17-l --scale l --is-coco true --hires false fp32 451.3µs 4.453ms 28.7µs
cigpose-17-l fp16 364.5µs 2.717ms 30.7µs
cigpose-17-l-384 --scale l --is-coco true --hires true fp32 455.3µs 5.064ms 39.3µs
cigpose-17-l-384 fp16 567.2µs 3.461ms 39.6µs
cigpose-133-l --scale l --is-coco false --hires false fp32 375.2µs 4.419ms 192.0µs
cigpose-133-l fp16 446.2µs 3.278ms 190.2µs
cigpose-133-l-384 --scale l --is-coco false --hires true fp32 528.3µs 5.763ms 291.9µs
cigpose-133-l-384 fp16 705.4µs 3.932ms 271.7µs
cigpose-133-x-384 --scale x --is-coco false --hires true fp32 631.6µs 10.338ms 301.1µs
cigpose-133-x-384 fp16 685.2µs 6.002ms 317.7µs

Times are per-batch averages over the 4 detected persons (3 dry-runs before timing). fp16 gives a ~1.5–1.7× inference speedup across all variants.

All 10 runs (5 variants × fp32/fp16) completed successfully.

Note: the fp16 ONNX assets were generated with NVIDIA TensorRT Model Optimizer's autocast (python -m modelopt.onnx.autocast --low_precision_type fp16 --keep_io_types --nodes_to_exclude "/gcn/.*"). The GCN head is kept in fp32 because ORT's CUDA BatchNorm<MLFloat16> kernel requires fp32 scale/bias/mean/var (standalone BatchNormalization nodes with fp16 params abort via a GSL contract violation), and the If subgraphs in the GCN don't survive fp16 type inference.

Annotated Outputs

Variant fp32 fp16
cigpose-17-l cigpose-17-l fp32 cigpose-17-l fp16
cigpose-17-l-384 cigpose-17-l-384 fp32 cigpose-17-l-384 fp16
cigpose-133-l cigpose-133-l fp32 cigpose-133-l fp16
cigpose-133-l-384 cigpose-133-l-384 fp32 cigpose-133-l-384 fp16
cigpose-133-x-384 cigpose-133-x-384 fp32 cigpose-133-x-384 fp16

🤖 Generated with Claude Code

@wep21

wep21 commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

@jamjamjon Hi, I added a new model from https://github.com/53mins/CIGPose. (onnx models come from https://github.com/namas191297/cigpose-onnx). Could you check these model are applicable for usls?
CI failure seems to be unrelated to this change.

@jamjamjon jamjamjon merged commit 67a07a0 into jamjamjon:main Jun 7, 2026
37 of 38 checks passed
@jamjamjon

Copy link
Copy Markdown
Owner

@jamjamjon Hi, I added a new model from https://github.com/53mins/CIGPose. (onnx models come from https://github.com/namas191297/cigpose-onnx). Could you check these model are applicable for usls? CI failure seems to be unrelated to this change.

@wep21 This is amazing! CigPose looks like the new SOTA model. Thank you so much for the contribution and the PR — it’s now merged!

@wep21 wep21 deleted the cigpose branch June 7, 2026 11:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants