# H3wb Eval

> Evaluates 3D whole-body human pose estimation and lifting capabilities. It probes a model's ability to reconstruct 133-keypoint 3D skeletons from complete 2D poses, occluded/incomplete 2D poses, or monocular RGB images, with specific focus on body, face, and hand regions. Use when the user wants to benchmark on H3WB, or asks about evaluating this task. Reports MPJPE.

- Skill: `qhjqhj00/h3wb-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/h3wb-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/h3wb-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/h3wb-eval

---


# h3wb-eval

> H3WB: Human3.6M 3D WholeBody Dataset and Benchmark — Zhu et al. (2022) (arXiv:2211.15692, 2022)

## What this evaluates

Evaluates 3D whole-body human pose estimation and lifting capabilities. It probes a model's ability to reconstruct 133-keypoint 3D skeletons from complete 2D poses, occluded/incomplete 2D poses, or monocular RGB images, with specific focus on body, face, and hand regions.

## Datasets

- **H3WB** — total 100000; splits: train (80000), test (20000); repo https://github.com/wholebody3d/wholebody3d

## Metrics

- `MPJPE` **(primary)** — range: other
  - Mean Per Joint Position Error. Computes the average Euclidean distance between predicted and ground-truth 3D joint coordinates after aligning the skeleton to a reference joint (pelvis, nose, or wrist). Reported in millimeters across whole-body, body, face, and hand subsets.

## Input / output format

**Input**: Per instance: (1) 2D→3D/I2D→3D: 133 2D keypoints (complete or masked per protocol); (2) RGB→3D: image path and 2D bounding box coordinates.

**Output**: 133 3D joint coordinates (x, y, z) representing the whole-body skeleton.

## Scoring recipe

```python
def compute_mpjpe(pred_3d, gt_3d, align_idx=0):
    pred_aligned = pred_3d - pred_3d[align_idx]
    gt_aligned = gt_3d - gt_3d[align_idx]
    errors = np.sqrt(np.sum((pred_aligned - gt_aligned)**2, axis=1))
    return np.mean(errors) * 1000  # Convert to mm if inputs are in meters
```

## Common pitfalls

- Predictions from normalized baselines must be re-scaled using the paper's bounding-box ratio formula before evaluation.
- Alignment convention drastically affects scores: pelvis alignment inflates error on extremities, requiring nose/wrist alignment for face/hand sub-metrics.
- Test set ground truth is hidden; results must be submitted to maintainers for leaderboard inclusion.

## Evidence (verbatim from paper)

> For each task, we report the following MPJPE (Mean Per Joint Position Error) metrics: MPJPE for the whole-body, the body (keypoint 1-23), the face (keypoint 24-91) and the hands (keypoint 92-133) when whole-body is centered on the root joint, i.e. aligned with the pelvis, which in our case is the middle of two hip joints. MPJPE for the face when it is centered on the nose, i.e. aligned with keypoint 1, MPJPE for the hands when hands are centered on the wrist, i.e left hand aligned with keypoint 92 and right hand aligned with keypoint 113.

## Citation

```bibtex
@misc{zhu2022h3wb,
  title={H3WB: Human3.6M 3D WholeBody Dataset and Benchmark},
  author={Zhu et al. (2022)},
  year={2022},
  note={arXiv:2211.15692}
}
```

- arXiv: 2211.15692

