Evaluation#
RoSHI is evaluated against OptiTrack motion capture ground truth across 11 activities.
Metrics#
MPJPE (cm): mean per-joint position error in world coordinates
JAE (deg): geodesic joint angle error (root-invariant)
Recall: percentage of GT frames with a valid prediction
Methods#
Method |
Description |
|---|---|
IMU-only |
Forward kinematics from calibrated IMUs with naive global positioning |
IMU + EgoAllo root |
IMU joint rotations with EgoAllo-estimated root position |
EgoAllo |
EgoAllo egocentric pose estimation (no IMU) |
RoSHI (Ours) |
IMU + diffusion test-time optimization |
SAM3D |
SAM-3D-Body single-image reconstruction |
Overall Results#
Method |
MPJPE (cm) |
JAE (deg) |
Recall |
|---|---|---|---|
IMU-only |
17.3 |
11.4 |
— |
IMU + EgoAllo root |
12.3 |
11.4 |
— |
EgoAllo |
10.7 |
15.6 |
— |
RoSHI (Ours) |
9.9 |
12.6 |
— |
SAM3D |
13.5 |
10.8 |
92.3% |
Per-Activity Results#
Method |
Walk |
Stretch |
Jump-jack |
Pick-up |
Walk-hi |
Pickup-walk |
Jog |
Jump |
Slide |
Tennis |
|---|---|---|---|---|---|---|---|---|---|---|
IMU-only |
9.6 |
15.7 |
14.8 |
26.7 |
18.1 |
27.3 |
14.4 |
15.2 |
9.2 |
23.0 |
EgoAllo |
10.9 |
8.9 |
11.7 |
10.7 |
9.3 |
11.1 |
8.4 |
11.3 |
9.8 |
15.5 |
RoSHI |
11.6 |
8.2 |
8.4 |
10.3 |
9.0 |
11.3 |
9.2 |
10.3 |
9.1 |
12.9 |
SAM3D |
9.9 |
10.6 |
10.1 |
10.7 |
9.7 |
11.1 |
10.2 |
10.9 |
18.6 |
21.9 |
(MPJPE in cm. Ball-throwing-catching omitted for space.)
Running Evaluation#
Pre-computed results are included in the repository. To recompute:
conda activate roshi
python evaluation/compute_metrics.py
Data is organized by activity under evaluation/data/:
evaluation/data/
├── 01_walk_march_jog_run/
│ ├── optitrack_gt.npz # Ground truth
│ ├── roshi.npz # RoSHI (Ours)
│ ├── egoallo.npz # EgoAllo baseline
│ ├── imu_only.npz # IMU FK baseline
│ └── sam3d.npz # SAM-3D baseline
├── 02_stretch_boxing_bow_wave/
├── ...
└── 11_ball-throwing-catching/
Each NPZ contains:
joints_opti: joint positions in OptiTrack world frame(T, 22, 3)timestamps_ns: UTC timestamps in nanoseconds(T,)