WiFi DensePose 项目提供了一个创新的边缘计算 pipeline,利用商用 WiFi 的信道状态信息(CSI)信号实现实时人体姿态估计、生命体征监测和存在检测,完全无需视频像素。这种方法的核心优势在于隐私保护(无图像存储)、穿墙能力(Fresnel 区几何建模支持 5m 深度)和低成本部署(ESP32-S3 节点约 54 美元)。通过物理基础的信号处理结合机器学习,该 pipeline 在 Rust 实现下达到 54K fps 的处理速度,适用于医疗、安防和灾难响应等场景。
pipeline 的信号处理链路是实现高精度姿态估计的关键,从原始 CSI 数据(子载波幅度 / 相位)到 DensePose UV 映射的转换分为六个 SOTA 算法步骤。首先是相位清理,使用 SpotFi 的共轭乘法消除载波频率偏移(CFO)和采样频率偏移(SFO):对于天线对 H1 [k] 和 H2 [k],计算 CSI_ratio [k] = H1 [k] * conj (H2 [k]),这保留了环境引起的相位差而去除硬件噪声。“WiFi DensePose turns commodity WiFi signals into real-time human pose estimation, vital sign monitoring, and presence detection — all without a single pixel of video.” 其次,Hampel 滤波器替换异常值,使用运行中位数 ± 1.4826 × MAD(中位绝对偏差),阈值 σ=3,抵抗高达 50% 的污染数据。然后是子载波选择,基于运动敏感度(var_motion /var_static)排名并选 top-K(典型 10-20 个),提升 SNR 6-10 dB。
接下来是 CSI 谱图生成,使用滑动窗 STFT(短时傅里叶变换)将 1D 时序转为 2D 时频矩阵,便于 CNN 捕捉呼吸(0.2-0.4 Hz)或行走(1-2 Hz)模式。Fresnel 区模型则根据 TX-RX - 人体几何预测胸部位移引起的信号变化:ΔΦ = 2π × 2Δd / λ,幅度 A = |sin (ΔΦ/2)|,支持穿墙场景。最后,体速度剖面(BVP)从多普勒移位提取速度分布,作为跨环境不变的域独立特征。这些步骤在 Rust 的 wifi-densepose-signal crate 中实现,全 pipeline 延迟 <100 μs。
神经网络推理部分采用图变换器架构,将 CSI 特征矩阵映射到 17 个 COCO 关键点和 DensePose UV 坐标。输入为 56 通道 CSI,经 Transformer + GNN 处理,支持多人跟踪(每 AP 3-5 人)。模型打包为单文件 RVF 容器,支持渐进加载(Layer A <5ms 启动)和 SONA 自适应(Micro-LoRA rank-4 + EWC++ 防遗忘)。训练使用 MM-Fi 数据集,8 阶段纯 Rust pipeline,包括 6 项复合损失(MSE、CE、UV 等)和 cosine 调度 SGD。
生命体征监测集成在 pipeline 中:呼吸率(6-30 BPM,0.1-0.5 Hz 带通 + FFT 峰值)和心率(40-120 BPM,0.8-2.0 Hz)。置信度基于谱相干性和信号质量(0.0-1.0)。存在检测使用 RSSI 方差 + 运动带功率,延迟 <1ms。即使无 CSI 硬件,消费级 WiFi 也支持粗粒度 presence。
可落地部署参数与清单如下:
硬件配置:
- 推荐:3-6x ESP32-S3 mesh(20 Hz,56-192 子载波),成本~54 美元。
- 备选:Intel 5300 / Atheros AR9580(3x3 MIMO)。
- 软件阈值:姿态置信阈值 0.7,最大人数 10,穿墙深度 5m。
快速启动(30 秒无工具链):
docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 -p 3001:3001 -p 5005:5005/udp ruvnet/wifi-densepose:latest
访问 http://localhost:3000 查看实时 UI(Three.js 可视化)。
ESP32 设置清单:
- 下载预编译固件:https://github.com/ruvnet/wifi-densepose/releases/tag/v0.1.0-esp32。
- 刷写:
python -m esptool --chip esp32s3 --port COM7 --baud 460800 write-flash ...。 - 配置:
python scripts/provision.py --ssid "YourWiFi" --target-ip 192.168.1.20。 - 聚合:
cargo run -p wifi-densepose-hardware --bin aggregator --bind 0.0.0.0:5005。
API 参数:
- REST:
/api/v1/sensing(最新帧)、/api/v1/vital-signs。 - WebSocket:
ws://localhost:3001/ws/sensing实时流。 - 环境变量:
POSE_CONFIDENCE_THRESHOLD=0.7,POSE_MAX_PERSONS=10。
监控与优化要点:
- 性能:vitals 11,665 fps,内存~100 MB。使用
--benchmark验证。 - 风险限:无 CSI 硬件降级至 RSSI(仅 presence);多人超 5 人 / AP 精度降。
- 回滚:模拟源
--source simulate测试;渐进加载--progressive确保启动。 - 自适应:SONA 监控 CSI 漂移(3-sigma),自动微调。
该 pipeline 的 Rust 重写带来 810x 加速(Python v1 15ms → 18.47 μs),Docker 镜像仅 132 MB,542+ 测试覆盖。实际部署中,零售占用率 >95%,老人护理跌倒警报 <2s。通过多 AP 线性扩展(4 AP 覆盖 15-20 人),适用于无隐私摄像头禁区的场景。
资料来源:
- GitHub - ruvnet/wifi-densepose
- 相关论文:arXiv:2301.00250(DensePose From WiFi)