首页
/ 用 CRV 六阶段信号线协议重构 WiFi 人体感知管线:RuView CRV-Sense 集成架构解析(ADR-033)

用 CRV 六阶段信号线协议重构 WiFi 人体感知管线:RuView CRV-Sense 集成架构解析(ADR-033)

2026-09-07 10:59:56作者:宣利权Counsellor

本文以仓库内 docs/adr/ADR-033-crv-signal-line-sensing-integration.md 为主体,讲解 RuView 如何将 Coordinate Remote Viewing(CRV)的 6 阶段信号线协议映射到 WiFi-DensePose 的 CSI 感知管线,并给出 wifi-densepose-ruvectorcrv 模块的落地实现证据。读完你将掌握:CRV 六阶段与 WiFi 传感管线的逐级对应关系、跨房间身份匹配的收敛机制、以及每一阶段在仓库源码中的真实集成位置与验收标准。


1. 背景:为什么一个"坐标遥视"协议会出现在 WiFi 感知代码库中

1.1 CRV 六阶段方法学(Signal Line)

Coordinate Remote Viewing(CRV)是一套结构化的 6 阶段协议,将感知从粗略的整体印象逐步精化到最终的复合三维模型:

  1. Stage I —— 粗略的整体印象(gestalt);
  2. Stage II —— 感官细节(sensory details);
  3. Stage III —— 空间维度(spatial dimensions);
  4. Stage IV —— 噪声分离(noise separation);
  5. Stage V —— 交叉参照质询(cross-referencing interrogation);
  6. Stage VI —— 最终的复合 3D 模型(composite 3D model)。

ADR-033 描述的 ruvector-crv crate(v0.1.1)将上述 6 个阶段映射为向量数据库子系统:Poincaré 球嵌入、多头注意力、GNN 图拓扑、SNN 时序编码、可微检索、MinCut 划分。

1.2 结构同构:WiFi 感知管线也是"渐进式精化"

WiFi-DensePose 的传感管线与 CRV 呈现惊人的同构:

CRV 阶段行为 WiFi-DensePose 对应环节
粗粒度整体印象 原始 CSI 到达时为未分化信号,系统需先判定 RF 环境的整体特征
感官细节 逐子载波提取幅度/相位/频率特征
空间维度 AP 网格形成节点位置 + 链路几何的空间拓扑
噪声分离 相干性门控(coherence gating)剔除噪声与干扰
交叉参照质询 姿态估计回溯查询早期 CSI 特征作为证据
复合 3D 模型 最终多人体划分产出 DensePose 输出

这种同构并非偶然:CRV 与 WiFi 传感都在解决同一个抽象问题——从嘈杂的高维信号空间中,通过显式噪声分离的渐进式精化来提取结构化信息。

1.3 ruvector-crv crate(v0.1.1)公共 API

组件 用途 上游依赖
CrvSessionManager 会话生命周期:创建、追加阶段数据、收敛分析 --
StageIEncoder Poincaré 球双曲嵌入(gestalt 原语) --(内部双曲数学)
StageIIEncoder 感官向量的多头注意力 ruvector-attention
StageIIIEncoder GNN 图拓扑编码 ruvector-gnn
StageIVEncoder 面向 AOL(Analytical Overlay)检测的 SNN 时序编码 --(内部 SNN)
StageVEngine 可微检索与交叉参照 --(内部软注意力)
StageVIModeler 复合模型的 MinCut 划分 ruvector-mincut
ConvergenceResult 跨会话一致性分析 --
CrvConfig 配置(默认 384 维、曲率、AOL 阈值、SNN 参数) --

关键类型还包括:GestaltType(Manmade/Natural/Movement/Energy/Water/Land)、SensoryModality(Texture/Color/Temperature/Sound/...)、AOLDetection(内容 + 异常分数)、SignalLineProbe(查询 + 注意力权重)、TargetPartition(MinCut 簇 + 质心)。

1.4 WiFi-DensePose 中已有的对应模块

已有模块 位置 对应 CRV 阶段
multiband.rs v2/crates/wifi-densepose-signal/src/ruvsense/ Stage I(多频带 CSI 的整体特征)
phase_align.rs v2/crates/wifi-densepose-signal/src/ruvsense/ Stage II(相位特征提取)
multistatic.rs v2/crates/wifi-densepose-signal/src/ruvsense/ Stage III(AP 网格空间拓扑)
coherence_gate.rs v2/crates/wifi-densepose-signal/src/ruvsense/ Stage IV(信号 vs 噪声分离)
field_model.rs v2/crates/wifi-densepose-signal/src/ruvsense/ Stage V(可查询的持续场模型)
pose_tracker.rs v2/crates/wifi-densepose-signal/src/ruvsense/ Stage VI(人体跟踪输出)
视点融合 v2/crates/wifi-densepose-ruvector/src/viewpoint/ 跨会话(多视点收敛)

ADR-033 指出:wifi-densepose-ruvector crate 的 Cargo.toml 中已声明对 ruvector-crv 的依赖,本文档定义如何用 WiFi-DensePose 领域类型包装 CRV API。这一判断在源码中得到印证——v2/crates/wifi-densepose-ruvector/Cargo.tomlcrv feature 将 ruvector-crvruvector-gnnserdeserde_json 作为可选依赖拉入,且配置了 [[bench]] name = "crv_bench" required-features = ["crv"]

