阶段三模型 | RVQ 残差向量量化神经编解码器(ECG 心电信号压缩 2.0x)| 昇腾 910B NPU 推理验证
Ambiq compressionKIT 系列 ECG 心电信号神经压缩编解码器:编码器 Conv2D(1x7,s2)+BN+ReLU+Conv2D(1x1) 将 512 点信号帧压缩为 (8, 16, 256) 的 16 维潜变量, 经 4 级 RVQ 码本(每级 256 词条 x 16 维)量化为索引比特流;解码器 Upsample+Conv2D+ReLU+SeparableConv+ReLU+LayerNorm+Conv2D 重建信号。 采样率 256 Hz,标称压缩率 2.0x(float32 PCM vs RVQ 索引比特流)。
| 问题 | 修复 |
|---|---|
| 环境无 TensorFlow/Keras,权重为 .keras(h5) 格式 | 解包 .keras(zip) 直读 model.weights.h5,用 numpy/torch 手工重建微型网络(Keras NHWC -> torch Conv1d 权重布局转换) |
| TF 'same' 步长 2 卷积 padding 非对称 | 显式 F.pad(左2, 右3),对齐官方 TFLite(编码器输出 relRMSE 1.8e-7) |
| Keras SeparableConv2D depthwise 阶段无 bias | torch 侧 Conv1d(..., groups=C, bias=False),否则随机 bias 污染输出 |
| NPU 上 cdist 兼容性 | RVQ 最近邻改用 |
| ppg-2x 的 encoder.keras 下载停滞缺失 | 从 hf-mirror 单独补齐该文件 |
| 预处理约定 | 按 codec_spec.json:逐帧 LayerNorm(eps=1e-3) 归一化,重建后反归一化 |
逐层校验:解码器与官方 decoder_float32.tflite 最大误差 2.9e-6;端到端重建与官方 sample_stimulus.npz 参考输出 relRMSE < 1%、corr 0.99997。
pip install -r requirements.txt
python3 inference.py # 默认:真实 demo 录音帧
python3 inference.py --input synthetic --seed 1234 # 合成ECG 心电信号(正弦+噪声)输入无外部依赖:默认使用权重包自带 demo_recordings.npz(真实生理录音), 也可合成确定性ECG 心电信号。完整链路:归一化 -> NPU 编码 -> 4 级 RVQ 量化(压缩) -> 索引码流反量化 -> NPU 解码 -> 反归一化 -> SNR/PRD 指标。
[验收] NPU 推理运行成功 ✓inference.py # NPU 推理脚本(torch 手工重建 RVQ 编解码器,--model_path 可覆盖)
meta.json # 适配工作流记录
requirements.txt
README.md
assets/
agent_workflow.png # 适配流程截图
npu_device_call.png # NPU 设备调用截图 (npu-smi)
model_result.png # 推理验收结果截图
reconstruction_compare.png # 原始/重建波形对比图标签: #NPU #昇腾 #Model-Agent