CNN8RNN 是一个用于 AudioSet 声音事件检测的深度学习模型,包含 6.4M 参数。本项目提供其在华为 Ascend NPU 环境下的部署方案。
/data/ysws/agentsp/cnn8rnn-audioset-sed-ascend/
├── inference.py # 精度测试脚本
├── log.txt # 测试日志
├── README.md # 本文档
├── classes.txt # 447类音频事件标签CNN8RNN 模型包含以下组件:
| 组件 | 说明 | 参数数量 |
|---|---|---|
| Mel Spectrogram | 64bin mel滤波器 | - |
| ConvBlock1-4 | 卷积块 | ~3.5M |
| GRU | 双向RNN | ~2.6M |
| FC Layer | 全连接输出 | ~0.3M |
docker exec -it test-modelagent bashsource /usr/local/Ascend/ascend-toolkit/set_env.shcd /data/ysws/agentsp/cnn8rnn-audioset-sed-ascend/
python3 inference.pycd /data/ysws/agentsp/cnn8rnn-audioset-sed-ascend/
python3 inference.py --precision_test| 指标 | 实测值 | 阈值 | 状态 |
|---|---|---|---|
| Max Error (sum) | 0.00e+00 | < 1e-3 | PASS |
| Max Error (mean) | 0.00e+00 | < 1e-5 | PASS |
| Max Error (std) | 0.00e+00 | < 1e-5 | PASS |
| 操作 | 耗时 |
|---|---|
| 模型加载 | ~2s |
| CPU 参考计算 (20 tensors) | 0.0064s |
| NPU 推理 (20 tensors) | 0.0779s |
| 端到端推理 (3秒音频) | ~6s |
Clipwise: torch.Size([1, 447]), Time: 6065.26ms
Top 5: ['Music', 'Wind', 'Screaming', 'Air horn, truck horn', 'Cacophony']精度测试通过对比 CPU 和 NPU 上的张量统计数据验证模型权重在两个设备间的一致性。
torch.sqrt(real.pow(2) + imag.pow(2)) 替代 torch.abs() 避免 complex64 类型问题A: 确保使用 float16 量化模型,DynamicGRUV2 仅支持 float16。
A: melspec 计算必须使用 float32,仅在卷积层后转换为 float16。