
大家好,我是何三,独立开发者
你家里有多少个摄像头?
门口一个、客厅一个、卧室门口再藏一个……为了安全感,我们装了一堆摄像头,然后每天活在"我是不是被偷窥了"的焦虑里。隐私和安全的矛盾,一直是个死结。
但最近一个开源项目让我坐不住了——RuView(WiFi DensePose),它用家里最普通的 WiFi 信号,就能重建人体姿态、检测呼吸心跳,甚至感知有没有人跌倒。没有摄像头、不拍照、不录像,连光都不需要。
硬件成本呢?每个传感器节点最低只要 6 美元。
说实话,第一次看到这个项目介绍的时候,我以为又是什么学术团队的 demo。看了代码才知道,这玩意儿是认真的——1300 多个测试、62 份架构决策记录、19 个 Rust crate、完整的 Docker 部署方案。用 Rust 写的信号处理流水线跑到了 每秒 54000 帧,比 Python 版本快了 810 倍。
今天就来拆解一下这个项目到底在做什么,以及为什么它值得关注。
WiFi 信号怎么能"看到"人?

很多人一听"WiFi 感知"就觉得玄乎,其实原理并不复杂。
你手机连 WiFi 的时候,路由器发射的 2.4GHz 无线电波会在房间里到处反射、散射。当这些波碰到你身体的时候,会因为人体的导电性而发生相位和幅度的变化——这就是 CSI(信道状态信息)。
简单说,WiFi 芯片在接收每一帧数据的时候,都能知道每个子载波的信号强度和相位发生了什么变化。你的每一次呼吸(胸腔起伏改变反射面)、每一次心跳(微弱的体表振动)、每一个动作(改变信号反射路径),都会体现在 CSI 数据里。

RuView 做的事情就是:用 ESP32-S3 芯片把 CSI 数据采集下来,通过信号处理流水线清洗噪声,然后喂给神经网络,输出结构化的感知结果。
这里有个关键细节——穿墙感知。WiFi 信号本身就是能穿墙的,利用菲涅尔区几何和多径建模,系统可以检测到墙壁后面的人,最深达 5 米。这是任何摄像头都做不到的。
这系统到底能干什么?
一口气列出来可能会让人觉得在吹牛,但这些能力都有对应的模块和数据支撑:
| 能力 | 技术路线 | 实际表现 |
|---|---|---|
| 姿态估计 | CSI 子载波 → DensePose UV 映射 | 17 个关键点骨架 |
| 呼吸检测 | 带通滤波 → FFT 峰值 | 6–30 次/分钟 |
| 心率提取 | 带通滤波 → FFT 峰值 | 40–120 bpm |
| 存在感知 | RSSI 方差 + 运动频段功率 | 延迟 < 1ms |
| 穿墙检测 | 菲涅尔区 + 多径建模 | 最深 5 米 |
| 多人追踪 | 卡尔曼滤波 + 重识别嵌入 | 每个 AP 约 3–5 人 |
存在检测可能是最实用的功能。ESP32 节点可以在完全离线的情况下独立运行,不需要服务器,直接在芯片上做存在检测和跌倒告警。这意味着哪怕断网了,系统照样工作。
想象一下几个应用场景:
- 老人独居监测:不装摄像头也能知道老人有没有摔倒、呼吸心率是否正常
- 办公室空间利用率:不用人脸识别就知道会议室有没有人
- 安防入侵检测:穿墙感知,关了灯也能发现异常
最妙的是,因为全程不涉及图像采集,所以天然符合 GDPR 和 HIPAA 的隐私合规要求——你根本不需要贴"此处有监控"的告示。
6 美元怎么搭一套感知系统?
硬件清单极其简陋:
- ESP32-S3(8MB 闪存版):约 9 美元
- ESP32-S3 SuperMini(4MB 紧凑版):约 6 美元
- 你家现有的 WiFi 路由器
- 一根 USB 数据线
一个节点就能做存在检测、呼吸和心率监测。搭个 3 节点的基础网格(约 27 美元),就能做 2D 姿态估计。4-6 个节点的全量配置(约 54 美元),可以实现 3D 姿态重建,精度抖动控制在亚 30 毫米内。
总功耗不到 10 瓦。这比装一个智能摄像头还便宜、还省电。
工程质量令人发指
真正让我对这个项目改观的,不是它做了什么,而是它怎么做的。
先看数据:19 个 Rust crate、1300+ 测试、62 份 ADR(架构决策记录)、8 个 DDD 领域模型。这在一个开源项目里已经算相当工程化了。
再看技术栈的分层设计:
wifi-densepose/
├── rust-port/ # Rust 生产级运行时(54000fps)
│ └── crates/ # 19 个独立 crate
│ ├── core # 核心类型和 CSI 原语
│ ├── signal # 14 模块信号处理
│ ├── nn # ONNX/Candle 推理
│ ├── train # 8 阶段训练流水线
│ ├── sensing-server # Axum REST/WS
│ ├── wasm # 浏览器端
│ └── desktop # Tauri v2 桌面应用
├── firmware/ # ESP32-S3 固件(C/FreeRTOS)
├── ui/ # Three.js 3D 可视化
├── v1/ # Python v1 参考实现
├── monitoring/ # Prometheus + Grafana
└── docs/ # 62 份 ADR + 文档
信号处理从底层 Rust crate 到 ESP32 固件,全部有清晰的领域边界。每个 crate 独立测试,可以按需组合。项目甚至实现了 WASM 边缘推理——直接在 ESP32 上运行 wasm3 解释器执行模型推理,不依赖网络。

