You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**Real-time Alerts**| Priority-based notifications with escalation |
254
+
WiFi signals penetrate non-metallic debris (concrete, wood, drywall) where cameras and thermal sensors cannot reach. The WiFi-Mat module (`wifi-densepose-mat`, 139 tests) uses CSI analysis to detect survivors trapped under rubble, classify their condition using the START triage protocol, and estimate their 3D position — giving rescue teams actionable intelligence within seconds of deployment.
255
+
256
+
| Capability | How It Works | Performance Target |
257
+
|------------|-------------|-------------------|
258
+
|**Breathing Detection**| Bandpass 0.07-1.0 Hz + Fresnel zone modeling detects chest displacement of 5-10mm at 5 GHz | 4-60 BPM, <500ms latency |
259
+
|**Heartbeat Detection**| Micro-Doppler shift extraction from fine-grained CSI phase variation | Via ruvector-temporal-tensor |
|**Body Velocity Profile**| Domain-independent velocity x time | Widar 3.0 (MobiSys 2019) |
299
+
The signal processing layer bridges the gap between raw commodity WiFi hardware output and research-grade sensing accuracy. Each algorithm addresses a specific limitation of naive CSI processing — from hardware-induced phase corruption to environment-dependent multipath interference. All six are implemented in `wifi-densepose-signal/src/` with deterministic tests and no mock data.
300
+
301
+
| Algorithm | What It Does | Why It Matters | Math | Source |
|**Conjugate Multiplication**| Multiplies CSI antenna pairs: `H₁[k] × conj(H₂[k])`| Cancels CFO, SFO, and packet detection delay that corrupt raw phase — preserves only environment-caused phase differences |`CSI_ratio[k] = H₁[k] * conj(H₂[k])`|[SpotFi](https://dl.acm.org/doi/10.1145/2789168.2790124) (SIGCOMM 2015) |
304
+
|**Hampel Filter**| Replaces outliers using running median ± scaled MAD | Z-score uses mean/std which are corrupted by the very outliers it detects (masking effect). Hampel uses median/MAD, resisting up to 50% contamination |`σ̂ = 1.4826 × MAD`| Standard DSP; WiGest (2015) |
305
+
|**Fresnel Zone Model**| Models signal variation from chest displacement crossing Fresnel zone boundaries | Zero-crossing counting fails in multipath-rich environments. Fresnel predicts *where* breathing should appear based on TX-RX-body geometry |`ΔΦ = 2π × 2Δd / λ`, `A = \|sin(ΔΦ/2)\|`|[FarSense](https://dl.acm.org/doi/10.1145/3300061.3345431) (MobiCom 2019) |
306
+
|**CSI Spectrogram**| Sliding-window FFT (STFT) per subcarrier → 2D time-frequency matrix | Breathing = 0.2-0.4 Hz band, walking = 1-2 Hz, static = noise. 2D structure enables CNN spatial pattern recognition that 1D features miss |`S[t,f] = \|Σₙ x[n] w[n-t] e^{-j2πfn}\|²`| Standard since 2018 |
307
+
|**Subcarrier Selection**| Ranks subcarriers by motion sensitivity (variance ratio) and selects top-K | Not all subcarriers respond to motion — some sit in multipath nulls. Selecting the 10-20 most sensitive improves SNR by 6-10 dB |`sensitivity[k] = var_motion / var_static`|[WiDance](https://dl.acm.org/doi/10.1145/3117811.3117826) (MobiCom 2017) |
308
+
|**Body Velocity Profile**| Extracts velocity distribution from Doppler shifts across subcarriers | BVP is domain-independent — same velocity profile regardless of room layout, furniture, or AP placement. Basis for cross-environment recognition |`BVP[v,t] = Σₖ \|STFTₖ[v,t]\|`|[Widar 3.0](https://dl.acm.org/doi/10.1145/3328916) (MobiSys 2019) |
<summary><aid="rvf-model-container"></a><strong>📦 RVF Model Container</strong> — Single-file deployment with progressive loading</summary>
298
322
323
+
The RuVector Format (RVF) packages an entire trained model — weights, HNSW indexes, quantization codebooks, SONA adaptation deltas, and WASM inference runtime — into a single self-contained binary file. No external dependencies are needed at deployment time.
docker run --rm -v $(pwd):/out ruvnet/wifi-densepose:latest --export-rvf /out/model.rvf
313
367
```
314
368
315
369
See [ADR-023](docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md).
@@ -319,21 +373,45 @@ See [ADR-023](docs/adr/ADR-023-trained-densepose-model-ruvector-pipeline.md).
319
373
<details>
320
374
<summary><aid="training--fine-tuning"></a><strong>🧬 Training & Fine-Tuning</strong> — MM-Fi/Wi-Pose pre-training, SONA adaptation</summary>
321
375
322
-
Three-tier data strategy:
376
+
The training pipeline implements 8 phases in pure Rust (7,832 lines, zero external ML dependencies). It trains a graph transformer with cross-attention to map CSI feature matrices to 17 COCO body keypoints and DensePose UV coordinates — following the approach from the CMU "DensePose From WiFi" paper (arXiv:2301.00250).
1.**Pre-train** on public datasets (MM-Fi, Wi-Pose) for cross-environment generalization
325
-
2.**Fine-tune** with ESP32 data + camera pseudo-labels for environment-specific multipath
326
-
3.**SONA adaptation** via micro-LoRA + EWC++ for continuous on-device learning
399
+
**Best-epoch snapshotting**: the trainer saves the best validation loss weights and restores them before checkpoint/export — prevents exporting overfit final-epoch parameters.
0 commit comments