Full implementation of Project AETHER — Contrastive CSI Embedding Model. ## Phases Delivered 1. ProjectionHead (64→128→128) + L2 normalization 2. CsiAugmenter (5 physically-motivated augmentations) 3. InfoNCE contrastive loss + SimCLR pretraining 4. FingerprintIndex (4 index types: env, activity, temporal, person) 5. RVF SEG_EMBED (0x0C) + CLI integration 6. Cross-modal alignment (PoseEncoder + InfoNCE) 7. Deep RuVector: MicroLoRA, EWC++, drift detection, hard-negative mining, SEG_LORA ## Stats - 276 tests passing (191 lib + 51 bin + 16 rvf + 18 vitals) - 3,342 additions across 8 files - Zero unsafe/unwrap/panic/todo stubs - ~55KB INT8 model for ESP32 edge deployment Also fixes deprecated GitHub Actions (v3→v4) and adds feat/* branch CI triggers. Closes #50
3.4 KiB
3.4 KiB
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