What it is
The training/evaluation dataset released alongside the WiFlow continuous human-pose-estimation network (Yi Dao, Lankai Zhang, Hao Liu, Haiwei Zhang, Wenbo Wang; repo, Apache-2.0). It is a single-actor, synchronised CSI→2D-skeleton set: each CSI window is paired with 15 body-joint image coordinates recovered from a co-located camera (OpenPose-style ground truth). WiFlow itself is a lightweight encoder–decoder (TCN + axial attention, ~2.2 M params) that regresses joint coordinates directly from the raw CSI sequence rather than treating CSI as an image.
Verified specs
Grounded in the repo (config.py, dataset.py, README), not just the paper abstract:
- Scale: ~360,000 synchronised CSI–pose samples.
- Subjects: 5 volunteers.
- Activities (8): walking, raising hands, squatting, hands-up, kicking, waving, turning, jumping.
- CSI window: 540 subcarriers × 20 packets per input (
NUM_SUBCARRIERS = 540,WINDOW_SIZE = 20). 540 is well above commodity single-link width, so it is a concatenation across the antenna array / stream — the repo does not document the front-end. - Labels: 15 2D keypoints (Neck, Chest, L/R Shoulder-Elbow-Wrist, Pelvis, L/R Hip-Knee-Ankle),
each
(x, y)in image space, scaled by 1000; a 14-edge skeleton graph is defined inconfig.py. - On-disk format (Kaggle): pre-processed NumPy bundle —
csi_windows.npy,all_keypoints.npy,window_info.npz,file_info.npz,config.npz(+ optionalfile_mappings.pkl). The loader (PreprocessedCSIKeypointsDataset) reads windows and per-file keypoint arrays directly; there is a sliding-windowstrideinconfig.npz. - Evaluation protocols: Setting 1 random 70/30 split; Setting 2 leave-one-subject-out (5-fold cross-subject). Reported metrics: PCK@{20,30,40,50} and MPJPE (metres).
- Hardware / capture environment: not documented in the repo (no NIC, antenna count, band, or room dimensions given). This is the note's biggest open provenance gap.
Acquisition & storage
- Access: freely downloadable from Kaggle (hash-share link above); code is Apache-2.0.
Not yet mirrored to our S3 — no
storage:block until it is. - If acquired: it is a small, self-contained
.npybundle — a straightforwarddatasets/wiflow-pose/upload following the datasets contract, with a manifest keyed by subject/activity so a leave-one-subject-out fold can be streamed. - Redistribution: verify the Kaggle licence field before mirroring (the repo licence covers the code, not necessarily the data).
Why it matters here
Marginal for the crowd-sensing thesis, useful as a method reference:
- It is a rare public, real-CSI, pixel-registered set with a working, lightweight baseline — a clean sandbox for the temporal/Doppler feature question in count-signal-in-temporal-doppler without the confounds of our synthetic Sionna CSI.
- The cross-subject (LOSO) protocol mirrors our cross-environment generalisation framing (cross-geometry-feature-type-h1h6); the reported same-split→cross-subject PCK drop (97→87 %) is a useful external data point on how much a single-actor CSI model overfits identity.
- Task mismatch: it is single-person 2D pose, not multi-person occupancy/count — so it does not serve as a clean-real-data anchor for the counting claims. Treat it as a representation-learning reference, not a benchmark for the core hypotheses.