1.5 核心洞察:跨会话收敛 = 跨房间身份匹配

CRV 的收敛分析机制,是比较针对同一坐标的多个独立会话的嵌入以寻找一致性。在 WiFi-DensePose 中,不同房间的不同 AP 簇正是同一个人的"独立观测者":当人从房间 A 移动到房间 B 时,CRV 收敛机制可以在房间 A 的嵌入轨迹与房间 B 的初始嵌入之间找到一致性——无需摄像头即可建立身份连续性。这是整个 ADR 的灵魂思想,也是"Signal Line"一词的由来。


2. 决策:六阶段 CRV → WiFi 映射

wifi-densepose-ruvector crate 中新建 crv 模块,用 WiFi-DensePose 领域类型包装 ruvector-crv,每个 CRV 阶段对应传感管线中的一个特定节点:

+-------------------------------------------------------------------+
|                 CRV-Sense Pipeline (6 Stages)                      |
+-------------------------------------------------------------------+
|  Raw CSI frames from ESP32 mesh (ADR-029)                          |
|       |                                                             |
|       v                                                             |
|  Stage I:  CSI Gestalt Classification                              |
|    CsiGestaltClassifier: raw CSI -> GestaltType                    |
|    Encoder: StageIEncoder (Poincare ball embedding)                |
|    Module: ruvsense/multiband.rs                                   |
|       |                                                             |
|       v                                                             |
|  Stage II: CSI Sensory Feature Extraction                          |
|    CsiSensoryEncoder: per-subcarrier CSI ->                       |
|      amplitude textures / phase patterns / freq colors             |
|    Encoder: StageIIEncoder (multi-head attention)                  |
|    Module: ruvsense/phase_align.rs                                 |
|       |                                                             |
|       v                                                             |
|  Stage III: AP Mesh Spatial Topology                               |
|    MeshTopologyEncoder: node pos + link SNR -> GNN graph           |
|    Encoder: StageIIIEncoder (GNN topology)                         |
|    Module: ruvsense/multistatic.rs                                 |
|       |                                                             |
|       v                                                             |
|  Stage IV: Coherence Gating (AOL Detection)                        |
|    CoherenceAolDetector: gate decisions -> AOL-flagged removal    |
|    Encoder: StageIVEncoder (SNN temporal encoding)                 |
|    Module: ruvsense/coherence_gate.rs                              |
|       |                                                             |
|       v                                                             |
|  Stage V: Pose Interrogation                                       |
|    PoseInterrogator: pose hypothesis + CSI history ->              |
|      soft attention + top candidates                               |
|    Engine: StageVEngine (differentiable search)                    |
|    Module: ruvsense/field_model.rs                                 |
|       |                                                             |
|       v                                                             |
|  Stage VI: Multi-Person Partitioning                               |
|    PersonPartitioner: embedding clusters -> MinCut partitions      |
|    Modeler: StageVIModeler (MinCut partitioning)                   |
|    Module: training pipeline (ruvector-mincut)                     |
|       |                                                             |
|       v                                                             |
|  Cross-Session: Multi-Room Convergence                             |
|    MultiViewerConvergence: per-room trails -> identity matches     |
|    Engine: CrvSessionManager::find_convergence()                   |
|    Module: ruvsense/cross_room.rs                                  |
+-------------------------------------------------------------------+

从源码结构看,该设计已在 v2 workspace 落地为 v2/crates/wifi-densepose-ruvector/src/crv/mod.rs(约 1439 行)与基准文件 v2/crates/wifi-densepose-ruvector/benches/crv_bench.rs。其中实现的领域类型与 ADR 提案略有演进:用 WifiCrvPipeline 门面承载会话管理,用 ApNode/ApLink 描述网格,用 CoherenceGateStateAccept/PredictOnly/Reject/Recalibrate)扩展门控语义,下文将逐阶段展开。


3. 阶段详解与领域类型

3.1 Stage I:CSI Gestalt 分类(整体特征识别)

CRV 映射:Stage I 的 ideogram 分类目标的基本属性(Manmade/Natural/Movement/Energy)。在 WiFi 感知中,原始 CSI 帧的幅度包络形状与相位斜率方向提供了 RF 环境的等价分类信号。

/// CSI-domain gestalt types mapped from CRV GestaltType.
///
/// The CRV taxonomy maps to RF phenomenology:
/// - Manmade: structured multipath (walls, furniture, metallic reflectors)
/// - Natural: diffuse scattering (vegetation, irregular surfaces)
/// - Movement: Doppler-shifted components (human motion, fan, pet)
/// - Energy: high-amplitude transients (microwave, motor, interference)
/// - Water: slow fading envelope (humidity change, condensation)
/// - Land: static baseline (empty room, no perturbation)
pub struct CsiGestaltClassifier {
    encoder: StageIEncoder,
    config: CrvConfig,
}

impl CsiGestaltClassifier {
    /// Classify a raw CSI frame into a gestalt type.
    ///
    /// Extracts three features from the CSI frame:
    /// 1. Amplitude envelope shape (ideogram stroke analog)
    /// 2. Phase slope direction (spontaneous descriptor analog)
    /// 3. Subcarrier correlation structure (classification signal)
    ///
    /// Returns a Poincare ball embedding (384-d by default) encoding
    /// the hierarchical gestalt taxonomy with exponentially less
    /// distortion than Euclidean space.
    pub fn classify(&self, csi_frame: &CsiFrame) -> CrvResult<(GestaltType, Vec<f32>)>;
}

