Attention-Propagation Network for Egocentric Heatmap to 3D Pose Lifting

Accurate stereo 3D pose from heatmap attention and skeleton-aware propagation.

Taeho Kang1, Youngki Lee1

1Seoul National University

Presented at CVPR 2024 · Highlight

Abstract

We present EgoTAP, a heatmap-to-3D pose lifting method for highly accurate stereo egocentric 3D pose estimation. Severe self-occlusion and out-of-view limbs make accurate pose estimation challenging. Prior methods use joint heatmaps, but heatmap-to-3D conversion remains inaccurate.

We propose a Grid ViT Encoder that summarizes joint heatmaps into effective embeddings via self-attention, and a Propagation Network that uses skeletal structure to estimate obscure joints. EgoTAP reduces MPJPE by 23.9% vs. previous state of the art.

Problem

Stereo egocentric methods already have usable joint heatmaps; the accuracy is lost when those heatmaps are lifted to a 3D pose.

VR and AR want a body pose from the sensors a headset already carries, so the camera looks down at the body from one of the hardest viewpoints: limbs leave the frame, the body occludes itself, and the fisheye lens distorts what remains. Direct 2D joint estimation is unreliable here, so egocentric methods predict joint heatmaps, a distribution over where each joint might be.

The common pipeline compresses all the heatmaps into one embedding with a CNN encoder and lifts it to the 3D pose with a multilayer perceptron. Two things go wrong there.

Joint Heatmaps CNN Encoder One Shared Embedding Decoder Reconstructed Heatmaps Joint Identity Lost

Four distinct heatmaps in, one shared embedding, four indistinguishable reconstructions out.

The first is the encoder. On the left are four joint heatmaps, hand, elbow, knee and foot, each with its own peak. The CNN encoder merges them into one shared embedding, the single column in the middle, and on the right a decoder recovers the same blur for every joint: which heatmap belonged to which joint is lost.

Convolution Window Outside the Window

One limb apart on the body, far apart in the image.

Convolution also assumes related things sit near each other in the image, and the egocentric view breaks that. On the left the blue limb links shoulder to hand; in the camera image on the right the shoulder sits at the top and the hand near the bottom, so the convolution window covering the shoulder never sees the hand.

The second is the lifting step. The multilayer perceptron maps the embedding to the full body with no notion of how certain each joint is or how the joints connect, so a feature from an obscure joint can corrupt a joint with clear visual cues.

Key idea

Keep one embedding per heatmap so no joint loses its identity, and let the joints the camera sees clearly predict the ones it cannot.

Swapping the CNN for a transformer is not by itself the fix: a ViT that stacks the heatmaps along the channel axis before patching again loses which embedding belongs to which joint. Each heatmap needs its own patches, with self-attention running across all of them, so every joint keeps an embedding and distant joints can still communicate.

The second idea rests on two properties of the setup: a joint both stereo cameras see has enough in its own two heatmaps for a precise 3D position, and joints nearer the camera tend to be more visible than those farther away. So estimation runs outward along the skeleton, from neck to extremities, and a child joint inherits its parent’s estimate only when its own evidence is weak.

Method

EgoTAP is a Grid ViT Heatmap Encoder followed by a Propagation Network, both on top of a frozen heatmap estimator.

The pre-trained estimator outputs one heatmap per joint per view plus limb heatmaps for the segments between joints; only the lifting is trained.

Heatmap Grid Self-Attention Grid ViT Encoder Feature Embeddings One per Joint FJ

Every heatmap keeps its own cell; attention crosses all of them.

On the left, the joint heatmaps are tiled into one grid image, one heatmap per cell, and patched. The blue double arrow joining two opposite corners marks that self-attention is global: a joint’s patches can draw on a distant joint’s wherever it lies in the image. Each input patch stays paired with its output, so the outputs for one heatmap are re-encoded into that heatmap’s embedding, and the two views’ embeddings for a joint form its joint feature FJ, the columns on the right, one per joint. The colour columns are illustrative, projected from the heatmaps rather than read out of the trained encoder.

