当我们讨论人体姿态估计时,RGB 摄像头、红外深度相机、激光雷达几乎是标准答案。但有一种技术路径正在从学术研究走向生产级应用 —— 利用 WiFi 信号实现实时人体感知,无需任何光学传感器。RuView 正是这一方向的代表性实现:通过对 WiFi 信道状态信息的分析,它能够在普通房间内重建 17 个关节点的人体姿态,同时提取呼吸率、心率等生命体征,且整个过程不产生任何图像数据。
从无线电波到人体姿态:技术原理
为什么 WiFi 信号能 “看到” 人
现代 WiFi 设备在传输数据时会记录信道状态信息(Channel State Information,CSI),它描述了信号从发射端到接收端之间经过的物理路径。当人体在房间内移动或呼吸时,身体会散射和反射无线电波,导致 CSI 的振幅和相位发生细微变化。这些变化虽然微弱,但包含了足以推断人体位置和姿态的信息。
具体而言,CSI 数据包含多个子载波( commodity WiFi 设备通常提供 56 或 114 个子载波),每个子载波记录了信号在特定频率上的衰减和相位偏移。当人体遮挡或反射信号时,某些子载波的振幅会增强或减弱,相位也会发生旋转。通过分析这些变化模式,可以推断人体在空间中的位置。更进一步,结合多个接收天线和多跳链路,可以重建人体的全身姿态。
这一技术路线的学术基础来自卡内基梅隆大学的「DensePose From WiFi」研究,该工作首次证明了 WiFi 信号可以用于密集人体姿态估计,其核心思路是将 CSI 特征映射到与图像 DensePose 相同的 UV 坐标空间。
信号处理流水线
RuView 的信号处理流水线分为六个阶段,每个阶段都对应特定的处理算法:
第一阶段:相位净化。 原始 CSI 包含载波频率偏移(CFO)、采样频率偏移(SFO)和包检测延迟等硬件引入的相位误差。通过共轭乘法(conjugate multiplication)可以消除这些误差,公式为 $CSI_{ratio}[k] = H_1 [k] \times \text {conj}(H_2 [k])$,这相当于将两天线或两时刻的 CSI 相除,只保留由人体运动引起的相位变化。
第二阶段:异常值过滤。 标准 Z-score 方法在存在异常值时会失效,因为均值和标准差本身已被异常值污染。RuView 采用 Hampel 滤波器,使用中位数和绝对偏差中位数(MAD)作为鲁棒统计量,公式中的缩放因子为 $\hat {\sigma} = 1.4826 \times MAD$,可以容忍高达 50% 的异常值污染。
第三阶段:子载波选择。 并非所有子载波对人体运动同样敏感,部分子载波可能位于多径 null 点。对每个子载波计算运动敏感度 $sensitivity [k] = \frac {var_{motion}}{var_{static}}$,然后选择敏感度最高的 10-20 个子载波,通常可以将信噪比提升 6-10 dB。
第四阶段:时频分析。 对选中的子载波进行短时傅里叶变换(STFT),生成频谱图(spectrogram)。呼吸信号对应 0.1-0.5 Hz 频段,步行对应 1-2 Hz 频段,静止则主要是噪声。这一步使用滑动窗口方法,窗口大小通常为 2-3 秒。
第五阶段:Fresnel 区域建模。 仅依赖零交叉计数在多径丰富的环境中会失效。Fresnel 模型根据发射 - 人体 - 接收的几何关系预测呼吸信号应该出现的位置,公式为 $\Delta\Phi = 2\pi \times 2\Delta d / \lambda$ 和 $A = |\sin (\Delta\Phi/2)|$,其中 $\Delta d$ 是人体位移,$\lambda$ 是信号波长。
第六阶段:身体速度 profile。 从多普勒频移提取身体速度分布(BVP),这与房间布局无关 —— 相同的速度分布无论在哪个房间产生相同的特征,因此具有跨环境泛化能力。
神经网络推理
经过信号处理后的特征被送入图 Transformer 网络,输出 17 个 COCO 标准关键点(头部、颈部、双肩、双肘、双腕、髋部、双膝、双踝)和对应的 DensePose UV 坐标。网络结构包含多头部交叉注意力机制,将 CSI 特征空间映射到人体姿态空间。训练采用六项复合损失函数:MSE 回归损失、分类交叉熵、UV 坐标损失、时序一致性损失、骨骼长度损失和左右对称性损失。
关键参数与阈值
CSI 采集参数
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 子载波数量 | 56 | commodity ESP32 标准输出,Intel 5300 可达 114 |
| 采样率 | 20-28 Hz | ESP32-S3 实际可达 28.5 Hz |
| 天线配置 | 2x2 或 3x3 MIMO | 多天线提升相位估计精度 |
| 频段 | 2.4 GHz 或 5 GHz | 5 GHz 分辨率更高但穿透性较弱 |
生命体征检测参数
| 指标 | 范围 | 方法 | 置信度阈值 |
|---|---|---|---|
| 呼吸率 | 6-30 BPM (0.1-0.5 Hz) | 带通滤波 + FFT 峰值检测 | 0.6 |
| 心率 | 40-120 BPM (0.8-2.0 Hz) | 带通滤波 + FFT 峰值检测 | 0.5 |
| 存在检测 | - | RSSI 方差 + 运动频段功率 | 0.7 |
姿态估计参数
| 参数 | 值 | 说明 |
|---|---|---|
| 关键点数量 | 17 | COCO 标准格式 |
| 最大追踪人数 | 3-5 人 / 每 AP | 受限于 56 子载波物理上限 |
| 更新频率 | 20 Hz | 多节点融合可达更高 |
| 关键点置信度阈值 | 0.5 | 低于此值的关键点被丢弃 |
| 追踪丢失阈值 | 30 帧(约 1.5 秒) | 超过此帧数未检测到则终止轨迹 |
多节点部署参数
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 节点数量 | 4-6 个 | 形成 N×(N-1) 测量链路 |
| TDM 时隙 | 50 ms / 节点 | 时间分片协议 |
| 频道跳转 | Ch1 → Ch6 → Ch11 | 扩大有效带宽至 60 MHz |
| 穿透墙壁深度 | ≤ 5 米 | Fresnel 区域几何决定 |
| 相干门限 | Z-score 阈值 2.5 | 低于此值拒绝测量帧 |
边缘部署架构
ESP32-S3 边缘计算
RuView 的一个关键特性是完整的边缘运行能力。整个姿态估计流程可以在售价仅 8 美元的 ESP32-S3 开发板上运行,内存占用约 160 KB,支持 54,000 帧 / 秒的处理速度。固件支持四级边缘智能:
- Tier 0:仅传输原始 CSI 数据
- Tier 1:信号清洗、子载波选择、数据压缩(节省 30-50% 带宽)
- Tier 2:实现存在检测、呼吸心率测量、跌倒检测
- Tier 3:运行自定义 WASM 模块(如手势识别、入侵检测)
边缘部署的网络拓扑采用星型结构:多个 ESP32 节点通过 UDP 将 CSI 数据发送到中央服务器,服务器负责多节点数据融合和姿态重建。在多节点配置下,系统利用多静态感知(multistatic sensing)原理,通过 N×(N-1) 条链路实现 360 度房间覆盖,有效消除单节点的盲点问题。
延迟预算
对于实时应用,延迟是核心指标。RuView 各阶段的延迟分布如下:
- CSI 采集:50 ms(20 Hz 采样周期)
- UDP 网络传输:< 1 ms(本地网络)
- 信号预处理(Rust):~18.47 微秒 / 帧
- 神经网络推理:视模型大小,通常 < 50 ms
- 生命体征 FFT 分析:~86 微秒 / 帧
整体端到端延迟在 100 毫秒以内,完全满足实时监控和报警场景的需求。
自学习与环境适应
传统 WiFi 感知系统需要在特定房间内进行大量标注数据采集才能正常工作。RuView 采用了自学习架构 ADR-024(AETHER),其核心思路是通过对比学习(contrastive learning)从原始 WiFi 数据中自动提取环境指纹,无需人工标注。具体而言,系统为每个房间维护一个 128 维的指纹向量,新数据与指纹的差异用于判断是否存在异常事件。
跨环境泛化通过 ADR-027(MERIDIAN)实现:该模块使用梯度反转层(Gradient Reversal Layer)强制模型丢弃房间特定的特征,使用几何编码器(FiLM)将发射器和接收器的位置信息注入每个网络层,使用硬件归一化器将不同芯片的 CSI 映射到统一的 56 子载波格式。部署时,系统执行测试时自适应(test-time adaptation),利用少量无标签帧快速调整模型参数。
应用场景与权衡
适用场景
RuView 的设计目标并非取代视觉姿态估计,而是覆盖那些摄像头不适用的场景:
- 医疗护理:非接触式生命体征监测,适用于 ICU 睡眠呼吸暂停检测、养老院跌倒预警。无需佩戴任何设备,患者顺应性极佳。
- 隐私敏感环境:浴室、更衣室、家庭卧室等不便安装摄像头的区域。可以检测人员存在和活动状态,但完全不产生图像。
- 穿透 sensing:火灾现场搜救、废墟下幸存者检测 ——WiFi 信号可以穿透混凝土和废墟,这是光学传感器无法做到的距离。
- 智能建筑:会议室占用检测、办公区域人数统计、HVAC 控制触发。成本可低至每个区域 8 美元(单个 ESP32)。
- ** robotics 感知 **:dust/fog/smoke 环境中机器人对人类存在的感觉补充,LIDAR 和视觉在这些条件下都会失效。
当前局限性
虽然 RuView 展示了令人印象深刻的能力,但在实际部署中需要审慎评估以下限制:
- 精细姿态精度:当前系统对躯干和粗略姿态的估计较为可靠,但对手指、脚踝等细小部位的精确追踪仍不稳定。在 COCO OKS(目标关键点相似度)指标上,通常躯干接近图像基方法,但四肢精度有差距。
- 多径敏感性:房间内的家具、金属物体、玻璃表面都会产生复杂的多径效应。在空旷房间和 furnished 房间中,模型可能需要重新适配。
- 人员密度上限:单 AP 约支持 3-5 人密集追踪,更多人数会因信号混叠导致精度下降。多 AP 部署可线性扩展,但成本也随之增加。
- 环境泛化挑战:尽管有 MERIDIAN 跨环境训练,模型在新环境中的性能仍可能有 10-20% 的精度损失,通常需要 10-30 分钟的自适应调整。
工程化实践要点
硬件选型建议
- 入门方案:3-6 个 ESP32-S3 节点 + 普通 WiFi 路由器,约 54 美元
- 研究级方案:Intel 5300 研究网卡 + Linux 注入固件,支持 3×3 MIMO 和更宽频段
- 最低成本方案:任何带 RSSI 的设备(无 CSI 能力),只能做粗略存在检测,无法姿态估计
部署检查清单
在生产环境中部署 RuView 时,以下检查点值得关注:
- CSI 硬件验证:运行
./verify脚本确认硬件支持 CSI 采集;无 CSI 能力的设备只能使用 RSSI 模式 - 信号质量监控:部署相干门限过滤,SNR 低于 10 dB 的帧应被拒绝
- 房间指纹初始化:首次部署后运行 10-30 分钟自学习阶段,让系统建立环境基准
- 多节点时间同步:TDM 协议要求节点间时钟偏差 < 10 ppm,ESP32 晶振通常可满足
- 安全加固:生产部署应启用 QUIC 传输层加密和 HMAC 帧完整性校验
数据来源
主要信息来源为 RuView 官方 GitHub 仓库(https://github.com/ruvnet/RuView),该实现基于卡内基梅隆大学 DensePose From WiFi 学术研究。