集成点v2/crates/wifi-densepose-signal/src/ruvsense/multiband.rs 已处理多频带 CSI。CsiGestaltClassifier 通过 StageIEncoder 以 Poincaré 球嵌入包装之,产出捕获 gestalt 层级结构的双曲嵌入(默认 384 维)。

实际实现中的判定启发式(见 crv/mod.rs):实现从幅度/相位数组计算方差、周期性、能量尖峰、结构性与空子载波比例五项指标,再选取最匹配的 gestalt 类型:

RF 现象学判定 信号特征
Movement 高方差 + 周期性(如人走动)
Land 低方差 + 稳定(空房间)
Energy 突发幅度尖峰(开门、电器启停)
Natural 平滑渐变(温度漂移、慢衰落)
Manmade 规则结构模式(HVAC、机械运转)
Water 大量空/零子载波(深度吸收)

对应阈值由 GestaltThresholds 承载,默认值在 crv/mod.rsvariance_high=0.15variance_low=0.03periodicity_threshold=0.5energy_spike_ratio=3.0structure_threshold=0.6null_fraction_threshold=0.3

3.2 Stage II:CSI 感官特征提取

CRV 映射:Stage II 收集感官印象(纹理、颜色、温度)。在 WiFi 感知中,逐子载波 CSI 特征即感官模态:

CRV 感官模态 WiFi CSI 对应物
Texture 跨子载波的幅度方差模式(光滑 vs 粗糙表面反射)
Color 频域频谱形状(哪些子载波携带最多能量)
Temperature 相位漂移率(热膨胀改变路径长度)
Luminosity 总体信号功率水平(SNR)
Dimension 时延扩展(多径范围映射房间大小)
pub struct CsiSensoryEncoder {
    encoder: StageIIEncoder,
}

impl CsiSensoryEncoder {
    /// Extract sensory features from per-subcarrier CSI data.
    ///
    /// Maps CSI signal characteristics to CRV sensory modalities:
    /// - Amplitude variance -> Texture
    /// - Spectral shape -> Color
    /// - Phase drift rate -> Temperature
    /// - Signal power -> Luminosity
    /// - Delay spread -> Dimension
    ///
    /// Uses multi-head attention (ruvector-attention) to produce
    /// a unified sensory embedding that captures cross-modality
    /// correlations.
    pub fn encode(&self, csi_subcarriers: &SubcarrierData) -> CrvResult<Vec<f32>>;
}

集成点v2/crates/wifi-densepose-signal/src/ruvsense/phase_align.rs 已计算逐子载波相位特征,CsiSensoryEncoder 将其映射为 StageIIData 感官印象,并经 StageIIEncoder 产出注意力加权嵌入。实际实现中 extract 方法返回 Vec<(SensoryModality, String)> 模态标签对。

3.3 Stage III:AP 网格空间拓扑

CRV 映射:Stage III 用几何基元与关系勾勒空间布局。在 WiFi 感知中,AP 网格节点与节点间链路构成空间草图:

CRV 草图元素 WiFi 网格对应物
SketchElement AP 节点(位置、天线朝向)
GeometricKind::Point 单个 AP 位置
GeometricKind::Line 两个 AP 间的双基(bistatic)链路
SpatialRelationship 链路质量、基线距离、角分离度
pub struct MeshTopologyEncoder {
    encoder: StageIIIEncoder,
}

impl MeshTopologyEncoder {
    /// Encode the AP mesh as a GNN graph topology.
    ///
    /// Each AP node becomes a SketchElement with its position and
    /// antenna count. Each bistatic link becomes a SpatialRelationship
    /// with strength proportional to link SNR.
    ///
    /// Uses ruvector-gnn to produce a graph embedding that captures
    /// the mesh's geometric diversity index (GDI) and effective
    /// viewpoint count.
    pub fn encode(&self, mesh: &MultistaticArray) -> CrvResult<Vec<f32>>;
}

集成点v2/crates/wifi-densepose-signal/src/ruvsense/multistatic.rs 管理 AP 网格拓扑,MeshTopologyEncoderMultistaticArray 几何翻译为 StageIIIData 草图元素与关系,经 StageIIIEncoder 产出 GNN 编码的拓扑嵌入。实际实现中网格输入建模为 ApNode { id, position: (f32,f32), coverage_radius }ApLink { from, to, signal_strength },由 WifiCrvPipeline::add_mesh_topology 注入。

3.4 Stage IV:作为 AOL 检测的相干性门控

CRV 映射:Stage IV 检测 Analytical Overlay(AOL)——分析性心智用先验假设污染原始信号、导致偏离真实信号线的时刻。在 WiFi 感知中,相干性门控(ADR-030/032)承担同样职责:检测环境干扰、多径变化或硬件伪影对 CSI 的污染,并标记相应帧以排除。

