RuView 实验 R9 深度解读:RSSI 指纹拓扑——时间邻近是否等于特征邻近?
【免费下载链接】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
R9(RSSI fingerprint topology)是 RuView 开源仓库中 SOTA 研究循环(2026-05-22,共 41 个研究 tick)的关键一环,用于回答一个决定产品路径的问题:仅凭 RSSI(接收信号强度)能否完成基于指纹的室内定位?本指南以 R9 实验文档 为骨架,结合同目录 R8、R5、R12 三个姊妹实验与 示例代码,完整还原实验设计、判定逻辑、结果解读与可执行的复现/改进路线。读完你将掌握:RSSI 指纹定位的科学检验范式、K-NN 时间邻近性升幅(lift)指标的构造方法,以及为什么"低带宽模态下计数比定位更容易"这一核心结论直接约束了 RuView 纯 RSSI 部署的边界。
实验动机:R8 的必然追问
R8(RSSI-only person count)刚刚证明了一个反直觉的事实:把 56 个子载波按频带求均值得到 RSSI 代理信号后,一个仅有 656 个参数、输入维度 20 的微型 MLP,在人员计数任务上达到了59.1% 的准确率,保留了全 CSI 模型(cog-person-count v0.0.2,62.3%)约 94.82% 的能力。
这个结果自然引出 R9 的核心问题:RSSI 能否进一步承担"指纹定位"任务?
- 如果成立:整个"手机/智能音箱/电视被动计数并定位家中人员"的故事就能解锁——任何带 WiFi 芯片的设备都成为感知节点;
- 如果不成立:R8 的商业化价值就被限定在"仅计数"这一窄场景内。
R9 选择了一个最干净的、非循环论证的检验设计:不直接测量定位误差(那需要标注位置真值),而是检验一个拓扑性质——记录中的时间邻近是否预测 RSSI 特征空间中的邻近。一份 30 分钟的单一房间录音,一个操作员移动;如果相邻时间戳的 RSSI 序列在特征空间中是彼此的最邻近点,说明指纹信号真实存在;如果每个查询的 K-NN 在时间上是随机的,指纹就溶解进了噪声。
方法与指标:时间邻近性 × 余弦相似度
R9 的五步实验流程(与源码 r9_rssi_fingerprint_knn.py 完全对应):
- 构造 RSSI 代理:取 1,077 个成对(paired)CSI 窗口,将每个
[56 子载波 × 20 帧]的窗口按子载波求均值,聚合成[20]维的"RSSI 随时间变化"信号(band-mean per frame,与 R8 构造方式一致)。这一聚合恰好模拟了真实非 CSI WiFi 芯片上报的每包 RSSI 字段; - Z-score 标准化:跨全部样本做标准化,匹配真实芯片自动增益控制(AGC)的行为;
- 全对余弦相似度矩阵:计算完整的
1077 × 1077相似度矩阵; - K-NN 检索:对每个查询点找 top-K(K=5)最邻近样本(排除自身);
- 时间邻近性度量:统计这 5 个最邻近样本中有多大比例来自查询时间戳±60 秒以内的窗口,并与随机基线对比。
随机基线的构造是关键的方法学细节:对每个查询,计算所有其他样本中落在 ±60 秒内的比例——它捕获了"即使 5-NN 是随机抽取的,由于数据集本身的时间分布,也会纯靠巧合命中"的平凡效应。核心指标定义为:
Lift = K-NN 落在时间窗口内的比例 / 随机基线从源码看(第 91-125 行),程序还内置了判定阈值的显式逻辑,这让结论完全可复现、无主观成分:
lift >= 3.0→STRONG:RSSI 序列携带稳定的空间指纹;lift >= 1.5→MODERATE:RSSI 指纹有效但噪声显著;else→WEAK:仅凭 RSSI 的指纹定位在该数据上不可靠。
实验结果:2.18× 升幅,判定 MODERATE
实验结果表格(数据同时落在 R9 文档 与 r9_rssi_fingerprint_results.json 两份产物中):
| 指标 | 数值 |
|---|---|
| 5-NN 落在 ±60s 内比例 | 0.169 |
| 随机基线 | 0.077 |
| 对随机的升幅(Lift) | 2.18× |
| 逐查询标准差 | 0.183 |
判定结论——MODERATE(中等):低于"强指纹"的 ≥3× 阈值,但远高于 1× 随机水平。信号真实存在,但噪声很大。
值得注意逐查询标准差高达 0.183(与均值 0.169 同量级),说明不同查询点之间的指纹稳定性差异极大:某些窗口的 5-NN 高度时间邻近,另一些则接近随机。这也解释了为何不能仅凭整体均值就下"指纹可用"的结论。
三种合理解释与判别路径
R9 文档明确指出,2.18× 的中等升幅与以下三种解释均一致,且各对应不同的改进方向:
- 20 帧窗口太短:每个窗口约 2 秒 CSI,操作员移动时,带均幅度随身体姿态、呼吸相位、步态相位变化,2 秒不足以捕获稳定指纹。改用 60 帧窗口(约 6 秒,3 倍时间上下文)可能将升幅提升到 3-4×;
- 单房间数据的指纹空间太小:单一房间内,"指纹"只能编码"人在房间哪里"这个 1-2 米分辨率的子问题,RSSI 不具备这种带宽。而多房间数据的指纹是范畴性不同的(房间 A vs 房间 B vs 走廊),K-NN 升幅可能跳到 5-10×;
- Band-mean 丢弃了逐子载波形状:R5 证明计数任务的信号是频带分散的,但定位任务的信号可能恰恰需要逐子载波结构——不同房间反射出不同的多径轮廓,对频带的扩散方式不同。R8 的"RSSI 保留 95% 计数能力"并不能直接迁移到定位任务。
三种解释无法在单房间数据上区分,但文档给出了最可执行的判别方案:一旦多房间数据落地,重跑本实验,寻找升幅的范畴性跳变——若 2× 附近(房间内)跳到 8-10×(跨房间),则解释 (2) 成立,指纹定位的 RSSI 路线被证实可行。
事实边界:本实验证明与未证明的
R9 文档对结论边界保持高度自律:
已证明的:
- RSSI 序列不是纯噪声——存在与时间邻近相关的结构,只是其强度不足以支撑当前窗口大小下的单房间指纹定位;
- 纯 RSSI 定位存在清晰的改进路径:更长窗口、多 AP RSSI(利用
wifi-densepose-wifiscan的 BSSID 列表作为额外维度)、与计数/姿态输出的融合作为辅助线索。
未证明的:
- 未证明跨房间 RSSI 指纹定位无效——恰恰相反,单房间数据本身就是本实验最可能的失败来源,而非底层能力的失败;
- 未测量 CSI 的 K-NN 表现,CSI 指纹定位是否更好仍是开放问题,是有价值的后续实验。
研究线程互证:计数易、定位难的对称性
R9 的价值在与其他线程的对照中才完全显现:
- R8 对照(计数):RSSI 保留 95% 计数信号(59.1% vs 62.3%);R9 对照(定位):RSSI 在单房间条件下丢失 ≥ 一半的定位信号(2.18× 仅略高于随机 1× 的两倍)。两者构成有意义的非对称性——在低带宽模态下,计数比定位更容易。这也被 04-rssi 目录 README 量化总结为:"RSSI 保留约 95% 的计数能力,但仅保留约 30% 的定位能力";
- R5 支撑(频带分散性):R5 子载波显著性实验 测出计数任务信号在 56 个子载波上频带分散(max/mean 比仅 2.85×,top-8 子载波分布在整个频带而非集中于单一频段),解释了为什么计数能扛过频带积分、而定位可能需要逐子载波形状;
- R12 印证(结构性漂移):R12 RF 天气映射实验(结构漂移检测,判定 WEAK)继承了同样的约束:RSSI 是 CSI 协方差矩阵的迹,连完整的 top-10 奇异值谱都无法检测约 1.4 dB 的 3 子载波衰减,RSSI 单独更不可能看到结构性漂移——这类任务需要 CSI 逐子载波或多 AP 指纹。
部署含义:什么时候该用纯 RSSI
基于 R8 + R9 的对称性结论,04-rssi README 给出了明确的部署矩阵(对齐 ADR-113 放置矩阵):
适合纯 RSSI 的场景:cog-presence(二值占用)、cog-person-count(人数统计)、极度成本敏感的部署(如 R19 家禽规模养殖)。
不适合纯 RSSI 的场景:cog-vital-signs(需要 CSI 逐子载波形状)、cog-pose-estimation(需要 CSI 多站几何)、cog-quantum-vitals(ADR-114,需要 CSI 与 NV 量子传感器融合)。
实操复现指南
仓库中的 r9_rssi_fingerprint_knn.py 是纯 NumPy 实现、零框架依赖,可在任意 Python 3.9+ 环境直接运行:
python examples/research-sota/r9_rssi_fingerprint_knn.py \ --paired data/paired/wiflow-p7-1779210883.paired.jsonl注:脚本路径需按仓库实际布局调整为
examples/research-sota/04-rssi/r9_rssi_fingerprint_knn.py,并确认data/paired/下的成对数据文件存在(当前仓库可见的数据清单中该路径未包含,运行前请核对数据文件)。
脚本支持的参数及默认值:
| 参数 | 默认值 | 说明 |
|---|---|---|
--paired | (必填) | 成对 CSI 窗口 JSONL 文件路径 |
--k | 5 | 最近邻数量 K |
--temporal-window-s | 60.0 | 时间邻近窗口 ±W 秒 |
--out | examples/research-sota/r9_rssi_fingerprint_results.json | 结果 JSON 输出路径 |
运行后会在终端打印与仓库 结果 JSON 相同结构的字段:n_samples、k、temporal_window_s、knn_within_window_fraction、random_baseline、lift、per_query_within_fraction_stdev与verdict。修改--temporal-window-s或--k即可快速做敏感性分析。
后续路线图
R9 文档列出的本线程下一步(每条都可直接转化为一次实验):
- 60 帧窗口复测:3 倍时间上下文,观察升幅是否跳变;
- 多 AP 特征化:用
wifi-densepose-wifiscan的 BSSID-RSSI 元组构造[N_AP × 20]矩阵(仓库中该 crate 的 BssidRegistry / NetshBssidScanner 等实现 已具备多 BSSID 扫描能力),每个可见 AP 成为一个特征维度; - 多房间数据重测:等待多房间数据落地(对应 issue #645),寻找范畴性升幅跳变(房间内 2× → 跨房间 8-10×);
- 直接测 CSI K-NN:检验定位信号是否藏在逐子载波形状中,而非频带积分里。
延伸阅读
- 实验产物: R9 实验文档、源码 r9_rssi_fingerprint_knn.py、结果 JSON
- 姊妹实验:R8 RSSI-only 计数(含源码 r8_rssi_only_count.py)、R5 子载波显著性、R12 RF 天气映射
- 汇总视角:SOTA 研究循环总结 与 04-rssi 目录 README(计数 vs 定位非对称性的量化归纳)
【免费下载链接】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),仅供参考