Muhammad Usama Saleem, Ekkasit Pinyoanuntapong, Mayur Jagdishbhai Patel, Hongfei Xue, Ahmed Helmy, Srijan Das, Pu Wang
Reconstructing a 3D hand mesh from a single RGB image is challenging due to complex articulations, self-occlusions, and depth ambiguities. Traditional discriminative methods, which learn a deterministic mapping from a 2D image to a single 3D mesh, often struggle with the inherent ambiguities in 2D-to-3D mapping. To address this challenge, we propose MMHMR, a novel generative masked model for hand mesh recovery that synthesizes plausible 3D hand meshes by learning and sampling from the probabilistic distribution of the ambiguous 2D-to-3D mapping process. MMHMR consists of two key components: (1) a VQ-MANO, which encodes 3D hand articulations as discrete pose tokens in a latent space, and (2) a Context-Guided Masked Transformer that randomly masks out pose tokens and learns their joint distribution, conditioned on corrupted token sequences, image context, and 2D pose cues. This learned distribution facilitates confidence-guided sampling during inference, producing mesh reconstructions with low uncertainty and high precision. Extensive evaluations on benchmark and real-world datasets demonstrate that MMHMR achieves state-of-the-art accuracy, robustness, and realism in 3D hand mesh reconstruction. Project website: https://m-usamasaleem.github.io/publication/MMHMR/mmhmr.html
| Task | Dataset | Metric | Value | Model |
|---|---|---|---|---|
| Hand | HO-3D v3 | AUC_J | 0.86 | MaskHand |
| Hand | HO-3D v3 | AUC_V | 0.86 | MaskHand |
| Hand | HO-3D v3 | F@15mm | 0.984 | MaskHand |
| Hand | HO-3D v3 | F@5mm | 0.663 | MaskHand |
| Hand | HO-3D v3 | PA-MPJPE | 7 | MaskHand |
| Hand | HO-3D v3 | PA-MPVPE | 7 | MaskHand |
| Hand | FreiHAND | PA-F@15mm | 0.991 | MaskHand |
| Hand | FreiHAND | PA-F@5mm | 0.801 | MaskHand |
| Hand | FreiHAND | PA-MPJPE | 5.5 | MaskHand |
| Hand | FreiHAND | PA-MPVPE | 5.4 | MaskHand |
| Hand | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) All | 46.4 | MaskHand |
| Hand | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Occ | 29.4 | MaskHand |
| Hand | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Visible | 59.3 | MaskHand |
| Hand | HInt: Hand Interactions in the wild | PCK@0.05 (New Days) All | 48.7 | MaskHand |
| Hand | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Occ | 29.4 | MaskHand |
| Hand | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Visible | 61 | MaskHand |
| Hand | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) All | 46.1 | MaskHand |
| Hand | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Occ | 31.4 | MaskHand |
| Hand | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Visible | 62.1 | MaskHand |
| Hand | DexYCB | Average MPJPE (mm) | 11.7 | MaskHand |
| Hand | DexYCB | MPVPE | 11.2 | MaskHand |
| Hand | DexYCB | PA-MPVPE | 4.9 | MaskHand |
| Hand | DexYCB | Procrustes-Aligned MPJPE | 5 | MaskHand |
| Pose Estimation | HO-3D v3 | AUC_J | 0.86 | MaskHand |
| Pose Estimation | HO-3D v3 | AUC_V | 0.86 | MaskHand |
| Pose Estimation | HO-3D v3 | F@15mm | 0.984 | MaskHand |
| Pose Estimation | HO-3D v3 | F@5mm | 0.663 | MaskHand |
| Pose Estimation | HO-3D v3 | PA-MPJPE | 7 | MaskHand |
| Pose Estimation | HO-3D v3 | PA-MPVPE | 7 | MaskHand |
| Pose Estimation | FreiHAND | PA-F@15mm | 0.991 | MaskHand |
| Pose Estimation | FreiHAND | PA-F@5mm | 0.801 | MaskHand |
| Pose Estimation | FreiHAND | PA-MPJPE | 5.5 | MaskHand |
| Pose Estimation | FreiHAND | PA-MPVPE | 5.4 | MaskHand |
| Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) All | 46.4 | MaskHand |
| Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Occ | 29.4 | MaskHand |
| Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Visible | 59.3 | MaskHand |
| Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (New Days) All | 48.7 | MaskHand |
| Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Occ | 29.4 | MaskHand |
| Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Visible | 61 | MaskHand |
| Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) All | 46.1 | MaskHand |
| Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Occ | 31.4 | MaskHand |
| Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Visible | 62.1 | MaskHand |
| Pose Estimation | DexYCB | Average MPJPE (mm) | 11.7 | MaskHand |
| Pose Estimation | DexYCB | MPVPE | 11.2 | MaskHand |
| Pose Estimation | DexYCB | PA-MPVPE | 4.9 | MaskHand |
| Pose Estimation | DexYCB | Procrustes-Aligned MPJPE | 5 | MaskHand |
| Hand Pose Estimation | HO-3D v3 | AUC_J | 0.86 | MaskHand |
| Hand Pose Estimation | HO-3D v3 | AUC_V | 0.86 | MaskHand |
| Hand Pose Estimation | HO-3D v3 | F@15mm | 0.984 | MaskHand |
| Hand Pose Estimation | HO-3D v3 | F@5mm | 0.663 | MaskHand |
| Hand Pose Estimation | HO-3D v3 | PA-MPJPE | 7 | MaskHand |
| Hand Pose Estimation | HO-3D v3 | PA-MPVPE | 7 | MaskHand |
| Hand Pose Estimation | FreiHAND | PA-F@15mm | 0.991 | MaskHand |
| Hand Pose Estimation | FreiHAND | PA-F@5mm | 0.801 | MaskHand |
| Hand Pose Estimation | FreiHAND | PA-MPJPE | 5.5 | MaskHand |
| Hand Pose Estimation | FreiHAND | PA-MPVPE | 5.4 | MaskHand |
| Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) All | 46.4 | MaskHand |
| Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Occ | 29.4 | MaskHand |
| Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Visible | 59.3 | MaskHand |
| Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (New Days) All | 48.7 | MaskHand |
| Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Occ | 29.4 | MaskHand |
| Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Visible | 61 | MaskHand |
| Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) All | 46.1 | MaskHand |
| Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Occ | 31.4 | MaskHand |
| Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Visible | 62.1 | MaskHand |
| Hand Pose Estimation | DexYCB | Average MPJPE (mm) | 11.7 | MaskHand |
| Hand Pose Estimation | DexYCB | MPVPE | 11.2 | MaskHand |
| Hand Pose Estimation | DexYCB | PA-MPVPE | 4.9 | MaskHand |
| Hand Pose Estimation | DexYCB | Procrustes-Aligned MPJPE | 5 | MaskHand |
| 3D | HO-3D v3 | AUC_J | 0.86 | MaskHand |
| 3D | HO-3D v3 | AUC_V | 0.86 | MaskHand |
| 3D | HO-3D v3 | F@15mm | 0.984 | MaskHand |
| 3D | HO-3D v3 | F@5mm | 0.663 | MaskHand |
| 3D | HO-3D v3 | PA-MPJPE | 7 | MaskHand |
| 3D | HO-3D v3 | PA-MPVPE | 7 | MaskHand |
| 3D | FreiHAND | PA-F@15mm | 0.991 | MaskHand |
| 3D | FreiHAND | PA-F@5mm | 0.801 | MaskHand |
| 3D | FreiHAND | PA-MPJPE | 5.5 | MaskHand |
| 3D | FreiHAND | PA-MPVPE | 5.4 | MaskHand |
| 3D | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) All | 46.4 | MaskHand |
| 3D | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Occ | 29.4 | MaskHand |
| 3D | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Visible | 59.3 | MaskHand |
| 3D | HInt: Hand Interactions in the wild | PCK@0.05 (New Days) All | 48.7 | MaskHand |
| 3D | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Occ | 29.4 | MaskHand |
| 3D | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Visible | 61 | MaskHand |
| 3D | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) All | 46.1 | MaskHand |
| 3D | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Occ | 31.4 | MaskHand |
| 3D | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Visible | 62.1 | MaskHand |
| 3D | DexYCB | Average MPJPE (mm) | 11.7 | MaskHand |
| 3D | DexYCB | MPVPE | 11.2 | MaskHand |
| 3D | DexYCB | PA-MPVPE | 4.9 | MaskHand |
| 3D | DexYCB | Procrustes-Aligned MPJPE | 5 | MaskHand |
| 3D Hand Pose Estimation | HO-3D v3 | AUC_J | 0.86 | MaskHand |
| 3D Hand Pose Estimation | HO-3D v3 | AUC_V | 0.86 | MaskHand |
| 3D Hand Pose Estimation | HO-3D v3 | F@15mm | 0.984 | MaskHand |
| 3D Hand Pose Estimation | HO-3D v3 | F@5mm | 0.663 | MaskHand |
| 3D Hand Pose Estimation | HO-3D v3 | PA-MPJPE | 7 | MaskHand |
| 3D Hand Pose Estimation | HO-3D v3 | PA-MPVPE | 7 | MaskHand |
| 3D Hand Pose Estimation | FreiHAND | PA-F@15mm | 0.991 | MaskHand |
| 3D Hand Pose Estimation | FreiHAND | PA-F@5mm | 0.801 | MaskHand |
| 3D Hand Pose Estimation | FreiHAND | PA-MPJPE | 5.5 | MaskHand |
| 3D Hand Pose Estimation | FreiHAND | PA-MPVPE | 5.4 | MaskHand |
| 3D Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) All | 46.4 | MaskHand |
| 3D Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Occ | 29.4 | MaskHand |
| 3D Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Visible | 59.3 | MaskHand |
| 3D Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (New Days) All | 48.7 | MaskHand |
| 3D Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Occ | 29.4 | MaskHand |
| 3D Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Visible | 61 | MaskHand |
| 3D Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) All | 46.1 | MaskHand |
| 3D Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Occ | 31.4 | MaskHand |
| 3D Hand Pose Estimation | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Visible | 62.1 | MaskHand |
| 3D Hand Pose Estimation | DexYCB | Average MPJPE (mm) | 11.7 | MaskHand |
| 3D Hand Pose Estimation | DexYCB | MPVPE | 11.2 | MaskHand |
| 3D Hand Pose Estimation | DexYCB | PA-MPVPE | 4.9 | MaskHand |
| 3D Hand Pose Estimation | DexYCB | Procrustes-Aligned MPJPE | 5 | MaskHand |
| 1 Image, 2*2 Stitchi | HO-3D v3 | AUC_J | 0.86 | MaskHand |
| 1 Image, 2*2 Stitchi | HO-3D v3 | AUC_V | 0.86 | MaskHand |
| 1 Image, 2*2 Stitchi | HO-3D v3 | F@15mm | 0.984 | MaskHand |
| 1 Image, 2*2 Stitchi | HO-3D v3 | F@5mm | 0.663 | MaskHand |
| 1 Image, 2*2 Stitchi | HO-3D v3 | PA-MPJPE | 7 | MaskHand |
| 1 Image, 2*2 Stitchi | HO-3D v3 | PA-MPVPE | 7 | MaskHand |
| 1 Image, 2*2 Stitchi | FreiHAND | PA-F@15mm | 0.991 | MaskHand |
| 1 Image, 2*2 Stitchi | FreiHAND | PA-F@5mm | 0.801 | MaskHand |
| 1 Image, 2*2 Stitchi | FreiHAND | PA-MPJPE | 5.5 | MaskHand |
| 1 Image, 2*2 Stitchi | FreiHAND | PA-MPVPE | 5.4 | MaskHand |
| 1 Image, 2*2 Stitchi | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) All | 46.4 | MaskHand |
| 1 Image, 2*2 Stitchi | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Occ | 29.4 | MaskHand |
| 1 Image, 2*2 Stitchi | HInt: Hand Interactions in the wild | PCK@0.05 (Ego4D) Visible | 59.3 | MaskHand |
| 1 Image, 2*2 Stitchi | HInt: Hand Interactions in the wild | PCK@0.05 (New Days) All | 48.7 | MaskHand |
| 1 Image, 2*2 Stitchi | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Occ | 29.4 | MaskHand |
| 1 Image, 2*2 Stitchi | HInt: Hand Interactions in the wild | PCK@0.05 (NewDays) Visible | 61 | MaskHand |
| 1 Image, 2*2 Stitchi | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) All | 46.1 | MaskHand |
| 1 Image, 2*2 Stitchi | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Occ | 31.4 | MaskHand |
| 1 Image, 2*2 Stitchi | HInt: Hand Interactions in the wild | PCK@0.05 (VISOR) Visible | 62.1 | MaskHand |
| 1 Image, 2*2 Stitchi | DexYCB | Average MPJPE (mm) | 11.7 | MaskHand |
| 1 Image, 2*2 Stitchi | DexYCB | MPVPE | 11.2 | MaskHand |
| 1 Image, 2*2 Stitchi | DexYCB | PA-MPVPE | 4.9 | MaskHand |
| 1 Image, 2*2 Stitchi | DexYCB | Procrustes-Aligned MPJPE | 5 | MaskHand |