CRV AOL 概念 WiFi 相干性对应物
AOL 事件 低相干帧(干扰、多径漂移、硬件故障)
AOL 异常分数 相干度指标(0.0 = 完全不连贯,1.0 = 完全连贯)
AOL break(标记并搁置) GateDecision::RejectGateDecision::PredictOnly
干净信号线 带噪声乘子的 GateDecision::Accept
超时后强制接受 带膨胀噪声的 GateDecision::ForcedAccept(ADR-032)
pub struct CoherenceAolDetector {
    encoder: StageIVEncoder,
}

impl CoherenceAolDetector {
    /// Map coherence gate decisions to CRV AOL detection.
    ///
    /// The SNN temporal encoding models the spike pattern of
    /// coherence violations over time:
    /// - Burst of low-coherence frames -> high AOL anomaly score
    /// - Sustained coherence -> low anomaly score (clean signal)
    /// - Single transient -> moderate score (check and continue)
    ///
    /// Returns an embedding that encodes the temporal pattern of
    /// signal quality, enabling downstream stages to weight their
    /// attention based on signal cleanliness.
    pub fn detect(
        &self,
        coherence_history: &[GateDecision],
        timestamps: &[u64],
    ) -> CrvResult<(Vec<AOLDetection>, Vec<f32>)>;
}

集成点v2/crates/wifi-densepose-signal/src/ruvsense/coherence_gate.rs 已产出 GateDecision 值,CoherenceAolDetector 将门控时序流翻译为含 AOLDetection 事件的 StageIVData,并经 StageIVEncoder 的 SNN 时序编码产出信号质量随时间变化的嵌入。实际实现中以 CoherenceGateState 枚举表达更丰富语义:Accept(干净信号线,正常推进)、PredictOnly(轻度 AOL,用预测值但标记复查)、Reject(强 AOL,纯噪声丢弃该帧)、Recalibrate(环境漂移,触发管线重校准)。

3.5 Stage V:可微检索姿态质询

CRV 映射:Stage V 是质询阶段——用特定查询探测早期阶段数据以提取定向信息。在 WiFi 感知中,即用姿态假设查询累积的 CSI 特征历史,寻找支持或反驳的证据。

pub struct PoseInterrogator {
    engine: StageVEngine,
}

impl PoseInterrogator {
    /// Cross-reference a pose hypothesis against CSI history.
    ///
    /// Uses differentiable search (soft attention with temperature
    /// scaling) to find which historical CSI frames best support
    /// or contradict the current pose estimate.
    ///
    /// Returns:
    /// - Attention weights over the CSI history buffer
    /// - Top-k supporting frames (highest attention)
    /// - Cross-references linking pose keypoints to specific
    ///   CSI subcarrier features from earlier stages
    pub fn interrogate(
        &self,
        pose_embedding: &[f32],
        csi_history: &[CrvSessionEntry],
    ) -> CrvResult<(StageVData, Vec<f32>)>;
}

集成点v2/crates/wifi-densepose-signal/src/ruvsense/field_model.rs 维护持续电磁场模型(ADR-030),其历史即 StageVEngine 检索的语料库,姿态假设即探针查询。在 WifiCrvPipeline 实现中对应 interrogate 方法,对会话内的累积特征执行软注意力检索。

3.6 Stage VI:基于 MinCut 的多人体划分

CRV 映射:Stage VI 通过 MinCut 把累积数据聚类为不同目标分区,产出复合 3D 模型。在 WiFi 感知中即多人体分离——把累积 CSI 嵌入划分为人体专属簇。

pub struct PersonPartitioner {
    modeler: StageVIModeler,
}

impl PersonPartitioner {
    /// Partition accumulated embeddings into distinct persons.
    ///
    /// Uses MinCut (ruvector-mincut) to find natural cluster
    /// boundaries in the embedding space. Each partition corresponds
    /// to one person, with:
    /// - A centroid embedding (person signature)
    /// - Member frame indices (which CSI frames belong to this person)
    /// - Separation strength (how distinct this person is from others)
    ///
    /// The MinCut value between partitions serves as a confidence
    /// metric for person separation quality.
    pub fn partition(
        &self,
        person_embeddings: &[CrvSessionEntry],
    ) -> CrvResult<(StageVIData, Vec<f32>)>;
}

集成点:训练管线 wifi-densepose-train 已在 DynamicPersonMatcher(ADR-016)中使用 ruvector-mincut(参见 v2/crates/wifi-densepose-train/src/metrics.rs 的依赖使用)。PersonPartitioner 用 CRV Stage VI 语义包装之,把人体分离表述为复合模型构造。WifiCrvPipeline::partition_persons 即其对外入口,返回 StageVIData

3.7 跨会话收敛:跨房间身份匹配

pub struct MultiViewerConvergence {
    session_manager: CrvSessionManager,
}

impl MultiViewerConvergence {
    /// Match person identities across rooms via CRV convergence.
    ///
    /// Each room's AP cluster is modeled as an independent CRV session.
    /// When a person moves from Room A to Room B:
    /// 1. Room A session contains the person's embedding trail (Stages I-VI)
    /// 2. Room B session begins accumulating new embeddings
    /// 3. Convergence analysis finds agreement between Room A's final
    ///    embeddings and Room B's initial embeddings
    /// 4. Agreement score above threshold establishes identity continuity
    ///
    /// Returns ConvergenceResult with:
    /// - Session pairs (room pairs) that converged
    /// - Per-pair similarity scores
    /// - Convergent stages (which CRV stages showed strongest agreement)
    /// - Consensus embedding (merged identity signature)
    pub fn match_across_rooms(
        &self,
        room_sessions: &[(RoomId, SessionId)],
        threshold: f32,
    ) -> CrvResult<ConvergenceResult>;
}