它还做了一个让我觉得很硬核的东西:确定性证明(Deterministic Proof)。运行一条 ./verify 命令,用种子 42 生成的 1000 帧合成数据通过整个流水线,然后和预发布的 SHA-256 哈希比对。如果哈希对不上,说明流水线有改动。这种对确定性的执着,在 ML 项目里很少见。
30 秒体验一下
不买硬件也能玩。最快的方式就是 Docker:
docker pull ruvnet/wifi-densepose:latest
docker run -p 3000:3000 ruvnet/wifi-densepose:latest
打开 http://localhost:3000,你会看到一个 Three.js 驱动的 3D 可视化仪表盘。系统检测不到 ESP32 硬件时会自动回退到模拟模式,用合成数据展示完整的感知效果。
如果连 Docker 都不想装,纯 Python 验证也行:
pip install numpy scipy
./verify
这会证明信号处理流水线是真实且确定性的——不需要 PyTorch、不需要 GPU、不需要任何硬件。
聊几个槽点
虽然这个项目工程质量很高,但说实话也有让人犹豫的地方。
学术到工程的鸿沟。WiFi DensePose 的底层研究来自卡内基梅隆大学,学术 paper 里展示的效果通常是在受控实验室环境下的。到了真实家庭环境——有家具、有多径干扰、有隔壁邻居的 WiFi 污染——精度能打几折,项目文档里没有给出足够的基准数据。这也是很多 WiFi 感知项目被诟病的原因:论文里牛得一塌糊涂,部署到现场拉胯。
ESP32 CSI 的硬件限制。只有 ESP32-S3 支持完整的 CSI 采集,初代 ESP32 和 ESP32-C3 都不行。而且 2.4GHz WiFi 的 CSI 在 5GHz 下完全无法工作,如果你家路由器只开了 5GHz 频段,还得手动切回 2.4GHz。
多人场景的物理天花板。WiFi 感知的物理极限就是每个接入点大约 3-5 人。官方也没藏着掖着,直接标注了"物理极限"三个字。这意味着这东西在小房间、单人场景下效果最好,做成商用的人数统计系统还需要更多节点和更复杂的融合算法。
学习曲线不低。虽然 Docker 一键启动很方便,但真要深入理解信号处理流水线、训练自己的模型、调优 ESP32 固件,门槛还是相当高的。文档虽然详尽(62 份 ADR),但内容量巨大,新手容易迷失。
代码和资源
- GitHub 仓库:https://github.com/ruvnet/wifi-densepose
- Docker 镜像:
ruvnet/wifi-densepose:latest - 硬件:ESP32-S3(8MB Flash),单节点约 $6-9
- 技术栈:Rust + Python + ESP-IDF + Three.js + ONNX Runtime
- 许可证:开源(具体见仓库)
写在最后
RuView 让我看到了一种可能性:AI 感知不一定非得依赖摄像头。
用无处不在的 WiFi 信号做感知介质,有天然的优势——穿墙、无光、隐私友好、硬件成本极低。当然也有明显的劣势——精度不如摄像头、场景适应性差、部署复杂度高。
但作为一个开源项目,它的工程质量、文档深度和架构设计都远超同类项目。就算你现在用不上 WiFi 感知,它的信号处理流水线、ESP32 固件架构、Rust + Python 双代码库的设计模式,都值得学习。
至少,下次有人跟你争论"隐私和安全能不能兼顾"的时候,你可以甩这个项目给他看看。
本文使用 MGO 编辑并发布
关注"何三笔记",回复"mgo" 免费下载使用