A pipeline for large scale deep-learning based wireless sensing tasks, including preprocess, training and eval
Project description
SDP: Sensing Data Protocol for Scalable Wireless Sensing
SDP (Sensing Data Protocol) is a protocol-level abstraction framework and unified benchmark for scalable wireless sensing and perception based on wireless signals such as Channel State Information(CSI). The protocol is designed to decouple learning performance from hardware-specific artifacts, enabling fair, reproducible, and scalable evaluation of deep learning models for wireless sensing tasks.
SDP enforces deterministic physical-layer sanitization, canonical tensor construction, and standardized training and evaluation procedures, making it particularly suitable for wireless sensing research, activity recognition, device-free sensing, and cross-dataset benchmarking.
Our main result can be illustrated by the following pictures.
Mean Top-1 accuracy with 95% confidence intervals over five runs
Performance stability comparison between the baseline and SDP across five random seeds. Boxplots show the distribution of Top-1 accuracy, with scattered dots indicating individual runs.
Rank consistency heatmap across five random seeds on the ElderAL-CSI dataset. Colors indicate per-seed performance rank (1 = best), with overlaid Top-1 accuracy values. Full SDP exhibits stable top-ranked performance, while ablated variants show higher ranking variability.
More details are illustrated in our paper A Sensing Dataset Protocol for Benchmarking and Multi-Task Wireless Sensing.
@misc{zhang2026sdpunifiedprotocolbenchmarking,
title={SDP: A Unified Protocol and Benchmarking Framework for Reproducible Wireless Sensing},
author={Di Zhang and Jiawei Huang and Yuanhao Cui and Xiaowen Cao and Tony Xiao Han and Xiaojun Jing and Christos Masouros},
year={2026},
eprint={2601.08463},
archivePrefix={arXiv},
primaryClass={eess.SP},
url={https://arxiv.org/abs/2601.08463},
}
🔍 Why SDP?
Wireless sensing research often suffers from:
- Inconsistent hardware configurations
- Dataset-specific preprocessing pipelines
- Non-reproducible training and evaluation protocols
SDP addresses these challenges at the protocol level, rather than the model level.
The SDP unified data processing pipeline, including sanitation and transformation, transform raw data into uniform canonical tensors ready for deep learning.
Core Design Principles
- Protocol-level abstraction
- Deterministic PHY-layer sanitization to eliminate randomness
- Canonical tensor representation for deep learning compatibility
- Unified benchmark pipeline across datasets and tasks
- Extensible architecture for new datasets, processors, and models
📦 Key Features
- Unified CSI abstraction across heterogeneous datasets
- Hardware-agnostic signal representation
- Modular reader–processor–model pipeline
- Deterministic preprocessing for reproducibility
- Plug-and-play extensibility
- Benchmark-ready training and evaluation flow
📚 Target Use Cases
SDP is optimized for:
- CSI-based Human Activity Recognition (HAR)
- Gait recognition and biometric identification
- Wireless sensing + deep learning research
- Cross-domain / cross-hardware generalization
- scalable sensing systems
Typical downstream models include CNNs, Transformers, BiLSTMs, GNNs, and hybrid architectures.
Supported Dataset:
Widar3.0
- Dataset Link: Widar3.0: Wi-Fi-based Hand Gesture Recognition Dataset
- CSI Shape: (Time, 30, 1, 3)
- num of classes: 6
- total num of used samples: 12,000
GaitID
- Dataset Link: GaitID: Wi-Fi-based Human Gait Recognition Dataset
- CSI Shape: (Time, 30, 1, 3)
- num of classes: 11
- total num of used samples: 22,500
XRF55
- Dataset Link: XRF55: A Radio Frequency Dataset for Human Indoor Action Analysis
- CSI Shape: (270, 1000)
- num of classes: 55
- total num of used samples: 9,900
ElderAL-CSI
- Dataset Link: ElderAL-CSI
- CSI Shape: (Time, 512, 3, 3)
- num of classes: 6
- total num of used samples: 2,400
📁 Project Structure Overview
algorithms/
Store various functions for implementing different signal processing algorithms.
./denoising.py
Store functions for signal denoising./phase_calibration.py
Store functions for phase calibration
readers/
- Store Dataset-specific readers
- Converts raw files into
ListofCSIData
structure/
- Definition of
CSIDataand all kinds ofCSIFrame
processors/
- Definition of processor for signal processing and sanitization
datasets/
- Definition of classes extend
torch.utils.data.Dataset
models/
- Definition of deep learning models
🚀 Quick Start
Install Dependencies
Create a venv for dependencies, then run:
pip install wsdp
Download Data
Please download needed datasets from Our SDP Website or via command:
wsdp xxxx [dataset_name] [dir] # TBD
After downloading, in the folder of your project, please organize elderAL datasets in the structure below for extracting labels:
├── data
├── elderAL
│ ├── action0_static_new
│ │ ├── user0_position1_activity0
│ │ ├── ...
│ │
│ ├── action1_walk_new
│ ├── ...
│
├── widar
├── gait
├── xrf55
Run
This project supports both functional call and command-line call in the shell. The calling methods are as follows respectively:
- For
input_path:/data/[widar, gait, xrf55, elderAL]are recommended - For
dataset_name:widar,gait,xrf55,elderALare available
function call:
Create a script, say script.py, then copy the code below and paste into the script:
from wsdp import pipeline
pipeline(input_path, output_folder, dataset_name)
Considering that training process will generate numerous lines about information like acc and loss, in function-call, it is recommended to run via the command below:
nohup python script.py >> output.log 2>&1 &
command:
no need to create scripts, just run in command:
wsdp run [input_path] [output_folder] [dataset_name]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wsdp-0.0.6.tar.gz.
File metadata
- Download URL: wsdp-0.0.6.tar.gz
- Upload date:
- Size: 20.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
858f528d574d8755652f7763f3a92e896363d2e51a65311ad8b7970b1662c67e
|
|
| MD5 |
dc5341a795bdf5fe1e8274eb16912e6f
|
|
| BLAKE2b-256 |
997a3d9239eea5075fe28f2c6f4e39efbe672e8da2823fe595616e0aecfa9b2b
|
File details
Details for the file wsdp-0.0.6-py3-none-any.whl.
File metadata
- Download URL: wsdp-0.0.6-py3-none-any.whl
- Upload date:
- Size: 22.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c55c6fb83a9ad22f925a1b0c2089d48e583022086caae50ea7f87fd258eb922
|
|
| MD5 |
c38606d89982c3261c967c3a991d67fd
|
|
| BLAKE2b-256 |
131fddf4be57e07a53270255801e90e29c62f96d912a630a6f19c23aa653734d
|