集成点v2/crates/wifi-densepose-signal/src/ruvsense/cross_room.rs 已处理跨房间身份连续性(ADR-030),MultiViewerConvergence 用 CRV 收敛语义包装现有 CrossRoomTracker,经 CrvSessionManager::find_convergence() 计算嵌入一致性。WifiCrvPipeline::find_cross_room_convergence 为实际入口,同时提供 create_session(session_id, room_id) 显式把会话绑定到房间。

3.8 统一管线包装

ADR 中定义顶层 WifiCrvSession 将六阶段串成单一管线;实现中则演化为门面 WifiCrvPipeline,生命周期方法一一对应:

/// A WiFi-DensePose sensing session modeled as a CRV session.
pub struct WifiCrvSession {
    session_manager: CrvSessionManager,
    gestalt: CsiGestaltClassifier,
    sensory: CsiSensoryEncoder,
    topology: MeshTopologyEncoder,
    coherence: CoherenceAolDetector,
    interrogator: PoseInterrogator,
    partitioner: PersonPartitioner,
    convergence: MultiViewerConvergence,
}

impl WifiCrvSession {
    pub fn new(config: WifiCrvConfig) -> Self;
    /// Process a single CSI frame through all six CRV stages.
    pub fn process_frame(
        &mut self,
        frame: &CsiFrame,
        mesh: &MultistaticArray,
        coherence_state: &GateDecision,
        pose_hypothesis: Option<&[f32]>,
    ) -> CrvResult<WifiCrvOutput>;
    /// Find convergence across room sessions for identity matching.
    pub fn find_convergence(
        &self,
        room_sessions: &[(RoomId, SessionId)],
        threshold: f32,
    ) -> CrvResult<ConvergenceResult>;
}

实际实现的公开 API(crv/mod.rs):

  • WifiCrvPipeline::new(config: WifiCrvConfig) —— 以默认配置构造管线(默认 dimensions=32convergence_threshold=0.6);
  • create_session(&mut self, session_id, room_id) —— 创建绑定房间的 CRV 会话;
  • process_csi_frame(...) —— 单帧推进 Stage I/II;
  • add_mesh_topology(...) —— 注入 Stage III 网格拓扑;
  • add_coherence_state(...) —— 注入 Stage IV 门控状态;
  • interrogate(...) —— Stage V 姿态质询;
  • partition_persons(&mut self, session_id) —— Stage VI MinCut 划分,返回 StageVIData
  • find_cross_room_convergence(...) —— 跨房间收敛匹配;
  • session_entry_count / session_count / remove_session —— 会话状态管理。

值得注意的实现差异:ADR 建议沿用 ruvector-crv 默认 384 维或 AETHER 的 128 维,而实际代码将默认维度下调为 32dimensions: 32),并把收敛默认阈值设为 0.6(低于 ADR 正文建议的 0.75),说明实现优先考虑了单帧延迟与边缘部署的取舍。


4. 文件级实施计划

4.1 Phase 1:CRV 模块核心(新文件)

文件 用途 上游依赖
wifi-densepose-ruvector/src/crv/mod.rs 模块根,重导出全部 CRV-Sense 类型 --
wifi-densepose-ruvector/src/crv/config.rs 继承 CrvConfigWifiCrvConfig(含 WiFi 专用默认值) ruvector-crv
wifi-densepose-ruvector/src/crv/session.rs 包装 CrvSessionManagerWifiCrvSession ruvector-crv
wifi-densepose-ruvector/src/crv/output.rs 含逐阶段嵌入与诊断信息的 WifiCrvOutput --

(注:当前 v2 仓库以单文件 crv/mod.rs 承载该模块,上述子文件拆分可作为后续演进参考。)

4.2 Phase 2:阶段编码器(新文件)

文件 用途 上游依赖
crv/gestalt.rs Stage I Poincaré 球嵌入分类器 ruvector-crv::StageIEncoder
crv/sensory.rs Stage II 多头注意力感官编码 StageIIEncoderruvector-attention
crv/topology.rs Stage III GNN 拓扑编码 StageIIIEncoderruvector-gnn
crv/coherence.rs Stage IV SNN 时序 AOL 检测 ruvector-crv::StageIVEncoder
crv/interrogation.rs Stage V 可微检索质询 ruvector-crv::StageVEngine
crv/partition.rs Stage VI MinCut 划分 StageVIModelerruvector-mincut

4.3 Phase 3:跨会话收敛

文件 用途 上游依赖
crv/convergence.rs MultiViewerConvergence 跨房间身份匹配 ruvector-crv::CrvSessionManager

4.4 Phase 4:与既有模块集成(修改现有文件)

文件 改动 说明
wifi-densepose-ruvector/src/lib.rs 添加 pub mod crv; 暴露新模块
wifi-densepose-ruvector/Cargo.toml 无需改动 ruvector-crv 依赖已存在(实际需加 crv feature 门控)
ruvsense/multiband.rs 实现 CrvGestaltSource trait 让 gestalt 分类器消费多频带输出
ruvsense/phase_align.rs 实现 CrvSensorySource trait 让感官编码器消费相位特征
ruvsense/coherence_gate.rs 添加导出 GateDecision 历史为 Vec<AOLDetection> 的方法 桥接门控与 Stage IV
ruvsense/cross_room.rs 实现 CrvConvergenceAdapter trait 桥接跨房间跟踪器与 CRV 收敛

