RuView R3.1 研究复盘:物理先验环境信号预测在 raw-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 CSI 跨房间人体重识别(cross-room re-ID)是 RuView 空间智能与身份识别能力的核心难题:同一人换一个房间后,能否仅凭 WiFi 信号再次认出他。本指南完整还原 RuView SOTA 研究环中 R3.1 tick 的实验设计与结论——物理先验驱动的环境信号(env_sig)预测在 raw-CSI 层上全面失效(三种跨房间方法全部坍缩到 10% 随机水平),并深入剖析失效根因:raw-CSI 层的位置方差主导,任何环境质心相减都无法消除。读完本文你将掌握:该实验的可复现仿真实现、为什么"减去预测环境信号"必须在 AETHER 嵌入层而非原始信号层执行、以及由此确定的四步零样本跨房间重识别实施路线图。
一、研究背景:从 R3 的正结果到 R3.1 的研究杠杆
R3.1 是整个 R3 研究弧(R3 → R3.1 → R3.2)的中间环节,其研究起点来自 R3 的结论(见 R3-crossroom-reid.md):
- 在AETHER 嵌入空间(128 维,符合 ADR-024 对比式 CSI 嵌入模型)中,MERIDIAN 环境质心相减可以恢复跨房间重识别精度(仿真中达 100%);
- 但 MERIDIAN 需要在新房间内有标注样本来估计每个房间的环境质心(environment centroid);
- R3 文档中明确写出的"下一个研究杠杆"是:利用 R6.1 前向算子 + 粗略房间地图来预测 env_sig,实现零样本(zero-shot)跨房间迁移,即无需新房间任何标注。
R6.1(R6_1-multiscatterer-forward-model.md)提供了六散射体 Fresnel 前向算子。R3.1 的意图就是:把这个"预测环境信号"的想法**放在 raw-CSI 层(而非嵌入层)**实现,并与 R3 的带标签 MERIDIAN oracle 进行基准对比,回答"物理先验预测能否替代统计质心估计"。
二、实验设计:可复现的纯 NumPy 仿真
R3.1 的完整可复现实现位于 r3_1_physics_informed_env.py,纯 NumPy、无第三方依赖,运行后输出 JSON 结果文件(现有结果见 r3_1_physics_env_results.json)。
2.1 核心前向模型(继承 R6.1)
实验沿用 R6.1 的多散射体 Fresnel 前向模型,每个散射体对第 k 个子载波的 CSI 贡献为:
def csi_contribution(scatterer_pos, reflectivity, tx_pos, rx_pos, sub_freqs_hz): d_tx = np.linalg.norm(scatterer_pos - tx_pos) d_rx = np.linalg.norm(scatterer_pos - rx_pos) d_direct = np.linalg.norm(tx_pos - rx_pos) delta_l = d_tx + d_rx - d_direct # 反射路径超出直达路径的额外路程 amp = reflectivity / max(d_tx * d_rx, 1e-3) # 距离衰减 phase = 2 * np.pi * sub_freqs_hz * delta_l / C # 相位 return amp * np.exp(1j * phase)即csi[k] = Σ_b (refl_b / (d_tx,b · d_rx,b)) · exp(2π·j·f_k·Δℓ_b / c)。仿真参数如下:
| 参数 | 取值 | 说明 |
|---|---|---|
| 载频 | 2.4 GHz | 标准 WiFi 频段 |
| 子载波数 | 52 | n_sub=52,对应 raw-CSI 层 52 维复数向量 |
| 子载波间隔 | 312.5 kHz | 802.11n/ac 标准间隔 |
| 房间 1 | 5×5 m,对角链路 | TX(1.25, 0.0)、RX(4.75, 5.0) |
| 房间 2 | 4×6 m,不同几何 | TX(1.0, 0.0)、RX(3.0, 6.0) |
| 受试者 | 10 人 | 体型缩放因子0.85 + 0.30 * rng.random(n),即 0.85–1.15× |
| 每房间位置数 | 3 | 每个受试者在每房间 3 个位置各生成一条 CSI |
| 随机种子 | 42 | np.random.default_rng(42),保证可复现 |
2.2 人体与房间散射体建模
人体由 6 个散射体组成(与 R6.1 一致),体型差异是唯一的个体间信号(person_scale同时缩放所有散射体反射率):
def human_body(cx, cy, person_scale=1.0): return [ {"pos": [cx, cy ], "refl": 0.10 * person_scale, "name": "head"}, {"pos": [cx, cy ], "refl": 0.50 * person_scale, "name": "chest"}, # 胸部贡献最大 {"pos": [cx - 0.20*person_scale, cy], "refl": 0.10 * person_scale, "name": "left_arm"}, {"pos": [cx + 0.20*person_scale, cy], "refl": 0.10 * person_scale, "name": "right_arm"}, {"pos": [cx - 0.10*person_scale, cy - 0.40*person_scale], "refl": 0.10 * person_scale, "name": "l_leg"}, {"pos": [cx + 0.10*person_scale, cy - 0.40*person_scale], "refl": 0.10 * person_scale, "name": "r_leg"}, ]两个房间各自配备 4 个不同位置、不同反射率的墙面散射体(room_walls_5x5()与room_walls_4x6()),以此模拟环境差异:5×5 m 卧室为 (0.5,4.5)/(4.5,4.5)/(0.5,0.5)/(4.5,0.5),反射率 0.30/0.25/0.20/0.15;4×6 m 客厅为 (0.3,5.7)/(3.7,5.7)/(0.3,0.3)/(3.7,0.3),反射率 0.28/0.18/0.32/0.22。关键点:每个受试者的场景 = 人体 6 散射体 + 房间 4 墙面散射体,10 个散射体相干叠加。
2.3 三种跨房间方法与两个基准
- raw 跨房间:不做任何环境处理,直接以房间 2 的 CSI 为 query、房间 1 的 CSI 为 gallery 做 1-shot 余弦 K-NN;
- 带标签 MERIDIAN(oracle):先计算每房间全部样本的均值作为质心(
csi_room.mean(axis=0)),各自减去本房间质心后再做 K-NN——这是"有标签"的统计环境相减上限; - 物理先验环境预测(零标签):直接用空房间仿真得到预测 env_sig(
simulate(room_walls, tx, rx, freq),不含人体),从每个人 CSI 中减去该预测值——这正是本 tick 想验证的零样本方法。
# 物理先验:空房间仿真即为预测的环境信号(不需要任何标签) env_sig_room1_predicted = simulate(room1_walls, tx1, rx1, freq) env_sig_room2_predicted = simulate(room2_walls, tx2, rx2, freq) # 从每个受试者的 CSI 中减去预测 env_sig csi_room1_phys = csi_room1 - env_sig_room1_predicted csi_room2_phys = csi_room2 - env_sig_room2_predicted同时计算房内基准(same-room K-NN)作为对照组,K-NN 判定采用 1-shot 多数投票。
三、结果:三种跨房间方法全部坍缩到随机水平
复现结果(与文档表格、r3_1_physics_env_results.json 完全一致):
| 配置 | 1-shot K-NN 精度 |
|---|---|
| 房间 1 房内基准 | 100% |
| 房间 2 房内基准 | 100% |
| 跨房间 raw(无环境相减) | 10%(= 随机水平) |
| 跨房间带标签 MERIDIAN(oracle) | 10%(= 随机水平) |
| 跨房间 物理先验环境预测 | 10%(= 随机水平) |
三条跨房间路径全部坍缩到 10% 随机水平——不仅物理先验方法失败,连带标签的 MERIDIAN oracle 也失败。这与 R3(tick 12)中"带标签 MERIDIAN 达到 100%"的嵌入层结果形成了鲜明对比,是研究环内继 R13 无接触血压、R12 原始 PABS 之前的第三个诚实负面结果。
四、深层剖析:为什么 R3 有效而 R3.1 无效
R3 与 R3.1 的差异本质上是操作空间的差异:
**R3(嵌入层,成功)**仿真于 128 维 AETHER 风格嵌入空间,其中:
- person_signature、environment_signature、noise 占据相互独立的随机方向;
- env_sig 是每房间单一固定向量(房间内无位置方差);
- 余弦归一化部分吸收环境偏移。
**R3.1(raw-CSI 层,失败)**工作在 52 维复数 CSI 上,其中:
- 每个受试者在每房间有 3 个位置,每个位置都有自己独特的复数 CSI 签名;
- 房间内的位置间方差可能超过房间间的个体间方差——这是决定性因素;
- 减去单一房间质心只能移除位置的均值,无法移除位置的方差。
文档中的核心论断值得原文引用:"AETHER 嵌入空间对房间内位置做了不变性处理(invariantises over within-room position);raw CSI 做不到。raw-CSI 层的跨房间问题本质上比嵌入层更难。"
五、三种负面结果的分类学:R3.1 属于"架构错误型"
R3.1 的另一个方法论贡献,是让研究环具备了完整的三类负面结果分类(汇总于 00-summary.md):
| 类型 | 实例 | 性质 | 出路 |
|---|---|---|---|
| 缺工具型(可回头) | R12 原始 eigenshift NEGATIVE | 工具缺失阻碍了正确方法 | 工具(R6.1 前向算子)后来可用,方法成功(PABS,1,161×) |
| 物理极限型(永久) | R13 无接触血压 NEGATIVE | 5 dB 物理缺口,任何工具都无法跨越 | 负面是最终结论(后被量子路径部分回收) |
| 架构错误型(可纠正) | R3.1(本文) | 正确的想法、错误的操作层级 | 纠正架构已明确,但尚未实现 |
"判断一个负面结果属于哪个类别,本身就是研究贡献"——R3.1 明确属于第三类:它不是物理墙,而是可修正的设计选择。
六、纠正后的架构与四步实施路线图
物理先验环境预测方法并没有死——它只是需要在嵌入层而非 raw-CSI 层执行。纠正后的架构:
raw CSI → AETHER 嵌入头(位置不变) → 物理先验环境相减 → 跨房间 K-NN等价表述:从AETHER 头的输出(而不是原始输入)中减去物理预测的 env_sig。AETHER 已经完成"对位置做不变性"的重活,物理先验预测只需移除剩余的房间位移分量。
由于这要求 AETHER(ADR-024)被训练或微调(超出本研究环范围),实施路线图被明确固定为:
- 逐安装微调 AETHER 头(以 ADR-024 基线为起点);
- 用R6.1 前向算子 + 房间地图计算物理先验 env_sig;
- 从第 1 步的输出中减去第 2 步的 env_sig → 得到不变性嵌入;
- 在新房间无任何标签的情况下做跨房间 K-NN 匹配。
该修正架构的实证验证由 R3.2 完成(R3_2-embedding-level-physics-env.md,实现于 r3_2_embedding_physics_env.py):物理先验 + 残差校正以零标签达到与带标签 MERIDIAN oracle 相同的 20%(2×随机水平)——架构正确性得到结构性验证;未能达到 80%+ 的原因是合成 AETHER 替身(跨位置均值池化)的个体信号过弱,真正的对比学习 AETHER 头处于关键路径上。
七、与既有研究线程的衔接
- R3(跨房间重识别):R3.1 通过展示raw-CSI 版本失败,间接确认了 R3 的"嵌入空间内 MERIDIAN"结果——R3 选择嵌入空间是正确决策;
- R6.1(多散射体 Fresnel):提供了前向算子。R3.1 使用过它;算子正确,是应用层级错误;
- R12 PABS(POSITIVE):直接在 raw CSI 上工作但不在房间间比较——PABS 检测房间内的结构变化,跨房间迁移需要额外的不变性层(= AETHER)。这解释了为什么 PABS 在 raw 层有效而跨房间方法在 raw 层无效;
- R14 / R15 / ADR-105:隐私框架不受影响;AETHER + 物理环境预测仍按 ADR-106 保持全设备端(on-device)执行,跨安装重识别仍被 R3 + R14 + R15 + ADR-106 禁止。
八、为什么这个负面结果仍然有用
- 在实现前暴露架构错误:若无此 tick,未来工程师很可能采用直觉上"显然正确"的"从 raw CSI 减去预测环境信号"方案并浪费数周时间。R3.1 记录了这一失败;
- 收紧了 R3 实施路线图:纠正后的架构现已明确可执行;
- 论证了嵌入空间与原始空间方法的差异:这一结论可泛化到代码库中所有"减去学习/预测的干扰项(nuisance)"模式。
九、诚实边界(Honest scope)
实验结论的有效范围需严格限定,文档明确列出:
- 10 名受试者、0.85–1.15× 体型变化是刻意弱化的个体签名。更强的生物特征基元(步态、呼吸、R15 的 RCS)会带来更大的个体对比度;"raw-CSI 层失败"的结论可能对该尺度敏感,在更丰富生物特征输入下 raw 层方法或许能恢复;
- 每房间仅 3 个位置。位置数增至 5–10 时失败将更尖锐;减至 1 时会部分成功;
- 位置方差主导性是几何相关的。长窄房间与方形房间的方差比不同,本实验只覆盖一种几何;
- 未测试"带标签 MERIDIAN 逐位置聚类"(对房间内位置聚类、减去每簇质心)。这或许能让带标签 oracle 成功,其物理先验等价物需要位置聚类层。
十、能做什么 / 不能做什么 / 下一步
能做的:阻止浪费性的实现投入;提供修正的架构草图(嵌入层物理先验环境预测);提供参考基准——证明 raw-CSI 层的跨房间问题确实困难,为 R3 的嵌入层结果提供对照。
不能做的:最初设想的零样本跨房间重识别(仍需嵌入层实现 R3.2);对现有房内重识别的任何改进(房内识别本就有效);跨安装重识别(仍被 R3 + R14 + R15 + ADR-106 禁止)。
下一步:
- R3.2:嵌入层物理先验环境预测(修正架构),需要 AETHER + R6.1 集成,超出本研究环范围;
- R12.1(pose-PABS 闭环):仍是杠杆率最高的下一步实现;
- ADR-107(跨安装联邦):继续搁置。
十一、快速复现指南
在仓库根目录下直接运行仿真脚本即可复现全部数字:
python examples/research-sota/05-cross-room-reid/r3_1_physics_informed_env.py脚本会打印五种配置的 1-shot K-NN 精度与判定结论(物理先验是否达到 MERIDIAN 的 90% 以内),并写入r3_1_physics_env_results.json。同目录下的 README.md 汇总了 R3 弧三个 tick 的状态机(POSITIVE → NEGATIVE → STRUCTURALLY VALIDATED),00-summary.md 则将 R3.1 定位为"三次诚实范围发现"之一。若想继续探索嵌入层修正方案,运行:
python examples/research-sota/05-cross-room-reid/r3_2_embedding_physics_env.py核心结论回顾:R3.1 证明"物理先验环境预测"方法本身成立,但必须在正确的空间(嵌入层)应用——raw-CSI 层实验暴露出错误空间不会带来任何提升。这一"方法正确、层级错误"的教训,与 ADR-024 的 AETHER 对比学习头共同构成了 RuView 跨房间重识别通向生产的完整拼图。
【免费下载链接】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),仅供参考