Building human-centric AI that understands how people use their hands requires data on how humans physically interact with objects, yet large-scale datasets for this remain scarce. Most existing ones are recorded entirely in controlled lab settings, and their contact labels are typically estimated by thresholding hand–object distances rather than measured directly. To address this, we present Contact4D, a multi-view video dataset of people assembling furniture, captured with a flexible multi-camera system and annotated with human detections, tracks, 2D/3D body and hand poses, and ground-truth finger contact. Because hands are often heavily occluded during assembly, we also introduce a processing pipeline that recovers accurate hand poses under severe occlusion. The dataset contains 2M images from 19 synchronized cameras over 350 video sequences, covering a variety of environments, furniture types, and subjects. Benchmarking current human pose estimation and contact estimation methods shows that they generalize poorly to these scenarios. Finally, fine-tuning a pretrained MultiHMR model on Contact4D improves body MPJPE by 56.6% and hand MPJPE by 26.4% under severe self- and object occlusion.
Subjects assembling furniture across distinct rooms and object types.
Per-frame intrinsics and extrinsics for all 18 exo cameras + the Aria egocentric device.
2D and 3D body + hand keypoints, in world and camera space.
Fitted SMPL, SMPL-X, and MANO parameters for every annotated frame.
18 synchronized exo cameras ring each subject, plus one head-worn Aria egocentric device.
Raw images from Contact4D — spanning distinct subjects, rooms, and furniture-assembly tasks.
Raw image, 2D body+hand keypoints, SMPL, SMPL-X, MANO, and per-fingertip contact state.
session_03, exo cam05, sequence 007.
Four panels side by side: raw image, 2D body+hand pose, MANO mesh, and SMPL-X mesh.
session_06, exo cam15, sequence 007.
Four panels side by side: raw image, 2D body+hand pose, MANO mesh, and SMPL-X mesh.
session_24, exo cam09, sequence 006.
Four panels side by side: raw image, 2D body+hand pose, MANO mesh, and SMPL-X mesh.
session_02, Aria egocentric view, sequence 002.
Four panels side by side: raw image, 2D body+hand pose, MANO mesh, and SMPL-X mesh.
session_26, exo cam09, sequence 003.
Four panels side by side: raw image, 2D body+hand pose, MANO mesh, and SMPL-X mesh.
session_30, exo cam09, sequence 003.
Four panels side by side: raw image, 2D body+hand pose, MANO mesh, and SMPL-X mesh.
session_34, exo cam09, sequence 003.
Four panels side by side: raw image, 2D body+hand pose, MANO mesh, and SMPL-X mesh.
session_20, exo cam09, sequence 003.
Four panels side by side: raw image, 2D body+hand pose, MANO mesh, and SMPL-X mesh.
session_01, exo cam03.
session_07, exo cam01.
session_09, exo cam09.
session_13, exo cam09.
session_14, exo cam05.
session_18, exo cam09.
Per-fingertip contact state shown as a fixed HUD panel per hand: red = in contact, green = not.
The Contact4D dataset is hosted on Hugging Face. Data is organized by capture session (session_01, session_02, …), and each session contains its recorded sequences (001_session_01, …). Inside a sequence, exo/ holds the exocentric camera images (cam01–cam18), ego/ holds the Aria RGB and SLAM streams, and processed_data/ holds all annotations:
body_pose3d/, hand_pose3d/ — 3D body (17 joints) and hand (21 joints per hand) keypoints in world coordinates, in meters.body_poses2d/, hand_poses2d_corrective/ — per-camera 2D keypoints.smpl/, smplx/, mano/ — fitted body and hand model parameters and meshes.finger_contact/annotations.json — per-frame contact state for all ten fingertips.camera_params/ — intrinsics and extrinsics for every exo camera and Aria stream.The Contact4D Toolkit is a lightweight Python package (numpy, OpenCV, PyTorch, smplx) for working with the release. It projects 3D keypoints into any view, converts SMPL/SMPL-X/MANO to camera space, renders meshes on images, undistorts exo and Aria images, and visualizes fingertip contact. For example:
git clone https://github.com/jyuntins/Contact4D_Toolkit
cd Contact4D_Toolkit && pip install -r requirements.txt
python scripts/visualize_finger_contact.py --sequence-path /path/to/001_session_01 \
--camera cam05 --frame 1 --output-dir out/finger_contact
Full annotation schemas, camera models, and body model setup are documented in the toolkit's docs.
@inproceedings{song2026contact4d,
title={Contact4d: A video dataset for whole-body human motion and finger contact in dexterous operations},
author={Song, Jyun-Ting and Kim, JungEun and Cao, Jinkun and Lei, Yu and Yagi, Takuma and Kitani, Kris},
booktitle={2026 International Conference on 3D Vision (3DV)},
pages={904--914},
year={2026},
organization={IEEE}
}