5. DDD 设计

5.1 新有界上下文:CrvSensing

聚合根:WifiCrvSession

pub struct WifiCrvSession {
    /// Underlying CRV session manager
    session_manager: CrvSessionManager,
    /// Per-stage encoders
    stages: CrvStageEncoders,
    /// Session configuration
    config: WifiCrvConfig,
    /// Running statistics for convergence quality
    convergence_stats: ConvergenceStats,
}

值对象:

/// Output of a single frame through the 6-stage pipeline.
pub struct WifiCrvOutput {
    /// Per-stage embeddings (6 vectors, one per CRV stage).
    pub stage_embeddings: [Vec<f32>; 6],
    /// Gestalt classification for this frame.
    pub gestalt: GestaltType,
    /// AOL detections (frames flagged as noise-contaminated).
    pub aol_events: Vec<AOLDetection>,
    /// Person partitions from Stage VI.
    pub partitions: Vec<TargetPartition>,
    /// Processing latency per stage in microseconds.
    pub stage_latencies_us: [u64; 6],
}

/// WiFi-specific CRV configuration extending CrvConfig.
pub struct WifiCrvConfig {
    /// Base CRV config (dimensions, curvature, thresholds).
    pub crv: CrvConfig,
    /// AETHER embedding dimension (default: 128, overrides CrvConfig.dimensions).
    pub aether_dim: usize,
    /// Coherence threshold for AOL detection (maps to aol_threshold).
    pub coherence_threshold: f32,
    /// Maximum CSI history frames for Stage V interrogation.
    pub max_history_frames: usize,
    /// Cross-room convergence threshold (default: 0.75).
    pub convergence_threshold: f32,
}

领域事件:

pub enum CrvSensingEvent {
    /// Stage I completed: gestalt classified
    GestaltClassified { gestalt: GestaltType, confidence: f32 },
    /// Stage IV: AOL detected (noise contamination)
    AolDetected { anomaly_score: f32, flagged: bool },
    /// Stage VI: Persons partitioned
    PersonsPartitioned { count: usize, min_separation: f32 },
    /// Cross-session: Identity matched across rooms
    IdentityConverged { room_pair: (RoomId, RoomId), score: f32 },
    /// Full pipeline completed for one frame
    FrameProcessed { latency_us: u64, stages_completed: u8 },
}

5.2 与既有有界上下文的集成

  • Signal(wifi-densepose-signal):新 trait CrvGestaltSourceCrvSensorySource 使 CRV 模块消费信号处理输出而无需紧耦合——信号 crate 不依赖 CRV crate,依赖只朝单一方向流动。
  • Training(wifi-densepose-train):Stage VI 的 PersonPartitioner 产出与既有 DynamicPersonMatcher 相同的 MinCut 划分,共享 trait PersonSeparator 使二者可互换使用。
  • Hardware(wifi-densepose-hardware):无需改动。CRV 模块消费硬件层接收并解析后的 CSI 帧。

6. RuVector 集成地图

CRV-Sense 共调动 7 个 ruvector crate:

CRV 阶段 ruvector crate 使用的 API WiFi-DensePose 角色
I(Gestalt) --(内部 Poincaré 数学) StageIEncoder::encode() CSI gestalt 分类学的双曲嵌入
II(Sensory) ruvector-attention StageIIEncoder::encode() 子载波特征上的多头注意力
III(Dimensional) ruvector-gnn StageIIIEncoder::encode() AP 网格拓扑的 GNN 编码
IV(AOL) --(内部 SNN) StageIVEncoder::encode() 相干性违反的 SNN 时序编码
V(Interrogation) --(内部软注意力) StageVEngine::search() 场模型历史上的可微检索
VI(Composite) ruvector-mincut StageVIModeler::partition() MinCut 人体分离
Convergence --(余弦相似度) CrvSessionManager::find_convergence() 跨房间身份匹配

CRV 模块同时受益于 workspace 中已有的 ruvector 集成:

既有集成 ADR 对 CRV 阶段的增益
spectrogram.rs 中的 ruvector-attn-mincut ADR-016 Stage II(感官特征的子载波注意力)
dataset.rs 中的 ruvector-temporal-tensor ADR-016 Stage IV(压缩相干性历史缓冲)
subcarrier.rs 中的 ruvector-solver ADR-016 Stage III(网格拓扑的稀疏插值)
model.rs 中的 ruvector-attention ADR-016 Stage V(姿态质询的空间注意力)
metrics.rs 中的 ruvector-mincut ADR-016 Stage VI(人体匹配基线)

以上依赖关系可在源码中交叉验证:v2/crates/wifi-densepose-ruvector/Cargo.toml 声明了 ruvector-coreruvector-mincutruvector-attn-mincutruvector-temporal-tensorruvector-solverruvector-attention,并在 crv feature 下引入可选的 ruvector-crvruvector-gnn;而 wifi-densepose-train/src/metrics.rsmodel.rs 中可见 ruvector-mincut/ruvector-attention 的实际使用。


