复现前必读:WiFi CSI感知最容易踩的七个坑
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
先说个反常识的事:用WiFi“看见”人,代码跑通只要十分钟,跑出可信结果可能要一个月。
这个叫 RuView 的开源项目,在GitHub上被刷成“路由器变透视眼”,说法是花几十块钱买个 ESP32 小板子,就能隔墙检测有没有人、测呼吸心率、甚至估出17个人体关键点。拿它做过演示的人不少,真敢把结果拿去用的,不多。
原因很朴素:这套东西的难点根本不在“装不装得上”,而在物理层面那些看不见的坑。
下面这七个坑,是这个项目自己的文档里反复认账、反复踩过的。你要是打算动手复现,建议先看完。
先搞清楚它到底在干什么
一句话:WiFi信号在房间里到处反射,人一动、一呼吸,这些反射路径就变了;把变化抓下来,就能反推出人的状态。
CSI(信道状态信息)就是那个“抓变化”的东西——它不是信号强不强,而是每个子载波上的幅度和相位,一帧里几十上百个数,像给房间拍了一张“无线电指纹”。
而 RSSI 只是“信号强度”,一个数字。这是后面所有坑的源头。
坑一:把RSSI当CSI用,从第一步就走错了路
很多人上手第一件事,是打开笔记本自带的无线网卡,发现只能读到信号强度,于是拿这个数字去做姿态估计,然后得出“这项目是假的”。
这不是项目的锅。普通消费级网卡只暴露RSSI,不暴露CSI。官方的原话很直接:RSSI只能做粗粒度的“有人/没人、在动/没动”,想估姿态必须有能出CSI的硬件,比如八美元左右的 ESP32-S3,或者专业的采集网卡。
不过这里有个特别诚实的反转:项目自己做过一组实验,在“数房间里几个人”这种两类任务上,只用RSSI居然保住了全CSI方案约95%的准确率,模型小到只有几百个参数。
所以坑不在RSSI本身,而在于——你以为自己在做CSI,其实手里只有RSSI,却还照着CSI的教程调参。
坑二:相位没校准,直接套模型等于听噪音
CSI里最值钱的是相位,最容易废掉的也是相位。
原因很现实:每一包数据到达时,硬件都会带上随机的载波偏移、采样偏移、包检测延迟。这些偏移每包都变,跟人动不动没关系。你不处理,模型学到的就是硬件的脾气,不是人的动作。
学术界的标准解法叫“共轭相乘”:拿两根天线的数据互乘,把硬件偏移抵消掉,只留下环境造成的相位差。
问题是——很多廉价板子只有单天线。单天线就做不了这一步,你只能退而求其次,靠相位清洗、离群点剔除、空房基线相减这些补救手段。项目文档里说得很明白:单天线、56个子载波、20帧窗口的数据流,根本承载不了多天线研究里那种精细空间信息。
这就是为什么网上那些“单块ESP32实时17点骨架”的演示,基本都经不起追问。
坑三:天线随手一放,覆盖率能差93倍
这一条最颠覆直觉。
WiFi感知有一个“菲涅尔区”的概念,说白了就是收发两点之间一个橄榄球形状的敏感带。人站在这条带子里,信号变化最明显;站在带子外面,你收到的几乎全是环境杂波。
项目做过一个5米×5米的卧室仿真:把床和椅子设成“真正需要感知的区域”,然后把墙上每25厘米一个位置的所有天线组合都算了一遍,一共2900种摆法。
结果呢?最优摆法和随便摆的中位数,覆盖率差了93倍。大多数位置的实际覆盖率只有0.5%,等于白装。
更反直觉的是最优点:斜着穿过房间长轴的那条线,比贴着墙的短线效果更好。因为链路越长,中间那个“橄榄球”越宽。
所以别再问“为什么我的设备啥也感知不到”了,先看看你的两个节点是不是正对着穿过客厅。
坑四:跳过空房基线,误报能把你逼疯
RuView 的校准流程是强制串联的三步:先采空房基线,再做8个引导动作的登记,最后训练房间专用模型。中间任何一步都跳不过去。
空房基线有个硬门槛:至少600帧。少于这个数,程序直接报错退出,不会给你一个“凑合能用”的半成品。
这里藏着第一个实操陷阱:默认采集时长是30秒,而600帧是按20Hz估的。如果你家WiFi比较拥挤,节点实际只跑到十几赫兹,30秒根本凑不够600帧——然后你就卡在一个看起来莫名其妙的报错上。正确做法是加时长,而不是去改低帧数门槛。
第二个陷阱更生活化:家里有宠物。项目自己承认,目前的“有人/没人”判断,本质就是看幅度方差和均值偏移有没有超过阈值。猫跳上沙发、狗从传感器前跑过,只要扰动幅度接近你登记“小幅走动”时的水平,系统就会判定“有人在”。
文档里写得很直白:目前没有任何配置项能抑制这个。
第三个坑是环境。开空调采基线没问题,风扇一直转也没问题,它们会被当成“空房的一部分”减掉。但如果空调是在采集到第15秒时才启动的,这份基线就废了——它既不匹配“开着”,也不匹配“关着”。
坑五:以为采样率是20Hz,其实它一直在飘
几乎所有教程都写着“20Hz CSI”。但实测数据是另一回事。
项目在一台 ESP32-C6 上测过:原始回调能到每秒34次左右,可一旦开启边缘端信号处理,实际稳定在每秒8次上下。也就是说,你以为的20Hz,到手可能只有8Hz。
这直接影响两件事。
一是训练数据的产量。判断窗口是按20帧一窗算的,帧率掉一半,你录10分钟拿到的有效样本就少一半,很多人的“训练效果差”其实栽在这。
二是多节点融合。两个节点要能融合,必须抓到“空中的同一包”。如果每个节点各按各的节奏抽帧,它们拿到的只是“同样多的帧”,不是“同样的帧”。
项目做过一组很漂亮的三小时对照实验:让节点按“距上次收帧满20毫秒”抽帧,配对率只有24%;改成按 802.11 包的序列号抽帧,配对率直接翻到56%,提升2.3倍,而且不需要对时、不需要主节点。
所以坑不在“帧率不够”,而在你以为帧率够,还拿不同步的帧去做融合。
坑六:多径和穿墙,物理规律不跟你讲情怀
“隔墙看人”是这项目最出圈的卖点,也是最容易被夸大的地方。
先看穿墙。官方口径:WiFi能穿石膏板、木头、混凝土(30厘米以内),金属墙和金属门会大幅衰减。单AP的情况下,穿墙后的有效距离大约5米;上3到6个节点的组网,靠多视角融合能拉到8米左右。
再看多径。这是更硬的墙。项目自己的研究笔记里有一句话特别扎心:在20MHz带宽下,整个房间会坍缩成一个单一的时延簇。翻译成人话——分辨率不够,屋里所有反射路径糊成一团,你分不清哪条是直达、哪条是墙反弹。
还有带宽和精度的关系:想分辨更细的动作,就得有更宽的频段;可消费级设备就那么多带宽,这是花钱也买不来的。
所以别指望几十块的板子做到“厘米级骨架”,那不是调参问题,是物理问题。
坑七:把别人的数字,当成自己的结果
这一条是七个坑里最贵的。
RuView 曾经宣传过一个“92.9% PCK@20”的姿态精度,后来自己发公告撤回了。原因是复盘发现,那个数字来自一个“永远输出同一个姿势”的模型,在69帧几乎静止的画面、用绝对像素阈值打分——在这种评分方式下,一个“平均姿势”预测器能拿满分。
还有一个更典型的:“存在检测100%准确率”。后来发现那段录音里只有一个人、6000多帧里6000多帧都是“有人”——一个永远回答“是”的程序也能拿99.98%。这个数字同样撤回了,换成了更诚实的82.3%。
现在项目里真正站得住的成绩是这样的:
- 82.69%的躯干归一化 PCK@20,来自公开数据集MM-Fi的基准测试,不是你家客厅的实测;
- 自家设备上训练的模型,在留出集上只有3.0%,离35%的目标还差得远;
- “存在检测”约占82.3%,是时间三元组任务的指标,也不是“百分百”。
还有一个更隐蔽的坑:指标本身可以骗人。项目做过一个演示——同一个预测结果,用“躯干直径”归一化打分是50分,用“包围盒对角线”打分是100分,用“绝对像素”打分是75分。
数字没变,结论天差地别。
所以看到任何“WiFi姿态准确率XX%”的说法,第一句该问的是:哪个数据集、哪种归一化、多少帧、谁标注的。
那到底还能不能玩?
能,而且门槛真不高。
硬件成本:一块 ESP32-S3 大概八美元,凑三节点组网大约五十多美元,比一台像样的摄像头还便宜。软件上,官方提供 Docker 镜像,一条命令就能起一个网页界面,打开就是实时热力图、信号曲线、分类结果——不需要显卡,普通笔记本就能跑。想先看效果,还可以直接用模拟数据模式,把整条链路走一遍。
但请把它当成什么?一个信号实验平台,不是开箱即用的成品。
适合的人:喜欢折腾硬件、做养老看护原型、做智能家居联动、或者单纯想搞清楚“无线电感知”到底怎么回事的极客和研究者。
不适合的人:想买回来插电就隔墙看人的普通用户。目前它会误报宠物、会被家具挪动搞失效、会在你换了个房间之后集体失灵——而且项目很坦白地说,重新校准之后,之前训练的模型全部作废,得重来一遍。
说句公道话
这套项目被骂过“AI 造假”,也确实是真被找出了造假的数字,然后自己撤回了。
但它同时做了一件在开源圈很少见的事:写了一份“证明文档”,把每条宣称分成三类——自己机器上跑出来的、只是引用的、需要数据和硬件才能验证的。你甚至可以一条命令跑完核心校验,看它到底是真跑还是嘴炮。
这个态度,比任何精度数字都值得看一眼。
最后留个问题给大家:如果家里真装上一个不用摄像头的“WiFi雷达”,你最想让它监测什么?是老人夜里有没有起床,还是孩子有没有偷偷爬起来玩手机?评论区聊聊,说不定下一个被做出来的功能,就是从这些需求里长出来的。
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考