Propagation Unit hparent FR FJ σ Forget Gate Evident: Forget Obscure: Keep LSTM Cell FP

One Propagation Unit, and the forget gate that decides whether to inherit.

On the left, propagation runs outward along the body: filled circles are visible joints, the hollow circle is the obscure hand, and the arrows run shoulder to elbow to hand, the step this unit computes. The Propagation Unit is an LSTM-inspired cell. It takes the parent’s hidden state hparent, here the elbow’s, the relational feature FR from the elbow–hand limb heatmap, and the child’s own joint feature FJ. Before the LSTM cell, an extra forget gate σ, computed from the child’s joint feature, scales the inherited state and the relational feature: evident child features forget the inheritance, obscure ones keep it. The output is the propagated feature FP, concatenated with FJ and projected to the joint’s 3D position.

Results

EgoTAP lowers MPJPE by 23.9% on UnrealEgo against the previous state of the art, and both components contribute.

UnrealEgo is synthetic; EgoCap is real footage from two helmet-mounted fisheye cameras. MPJPE is the mean per-joint position error in millimetres; PA-MPJPE, in brackets, is the same after Procrustes alignment. In the clips, red is the prediction, blue the ground truth, and the circle marks the region to compare. Akada et al. (2022) is the UnrealEgo baseline and Kang et al. (2023) is Ego3DPose.

UnrealEgo

EgoCap

Method UnrealEgo MPJPE (PA) EgoCap MPJPE (PA)
EgoGlass81.55 (61.56)67.90 (—)
UnrealEgo63.53 (47.76)70.77 (52.91)
Ego3DPose53.99 (43.02)69.45 (49.98)
EgoTAP (Ours)41.06 (35.39)55.38 (45.24)

In the UnrealEgo column, 41.06 against Ego3DPose’s 53.99 is the 23.9% reduction. In the EgoCap column, MPJPE falls from the best prior 67.90 to 55.38. The PA-MPJPE margins are smaller: prior methods estimate the body as a whole, so their relative pose can be right while globally biased.

In the ablation, Channel ViT stacks the heatmaps along the channel axis before patching, Grid ViT is our encoder without propagation, and the + LSTM RF rows propagate relational (RF) and joint features along the skeleton with a plain LSTM, without the forget gate. In the UnrealEgo column the grid encoder carries most of the gain, from 63.53 to 49.03, and the Propagation Unit roughly doubles what plain propagation adds on top of it.

Ablation UnrealEgo MPJPE (PA) EgoCap MPJPE (PA)
CNN63.53 (47.76)70.77 (52.91)
Channel ViT61.62 (47.05)83.39 (56.29)
Grid ViT49.03 (41.03)63.97 (53.17)
Grid ViT + RF48.12 (40.79)63.09 (52.60)
Grid ViT + LSTM49.43 (41.31)60.16 (49.18)
Grid ViT + LSTM RF Alter44.97 (38.99)62.60 (50.78)
Grid ViT + LSTM RF Concat44.77 (38.91)58.35 (47.06)
Grid ViT + PU (Ours)41.06 (35.39)55.38 (45.24)

Limitations

EgoTAP works from a single stereo frame and only from what is visible.

Motions with severe occlusion, Crawling and Sitting on the Ground, keep a much higher error than the other categories, and Crawling is also where the gain over prior work is smallest. The Propagation Network assumes the stereo setup, where a joint visible in both views fixes its own 3D position, so a monocular version would need modification, and it follows a fixed tree from the head rather than a learned graph.

BibTeX

@InProceedings{kang2024egotap,
  author    = {Kang, Taeho and Lee, Youngki},
  title     = {Attention-Propagation Network for Egocentric Heatmap to 3D Pose Lifting},
  booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  month     = {June},
  year      = {2024},
  pages     = {842--851}
}