RuView 子载波显著性分析(R5):定位 WiFi CSI 中真正承载信号信息的维度 📅 发布时间:2026/9/11 8:53:46 👁 浏览次数: RuView 子载波显著性分析R5定位 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导读本文是 RuView 开源仓库中 SOTA 研究线程 R5Subcarrier Saliency的技术解读核心回答一个问题在 56 个子载波 × 20 帧的 CSI 输入窗口中到底哪几个子载波真正承载了人员计数person-count与姿态估计pose-estimation任务的可判别信号文章完整继承并展开 R5-subcarrier-saliency.md 的方法论、首次测量结果与工程启示并结合仓库内可运行脚本 r5_subcarrier_saliency.py 的源码实现讲清楚输入×梯度显著性input × gradient saliency如何计算、为什么有效以及它如何支撑「低带宽芯片部署」「RSSI-only 模型」「对抗防御」三条后续研究主线。读完本文你将掌握在 RuView 代码库中复现该显著性测量、解读 saliency JSON 输出并把「频带分散」这一物理结论落到部署决策上的完整方法。背景56 个子载波从何而来为什么需要测量RuView 的cog-pose-estimation与cog-person-count两个推理模块都消费56-subcarrier × 20-frame的 CSI 窗口共享同一套 Conv1d 骨干56 → 64 → 128 → 128不同任务接不同 head。从源码结构看这个 56 并非来自「哪些子载波真的携带任务信号」的实测而是上游聚合脚本 align-ground-truth.js 的聚合选择——也就是说模型的输入宽度是工程约定不是科学结论。这一观察引出三个具体收益这也是 R5 的 Motivation 原文更小 K 的模型部分芯片存在严重 CSI 带宽上限某些 ESP32-C5/C6 固件只暴露 32 个子载波。如果能按显著性排序并只保留 top-K 子载波就能让完整模型在受限芯片上保持大部分精度。更好的数据采集信道跳频channel-hopping可聚焦到信息量最大的子载波上。对抗防御依据如果攻击者均匀伪造全部 56 个子载波而模型照单全收那么一个「按显著性加权的一致性检查」就能在局部扰动中快速识破伪造——显著性子载波正是防御方必须重点交叉验证的对象。R5 线程第一步只做第 1 项测量 v0.0.2 计数模型与 v0.0.1 姿态模型上每个子载波的一阶影响力再考察 top-KK ∈ {8, 16, 32}子集是否保留有意义的精度。方法单 tick 范围内的五步流程原文档给出了清晰的五步方法本仓库的实际脚本 r5_subcarrier_saliency.py 实现了前四步加载训练好的 safetensors 权重cog/artifacts/count_v1.safetensors计数模型与cog/artifacts/pose_v1.safetensors姿态模型。脚本内实现了纯 Python 的 safetensors 读取器load_safetensors()逐张量解析头部元数据与data_offsets并断言 dtype 为F32——这意味着测量脚本无需 PyTorch 运行时仅依赖 NumPy。在 1,077 样本配对数据集上前向也可为提速取分层 256 样本子集。数据来自data/paired/wiflow-p7-1779210883.paired.jsonl每行 JSON 含csi_shape: [56, 20]、csi数组以及任务标签kindcount取n_persons_modeint640–7kindpose取kp17×2 关键点坐标。计算逐子载波 输入×梯度 显著性$$S_k \frac{1}{N}\sum_{\text{samples}} \left|\frac{\partial \mathcal{L}}{\partial x_k}\right| \cdot |x_k|$$这是 Sundararajan 等人 Integrated Gradients 中「input × gradient」的标准形式但省去了路径积分作为快速的一阶近似。脚本用中心差分数值梯度实现对每个子载波k在整条时间轴上 ±ε 扰动默认eps1e-3各做一次完整前向以-(log p_plus[y] - log p_minus[y]) / (2·eps)近似损失对输入的偏导再乘以该子载波幅度的时间轴均值。56 个子载波意味着每样本 56 次前向——文档明确说明这较慢但精确且每个显著性图只算一次。计算前脚本会做逐子载波 z-score 标准化用本次子集自身的统计量并注明在 ε 足够小时显著性对输入的仿射变换近似不变。绘制 56 元素显著性向量识别 top-K脚本直接输出top_k_subcarriersK8/16/32 三档与ranking_high_to_low排序。仅在 top-K 子载波上重训模型K ∈ {8, 16, 32}并对比精度——这一步在本文撰写时已排入后续 tick。输出物约定默认把saliency.json写到模型权重所在目录model_dir/saliency.json结构包含saliency_per_subcarrier、ranking_high_to_low、top_k_subcarriers以及saliency_summarymin/max/mean/std/max_to_mean_ratio同时 stdout 打印 top-8 表格与 Max/mean 比值。注意脚本当前仅接线了count分支pose分支以NotImplementedError占位——这与原文档「计数模型先行」的交付顺序一致。复现命令仓库脚本头部 docstring 给出了两种可直接运行的调用方式# 计数模型默认 kindcount python examples/research-sota/03-spatial-intelligence/r5_subcarrier_saliency.py \ --paired data/paired/wiflow-p7-1779210883.paired.jsonl \ --model v2/crates/cog-person-count/cog/artifacts/count_v1.safetensors \ --kind count # 姿态模型pose 分支源码尚未接线运行会报 NotImplementedError python examples/research-sota/03-spatial-intelligence/r5_subcarrier_saliency.py \ --paired data/paired/wiflow-p7-1779210883.paired.jsonl \ --model v2/crates/cog-pose-estimation/cog/artifacts/pose_v1.safetensors \ --kind pose参数说明参数含义默认值--paired配对 CSI-标签 JSONL 数据路径必填--model训练好的 safetensors 权重路径必填--kindcount或posecount--max-samples用于显著性的样本数上限成本为 O(N_sub × samples × ε 前向)128--out输出 JSON 路径模型目录下saliency.json原文档提到的 1,077 样本即计数模型 v0.0.2 的训练数据规模见 person-count-cog.md 中 5-fold 交叉验证记录本次首测为提速取 128 样本子集。为什么这件事有新颖性原文档的自评很克制但准确ADR-097 曾抽象提及「子载波注意力」但仓库内没有任何实测已发表 WiFi CSI SOTA 通常使用全部可用子载波——「带宽受限」这一工程论点在操作上很重要但在学术上少有人量化。因此逐任务per-task的显著性图谱是一个可直接检验任何未来架构选择的工件任何新骨干网络上线前都可以对照这张图谱核对它的输入敏感度是否符合物理预期。首次测量结果cog-person-count v0.0.2原文档在本 tick 完成了计数模型 v0.0.2 的首次测量128 样本top-8 结果如下RankSubcarrierSaliency1410.01282520.01203300.01004310.00975100.00886350.0088720.00878380.0083Max-to-mean 比值2.85×——有意义但适中的集中度。更重要的次级观察是top-8 子载波分散在整个频带索引 2、10、30、31、35、38、41、52并未聚集在单一频率区域。这一「频带分散」的物理解释来自同批次的 R6 前向模型01-physics-floor/r6_fresnel_zone.py对应 R6-fresnel-forward-model指出对位于第一菲涅尔区zone-1的人体散射体逐子载波相位近似平坦——人跨入菲涅尔区导致的路径增量对每个子载波的相位贡献相近因此判别信号天然地铺满整个频带而非集中在某几个频率槽位。这与 R5 实测的「band-spread」互相印证R5 测到的是结果R6 解释了原因见 03-spatial-intelligence/README.md 的 See also 部分。工程启示Implications原文档基于这组测量给出了三条明确结论均已被后续 tick 部分验证带宽受限部署可行。即便 K8 也保留了横跨全频带的高显著性子载波意味着只暴露 32 个子载波的 ESP32-C6/C5 固件应当保留计数任务的大部分信号。在 K8/16/32 上重训是下一 tick 的实验——这一结论直接支撑了 PROGRESS.md 中「带宽上限芯片也能跑计数 cog」的路线。R8仅 RSSI可行但有界。RSSI 是频带聚合标量丢失了逐子载波分辨率。若显著性集中在 1–2 个窄区域RSSI 的信息天花板会极低正因信号是 band-spreadRSSI 保留了积分量天花板比担忧的高——一阶估计约为全 CSI 精度上界的 ~60%。后续 R8 实测给出 59.1% 精度 全 CSI 基线62.3%的94.82%印证了这一「可保留大部分信号」的判断见 PROGRESS.md 2026-05-22 tick 2 记录。R7对抗防御优先级清单。top-8 显著性子载波正是防御方必须在多节点间交叉验证的对象——均匀伪造的攻击者最容易在这里被抓现行。这与 R7 的 Stoer-Wagner 最小割多链路一致性检测3/3 攻击模式检出形成了「哪些子载波需要防御」与「何时信任 CSI」的互补组合。与相邻研究线程的连接关系原文档给出了两条明确的依赖边馈入 R7对抗性多链路一致性top-K 子载波是防御方最需要协同佐证的维度是 r7_multilink_consistency.py 攻击场景设计的基础。馈入 R8仅 RSSI即便 top-K 子载波承载了大部分信号RSSI 的信息天花板也被显著压低于全 CSI——为 R8 的可行精度设定了硬边界。R8 的 94.82% 保留率反过来验证了 R5 的 band-spread 结论见 04-rssi。从源码结构看03-spatial-intelligence 目录的 README 还明确写出两条生产化路径R5 的 top-8 子载波被 R8 RSSI 计数器直接采用R7 的一致性检查则作为对抗防御层进入 R12 PABS——这就是显著性图谱从研究工件走向部署决策的完整链路。待办与后续 tick原文档原文继承R5 线程在本文撰写时尚未关闭原文档明确排队了以下后续实验在 K8、K16、K32 上重训 → 发布精度-对-K 曲线accuracy-vs-K curve。为姿态模型pose_v1计算同样的显著性图谱。跨两次独立录音比较 K8 子集 → 同一组 K8 是否稳定地排在最前可复现性检验。与wifi-densepose-signal在subcarrier.rs中既有的子载波选择逻辑交叉对照。对读者而言前两项可以直接复用本仓库脚本完成先跑--kind count验证复现再在 K 上重训scripts/train-count.py做对比最后补全saliency_input_gradient()的 pose 分支数据读取逻辑load_paired()已就绪只需实现 pose 的损失对输入梯度。延伸阅读研究方法笔记原文R5-subcarrier-saliency.md可运行脚本r5_subcarrier_saliency.py相邻线程 R7 与目录总览03-spatial-intelligence/README.md频带分散的物理前向模型r6_fresnel_zone.py计数模型训练与基准记录person-count-cog.md研究循环总进度与 R8/R7 实测PROGRESS.md、00-summary.md【免费下载链接】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),仅供参考