Two measured, bit-equivalent perf wins. Each ships a criterion bench
(benches/features_bench.rs, new) with before/after numbers and a committed
bit-identity test — no perf claim without a measured before/after.
PSD FFT-planner caching (features.rs)
PowerSpectralDensity::from_csi_data re-planned a FftPlanner on EVERY frame,
and FeatureExtractor::extract calls it per frame on the hot path. New
from_csi_data_with_fft(csi, n, &Arc<dyn Fft>) reuses a plan cached in
FeatureExtractor (built once in new()). Bit-identical output
(psd_cached_fft_bit_identical_to_fresh, f64::to_bits over 6 sizes).
MEASURED (median ns/frame, criterion):
fft=64 5.84µs -> 1.89µs (3.09x)
fft=128 9.31µs -> 3.61µs (2.58x)
fft=256 13.77µs -> 6.73µs (2.04x)
DTW Sakoe-Chiba band (gesture.rs)
dtw_distance computed j_start/j_end but iterated the FULL 1..=m row,
continue-ing out-of-band — band constrained the path, not the work (O(n*m)).
Now iterates j_start..=j_end (O(n*band)), resetting only the two boundary
guard cells the recurrence reads, with endpoint reachability (|n-m|<=band)
at the return. Bit-identical across 12 shapes x 8 bands
(dtw_banded_bit_identical_to_fullrow).
MEASURED (median, criterion):
n=m=100 band=5 33.45µs -> 13.77µs (2.43x)
n=m=200 band=5 122.32µs -> 29.55µs (4.14x)
n=m=200 band=10 159.98µs -> 60.19µs (2.66x)
Reproduce:
cd v2 && cargo bench -p wifi-densepose-signal --no-default-features \
--bench features_bench
Co-Authored-By: claude-flow <ruv@ruv.net>
|
||
|---|---|---|
| .. | ||
| benches | ||
| src | ||
| tests | ||
| Cargo.toml | ||
| README.md | ||
README.md
wifi-densepose-signal
State-of-the-art WiFi CSI signal processing for human pose estimation.
Overview
wifi-densepose-signal implements six peer-reviewed signal processing algorithms that extract
human motion features from raw WiFi Channel State Information (CSI). Each algorithm is traced
back to its original publication and integrated with the
ruvector family of crates for high-performance
graph and attention operations.
Algorithms
| Algorithm | Module | Reference |
|---|---|---|
| Conjugate Multiplication | csi_ratio |
SpotFi, SIGCOMM 2015 |
| Hampel Filter | hampel |
WiGest, 2015 |
| Fresnel Zone Model | fresnel |
FarSense, MobiCom 2019 |
| CSI Spectrogram | spectrogram |
Common in WiFi sensing literature since 2018 |
| Subcarrier Selection | subcarrier_selection |
WiDance, MobiCom 2017 |
| Body Velocity Profile (BVP) | bvp |
Widar 3.0, MobiSys 2019 |
Features
- CSI preprocessing -- Noise removal, windowing, normalization via
CsiProcessor. - Phase sanitization -- Unwrapping, outlier removal, and smoothing via
PhaseSanitizer. - Feature extraction -- Amplitude, phase, correlation, Doppler, and PSD features.
- Motion detection -- Human presence detection with confidence scoring via
MotionDetector. - ruvector integration -- Graph min-cut (person matching), attention mechanisms (antenna and spatial attention), and sparse solvers (subcarrier interpolation).
Quick Start
use wifi_densepose_signal::{
CsiProcessor, CsiProcessorConfig,
PhaseSanitizer, PhaseSanitizerConfig,
MotionDetector,
};
// Configure and create a CSI processor
let config = CsiProcessorConfig::builder()
.sampling_rate(1000.0)
.window_size(256)
.overlap(0.5)
.noise_threshold(-30.0)
.build();
let processor = CsiProcessor::new(config);
Architecture
wifi-densepose-signal/src/
lib.rs -- Re-exports, SignalError, prelude
bvp.rs -- Body Velocity Profile (Widar 3.0)
csi_processor.rs -- Core preprocessing pipeline
csi_ratio.rs -- Conjugate multiplication (SpotFi)
features.rs -- Amplitude/phase/Doppler/PSD feature extraction
fresnel.rs -- Fresnel zone diffraction model
hampel.rs -- Hampel outlier filter
motion.rs -- Motion and human presence detection
phase_sanitizer.rs -- Phase unwrapping and sanitization
spectrogram.rs -- Time-frequency CSI spectrograms
subcarrier_selection.rs -- Variance-based subcarrier selection
Related Crates
| Crate | Role |
|---|---|
wifi-densepose-core |
Foundation types and traits |
ruvector-mincut |
Graph min-cut for person matching |
ruvector-attn-mincut |
Attention-weighted min-cut |
ruvector-attention |
Spatial attention for CSI |
ruvector-solver |
Sparse interpolation solver |
License
MIT OR Apache-2.0