Quantitative Evaluations: 2D Pose Estimation

September 25, 2024 ยท View on GitHub

This guide outlines the process to evaluate Sapiens-Pose checkpoints on two datasets.\

  • COCO-WholeBody: 133 keypoints (17 kps body, 6 kps feet, 68 kps face, 42 kps hands).
  • COCO: 17 keypoints

๐Ÿ“‚ 1. Data Preparation

  • Set $DATA_ROOT as your training data root directory.
  • Download the val2017 images and 17 kps annotations from COCO.
  • Download the 133 kps annotations from COCO-WholeBody.
  • Unzip the images and annotations as subfolders to $DATA_ROOT.
  • Additionally, download the bounding-box detection on the val2017 set from COCO_val2017_detections_AP_H_70_person.json and place it under $DATA_ROOT/person_detection_results.

The data directory structure is as follows:

  $DATA_ROOT/
  โ”‚   โ””โ”€โ”€ val2017
  โ”‚   โ”‚   โ””โ”€โ”€ 000000000139.jpg
  โ”‚   โ”‚   โ””โ”€โ”€ 000000000285.jpg
  โ”‚   โ”‚   โ””โ”€โ”€ 000000000632.jpg
  โ”‚   โ””โ”€โ”€ annotations
  โ”‚   โ”‚   โ””โ”€โ”€ person_keypoints_train2017.json
  โ”‚   โ”‚   โ””โ”€โ”€ person_keypoints_val2017.json
  โ”‚   โ”‚   โ””โ”€โ”€ coco_wholebody_train_v1.0.json
  โ”‚   โ”‚   โ””โ”€โ”€ coco_wholebody_val_v1.0.json
  โ”‚   โ””โ”€โ”€ person_detection_results
  โ”‚   โ”‚   โ””โ”€โ”€ COCO_val2017_detections_AP_H_70_person.json

โš™๏ธ 2. Configuration Update

Let $DATASET be either coco-wholebody for 133 kps or coco for 17 kps.
Edit $SAPIENS_ROOT/pose/configs/sapiens_pose/$DATASET/sapiens_1b-210e_$DATASET-1024x768.py:

  1. Update val_dataloader.dataset.data_root to your $DATA_ROOT. eg. data/coco.
  2. Update val_evaluator.ann_file to also point to validation annotation file under $DATA_ROOT.
  3. Update bbox_file to point to the bounding box detection file under $DATA_ROOT.

๐Ÿ‹๏ธ 3. Evaluation

The following guide is for Sapiens-1B. You can find other backbones to evaluate under pose_configs_133 and pose_configs_17.
The testing scripts are under: $SAPIENS_ROOT/pose/scripts/test/$DATASET/sapiens_1b
Make sure you have activated the sapiens python conda environment.

A. ๐Ÿš€ Single-node Testing

Use $SAPIENS_ROOT/pose/scripts/test/$DATASET/sapiens_1b/node.sh.

Key variables:

  • CHECKPOINT: Absolute path to your checkpoint
  • DEVICES: GPU IDs (e.g., "0,1,2,3,4,5,6,7")
  • TEST_BATCH_SIZE_PER_GPU: Default 32
  • OUTPUT_DIR: Checkpoint and log directory
  • mode=multi-gpu: Launch multi-gpu testing with multiple workers for dataloading.
  • mode=debug: (Optional) To debug. Launched single gpu dry run, with single worker for dataloading. Supports interactive debugging with pdb/ipdb.

Launch:

cd $SAPIENS_ROOT/pose/scripts/test/$DATASET/sapiens_1b
./node.sh

B. ๐ŸŒ Multi-node Testing (Slurm)

Use $SAPIENS_ROOT/pose/scripts/test/$DATASET/sapiens_1b/slurm.sh

Additional variables:

  • CONDA_ENV: Path to conda environment
  • NUM_NODES: Number of nodes (default 4, 8 GPUs per node)

Launch:

cd $SAPIENS_ROOT/pose/scripts/test/$DATASET/sapiens_1b
./slurm.sh

๐Ÿ“ˆ 4. Results

Sapiens achieve state-of-the-art results for keypoint estimation on both datasets. Below we compare them with existing methods.

COCO-WholeBody - 133 Keypoints

PWC

ModelInput SizeBody APBody ARFeet APFeet ARFace APFace ARHand APHand ARWhole APWhole ARConfigCkpt
DeepPose384 ร— 28844.456.836.853.749.366.323.541.033.548.4--
SimpleBaseline384 ร— 28866.674.763.576.373.281.253.764.757.367.1--
HRNet384 ร— 28870.177.358.669.272.778.351.660.458.667.4--
ZoomNAS384 ร— 28874.080.761.771.888.993.062.574.065.474.4--
VitPose+-L256 ร— 19275.3-77.1-63.0-54.2-60.6---
VitPose+-H256 ร— 19275.9-77.9-63.6-54.7-61.2---
RTMPose-x384 ร— 28871.478.469.281.088.892.259.068.565.373.3--
DWPose-m256 ร— 19268.576.163.677.282.888.152.763.460.669.5--
DWPose-l384 ร— 28872.278.970.481.788.792.162.171.066.574.3--
Sapiens-0.3B (Ours)1024 ร— 76866.473.467.378.487.191.258.167.162.069.4configckpt
Sapiens-0.6B (Ours)1024 ร— 76874.380.279.487.089.592.965.474.069.5 (+3.0)76.3 (+2.0)configckpt
Sapiens-1B (Ours)1024 ร— 76877.482.983.089.890.793.669.277.172.7 (+6.2)79.2 (+4.9)configckpt
Sapiens-2B (Ours)1024 ร— 76879.284.684.190.991.293.870.478.174.4 (+7.9)81.0 (+6.7)configckpt

COCO - 17 Keypoints

PWC

ModelInput SizeAPAP-50AP-75AP-MAP-LARAR-50AR-75AR-MAR-LConfigCkpt
SimpleBaseline256 ร— 19273.5--69.980.279.0------
HRNet384 ร— 28876.3--72.383.481.2------
UDP384 ร— 28877.2--73.284.482.0------
FastPose256 ร— 19273.3-----------
HRFormer256 ร— 19277.2--73.284.282.0------
VitPose-S256 ร— 19273.8--70.580.479.2------
VitPose-B256 ร— 19275.8--72.182.281.1------
VitPose-L256 ร— 19278.3--74.585.483.5------
VitPose-H256 ร— 19279.1--75.386.084.1------
VitPose++-S256 ร— 19275.8--72.382.681.0------
VitPose++-B256 ร— 19277.0--73.484.082.6------
VitPose++-L256 ร— 19278.6--75.285.684.1------
VitPose++-H256 ร— 19279.4--75.886.584.8------
Sapiens-0.3B (Ours)1024 ร— 76879.6 (+0.2)93.085.776.085.683.695.689.079.989.1configckpt
Sapiens-0.6B (Ours)1024 ร— 76881.2 (+1.8)93.887.377.687.284.996.090.481.390.3configckpt
Sapiens-1B (Ours)1024 ร— 76882.1 (+2.7)94.288.278.488.385.996.691.382.191.4configckpt
Sapiens-2B (Ours)1024 ร— 76882.2 (+2.8)94.188.178.588.486.096.691.282.291.5configckpt