7. 验收准则

7.1 Stage I:CSI Gestalt 分类

ID 准则 测试方法
S1-1 CsiGestaltClassifier::classify() 对任意合法 CSI 帧返回有效 GestaltType 单测:喂 100 帧合成 CSI,验证全部落在 6 种 gestalt 类型内
S1-2 Poincaré 球嵌入维度正确(匹配 WifiCrvConfig.aether_dim 单测:验证 embedding.len() == config.aether_dim
S1-3 嵌入范数严格小于 1.0(Poincaré 球约束) 单测:验证所有输出的 L2 范数 < 1.0
S1-4 带多普勒特征的 CSI 帧分类为 Movement 单测:合成多普勒频移 CSI -> GestaltType::Movement
S1-5 带瞬时干扰的 CSI 帧分类为 Energy 单测:合成干扰突发 -> GestaltType::Energy

7.2 Stage II:CSI 感官特征

ID 准则 测试方法
S2-1 CsiSensoryEncoder::encode() 产出正确维度嵌入 单测:验证输出长度
S2-2 幅度方差映射到 StageIIData.impressions 的 Texture 模态 单测:非平坦幅度下验证存在 Texture 条目
S2-3 相位漂移率映射到 Temperature 模态 单测:注入线性相位漂移,验证 Temperature 条目
S2-4 多头注意力权重在每个头上和为 1.0 单测:验证 softmax 归一化

7.3 Stage III:AP 网格拓扑

ID 准则 测试方法
S3-1 MeshTopologyEncoder::encode() 为每个 AP 节点产出一个 SketchElement 单测:4 节点网格产出 4 个草图元素
S3-2 SpatialRelationship 数量等于双基链路数 单测:4 节点 -> 6 链路(全连接)或配置子集
S3-3 关系强度与链路 SNR 成正比 单测:验证 SNR 与强度的单调关系
S3-4 节点位置变化时 GNN 嵌入变化 单测:扰动一个节点位置,验证嵌入变化

7.4 Stage IV:相干性 AOL 检测

ID 准则 测试方法
S4-1 CoherenceAolDetector::detect() 把低相干帧标记为 AOL 事件 单测:注入 10 帧 GateDecision::Reject,验证产出 10 个 AOLDetection 条目
S4-2 异常分数与相干性违反突发长度相关 单测:5 连发违反的分数高于孤立违反
S4-3 GateDecision::Accept 帧不产生 AOL 检测 单测:全接受历史产出空 AOL 列表
S4-4 SNN 时序编码尊重不应期(refractory period) 单测:refractory_period_ms 内两次违反仅产生一个尖峰
S4-5 GateDecision::ForcedAccept(ADR-032)映射为中等分数 AOL 单测:强制接受帧被标记但非最高异常分数

7.5 Stage V:姿态质询

ID 准则 测试方法
S5-1 PoseInterrogator::interrogate() 返回 CSI 历史上的注意力权重 单测:50 帧历史产出 50 个和为 1.0 的权重
S5-2 Top-k 候选为最高注意力帧 单测:验证 top_candidates 索引对应最高 attention_weights
S5-3 交叉引用链接正确的阶段编号 单测:验证 from_stageto_stage 落在 [1..6]
S5-4 空历史返回空探针结果 单测:空 csi_history 产出零候选

7.6 Stage VI:人体划分

ID 准则 测试方法
S6-1 PersonPartitioner::partition() 把两个充分分离的嵌入簇分为两个分区 单测:距离 > 5 sigma 的两个高斯簇 -> 两个分区
S6-2 每个分区有正确维度的质心嵌入 单测:质心长度匹配配置
S6-3 不同人体的 separation_strength(MinCut 值)为正 单测:验证 separation_strength > 0.0
S6-4 单人场景恰好产出一个分区 单测:单簇 -> 一个分区
S6-5 分区 member_entries 索引互斥且穷尽 单测:所有成员条目并集覆盖全部输入帧

7.7 跨会话收敛

ID 准则 测试方法
C-1 同一人在两个房间时 match_across_rooms() 返回正分数 单测:向两个房间会话注入相同嵌入轨迹,验证分数 > 阈值
C-2 不同人在不同房间分数低于阈值 单测:注入不同嵌入轨迹,验证分数 < 阈值
C-3 convergent_stages 识别跨房间一致性最高的阶段 单测:使 Stage I 嵌入相同、其余随机,验证 Stage I 出现在 convergent_stages
C-4 收敛成功时 consensus_embedding 维度正确 单测:成功匹配后验证共识嵌入长度
C-5 阈值参数被尊重(低于阈值不匹配) 单测:设阈值为 0.99,仅近相同会话可匹配

7.8 端到端管线

ID 准则 测试方法
E-1 WifiCrvSession::process_frame() 返回含全部 6 个阶段嵌入的 WifiCrvOutput 集成测试:处理 10 帧合成帧,验证每帧 6 个非空嵌入
E-2 x86 主机上单帧总延迟 < 5 ms 基准:处理 1000 帧,验证 p95 延迟 < 5 ms
E-3 缺失姿态假设时管线优雅降级(Stage V 跳过或使用默认) 单测:pose_hypothesis=None,验证不 panic 且输出有效
E-4 空网格(单 AP)不 panic 单测:单节点网格产出退化 Stage III 的有效输出
E-5 会话状态跨帧累积(Stage V 历史增长) 单测:处理 50 帧,验证 Stage V 候选数增加

对应仓库中的基准入口见 wifi-densepose-ruvector/benches/crv_bench.rs,需以 --features crv 编译运行(required-features = ["crv"])。


8. 影响评估

8.1 积极面

  • 结构化管线形式化:6 阶段 CRV 映射为 WiFi 传感管线提供了有原则的渐进式精化结构,数据流显式化,每阶段可独立测试。
  • 无需摄像头的跨房间身份:CRV 收敛分析为跨 AP 簇(不同房间)的同一人匹配提供了数学上有依据的机制,仅使用 RF 嵌入。
  • 噪声分离成为一等概念:把相干性门控映射到 CRV Stage IV(AOL 检测),使噪声分离从实现细节升格为拥有专属嵌入与时序模型的核心架构阶段。
  • gestalt 层级的双曲嵌入:Stage I 的 Poincaré 球嵌入以远低于欧氏空间的失真度捕获分层 RF 环境分类学(Manmade → 结构化多径、Natural → 漫散射等)。
  • ruvector 生态复用:通过单一统一抽象调动全部 7 个 ruvector crate,最大化既有 ruvector 集成(ADR-016)的投资回报。
  • 零新增外部依赖ruvector-crv 已是 workspace 依赖,本 ADR 仅新增 Rust 源文件。

8.2 消极面

  • 抽象开销:CRV 阶段映射为既有信号处理管线增加一层间接,每个包装器须在 WiFi 领域类型与 CRV 类型间翻译;若映射被证伪,会成为维护负担。
  • 维度失配ruvector-crv 默认 384 维,而 AETHER 嵌入(ADR-024)用 128 维。WifiCrvConfig 做了覆盖,但非默认维度下的编码器行为必须验证。(实现已进一步下调为 32 维,需配套基准确认。)
  • SNN 开销:Stage IV 的 SNN 时序编码器为脉冲仿真增加逐帧计算。在嵌入式目标(ESP32)上可能超过 50 ms 帧预算。首期仅在主机侧(聚合器而非固件)部署。
  • 收敛误报:基于嵌入相似度的跨房间身份匹配,对体型与运动模式相近、房间几何相似的人可能误配。需要 ADR-030 的时间邻近约束以约束误报率。
  • 测试复杂度:六个独立编码器加跨会话收敛层需要完整测试矩阵,第 7 节定义了 30+ 条独立用例。

8.3 风险

风险 概率 影响 缓解
Poincaré 球嵌入在边界(范数接近 1.0)处不稳定 NaN 沿管线传播 CsiGestaltClassifier 中把范数钳制到 0.95;测试套件加入范数断言
GNN 编码器对实时网格拓扑更新过慢 Stage III 成瓶颈 缓存拓扑嵌入;仅在节点几何变化(罕见)时重算
SNN 不应期对 20 Hz 相干性门控过短 帧边界处 AOL 误检 WifiCrvConfig 默认值中按帧间隔(50 ms)调 refractory_period_ms
跨房间收敛阈值过宽松 跨房间身份误匹配 默认阈值 0.75 较保守;ADR-030 时间邻近约束(<60s)构成第二道防线
MinCut 划分产出人体簇过多或过少 人数不匹配 以期望人数提示(来自占用检测器)作为 MinCut 约束
CRV 抽象在映射不佳时成为技术债 未来 ADR 中移除代码 全部 CRV 代码隔离在 crv 模块,可无损移除而不影响既有管线

9. 相关 ADR

ADR 关系
ADR-016 RuVector Integration 扩展:原有 5 个 ruvector crate 加上 ruvector-crvruvector-gnn 全部经 CRV 管线驱动
ADR-017 RuVector Signal+MAT 扩展:ADR-017 的信号处理输出进入 CRV Stage I-II
ADR-024 Contrastive CSI Embedding 消费:逐视点 AETHER 128 维嵌入是送入 CRV 各阶段的表示
ADR-029 RuvSense Multistatic 扩展:多静态网格拓扑编码为 CRV Stage III;TDM 帧是 Stage I 输入
ADR-030 Persistent Field Model 扩展:场模型历史充当 Stage V 质询语料库;跨房间跟踪器桥接 CRV 收敛
ADR-031 Viewpoint Fusion 互补:RuView 在房间内融合视点;CRV 收敛跨房间匹配身份
ADR-032 Mesh Security 消费:认证信标与帧完整性(ADR-032)确保 CRV Stage IV 的 AOL 检测反映真实信号质量,而非伪造帧

10. 方法学溯源与阅读指引

CRV 方法的原始描述来自 Swann(1996)的 CRV 协议文档与 Smith(2005)对 Star Gate 项目的记录;其工程化所依赖的数学基础分别为 Nickel & Kiela(2017)的 Poincaré 嵌入、Kipf & Welling(2017)的 GCN、Maass(1997)的脉冲神经网络以及 Stoer & Wagner(1997)的最小割算法。相关论文在仓库内仅作背景引用(参见 ADR 第 9 节参考文献),本文不展开外部链接。

若需深入代码:

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.13 K
2.75 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
897
5.8 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
529
593
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
915
1.83 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.58 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.35 K
1.46 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.01 K
515
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
547
388