EmpathicRobotics/FineVideo-Phase2-3DPose
FineVideo-Phase2-3DPose — 3D Human Pose from MotionBERT Overview This dataset contains 3D human pose data lifted from 2D detections using MotionBERT, extracted from ~40K YouTube videos in the FineVideo dataset. This is the output of Phase 2 (+ Phase 2.5 resampling) in the FineVideo-VLA pipeline. It contains raw 3D joint positions as NumPy arrays at 30fps, before any filtering, normalisation, or tokenisation. Statistics Metric Value Source… See the full description on the dataset page: https://huggingface.co/datasets/EmpathicRobotics/FineVideo-Phase2-3DPose.
FineVideo-Phase2-3DPose — 3D Human Pose from MotionBERT
Overview
This dataset contains 3D human pose data lifted from 2D detections using MotionBERT, extracted from ~40K YouTube videos in the FineVideo dataset.
This is the output of Phase 2 (+ Phase 2.5 resampling) in the FineVideo-VLA pipeline. It contains raw 3D joint positions as NumPy arrays at 30fps, before any filtering, normalisation, or tokenisation.
Statistics
Pipeline Context
Data Format
Each record contains 3D joint positions for one video as a NumPy array:
- Shape:
(num_frames, 17, 3)— frames at 30fps, 17 joints, xyz coordinates - Units: metres (MotionBERT output space)
- Coordinate system: camera-relative (not root-centred — root centering happens in Phase 3)
Joint order (H36M 17-joint skeleton)
Processing Details
- Phase 1 (HRNet): Ran HRNet with Faster R-CNN person detection to get 2D joint coordinates per frame
- Phase 2 (MotionBERT): Lifted 2D poses to 3D using MotionBERT pretrained on Human3.6M, processed at native video fps
- Phase 2.5 (Resample): Resampled from native video fps to uniform 30fps via linear interpolation, so poses align to the same time grid as video tokens (Seed2/Cosmos/AVC-LM)
Downstream Processing
For cleaned and normalised poses, see FineVideo-Phase4-YOLOPose which applies:
- Temporal smoothing (Butterworth filter)
- Bone length normalisation to canonical skeleton
- Root centering (pelvis at origin)
- Anti-teleportation filter
- YOLO person-presence cleaning
Related Resources
Usage
from datasets import load_dataset
ds = load_dataset("EmpathicRobotics/FineVideo-Phase2-3DPose", streaming=True)
for sample in ds["train"]:
video_id = sample["video_id"]
poses_3d = sample["poses"] # (num_frames, 17, 3)
print(f"Video: {video_id}, Frames: {len(poses_3d)}")
breakCitation
Part of the FineVideo-VLA project. If you use this data, please cite:
@misc{Farré2024FineVideo,
title={FineVideo},
author={Farré, Miquel and Marafioti, Andi and Tunstall, Lewis and Von Werra, Leandro and Wolf, Thomas},
year={2024},
howpublished={\url{https://huggingface.co/datasets/HuggingFaceFV/finevideo}},
}License
Apache 2.0
