最近一个叫 wifi-densepose 的项目登上了趋势榜,这个项目看起来就很反直觉,它主要是通过分析室内已有的 WiFi 信号来感知人的位置和姿态,从而实现“无摄像头”的监控

简单来说,就是通过 CSI(Channel State Information) 数据来替代原本的 RSSI ,具体原理大概是:

  • 当 WiFi 信号在室内传播时,会遇到墙壁、家具和人体,人体作为障碍物,会引起信号的反射、折射和散射
  • 人的不同动作(如走动、坐下、举手)会以特定的方式改变 WiFi 信号的幅度(Amplitude)和相位(Phase),所以可以通过算法得到一个人的“指纹”
  • 项目甚至表示可以捕捉微小的动作,如呼吸(4-60 BPM)和心跳,技术上是通过分析信号频率的微小偏移(微多普勒)实现的

那到这里你应看出来了,它的关键不在于硬件,而在于其复杂的 AI 神经网络算法,因为这里的核心是需要将无线信号“翻译”成了视觉元素:

  • 模态转换:需要有一个转换实现,接收 WiFi 信号数据,通过编码器转换为 2D 的“类视觉特征图”
  • DensePose 整合:文档说的是用一种改进的 DensePose-RCNN 模型,原本这种模型是为摄像头设计的,但在这里它被训练来识别由 WiFi 信号生成的特征,并将这些特征映射到人体表面的 keypoints(关键点)上
  • 实时处理:通过 Rust 系统可以将处理延迟控制在 50 毫秒以内,实现每秒 30 帧的实时姿态追踪
  • 除此之外,用多个路由器的情况下,形成交叉覆盖区域来提高精度,通过 MIMO 从不同角度“观察”人体

所以从代码层面,它的核心流程:

  • CSI 数据采集: 系统利用 WiFi 设备获取底层的 CSI 数据,这个数据主要是记录了信号在多径传播中(被墙壁、人体反射后)的幅度 (Amplitude) 和 相位 (Phase) 的变化
  • 信号预处理
    • 去噪与归一化:移除环境杂波干扰
    • Hamming Window 处理 :减少频谱泄漏,使信号更稳定
    • 相位校准:处理 WiFi 信号固有的相位偏移问题
  • **模态转换 **: 模型接收 CSI 原始张量,通过编码器映射为类似视觉特征的 2D 图像张量
  • DensePose: 利用深度学习中的 DensePose Head 架构(densepose_head.py),对生成的特征图进行两类回归:
    • 人体部位分割:识别躯干、四肢等不同部位
    • UV 坐标回归:将人体表面映射到 2D 坐标系,实现精细到皮肤表面的 3D 姿态拟合

看完了大家觉得如何?看起来很高大上,实际上就是对特征数据的暴力整合,也就是这个项目的核心其实是训练数据

为什么这个信号特征是睡着,为什么这个信号特征是蹲着,这些标签都需要数据提供。

但是,从开源代码上看,其中需要进行 WiFi 信号处理和姿态预测的核心功都还没实现,所以我突然很好奇,这个项目是怎么飙升到趋势榜的。

因为从原理上我们可以看出来,计算 WiFi 感知对于躯干定位较准,但在肢体(手指、四肢末端)的细节捕捉肯定没办法精准,除非你有大量的精准特征数据,而且原理对环境依赖相当敏感,也就是环境发生变化,你数据就要进行校准,不然无法剔除静态物体的反射干扰。

最重要的是,当室内人的数量多一点时,信号散射会极度混乱。

所以作者怎么解决这些问题呢?嗯,作者没有解决

是的,作者没有解决或者没有开源这些能力,尽管 README 文件和文档充写了很多功能,指标数据也写的很好看,但是代码里很多都没有实现,而且有一堆 mock 数据,作者没有提供数据集,你不用 mock 就要自己去标注和做数据。

最过分的是,真实硬件接口是"占位符",RouterInterface 中的真实 CSI 采集函数 _collect_real_csi_data() 直接打印警告并返回 None完全没有实际实现

CSI 解析器也用随机数代替真实数据 ESP32CSIParser 的 amplitude/phase 解析直接用 np.random.rand 生成随机数,注释写着 “simplified for now”:

就算是在非 mock 模式下,estimate_poses() 方法内部仍也是用 np.random.randn 生成随机 CSI 数据:

训练权重和数据也没有,看下里的感觉就是:

整个代码库就像是 Vibe Coding 写的样板代码,几乎看到完整实现的核心功能

再深挖可以发现,这个项目大概率是基于 “DensePose From WiFi”(ArXiv:2301.00250)的论文实现,而这个过程作者应该是直接让 AI 复现论文,只是没有数据集和更新信息的情况下, AI 根本复现不了,就复现了一个高大上的 README,和一个工程原型壳子。

所以,最后一个问题:大家 star 和 fork 的时候都不看代码实现吗?直接一个 README 就嗨起来了?感觉这更像是一场 AI 的「皇帝的新衣」

项目地址

https://github.com/ruvnet/wifi-densepose

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