← 返回文档

海思平台 (Hi3519DV500)

海思 Hi3519DV500 SVP NNIE NPU

Hi3519DV500 芯片集成了基于华为 SVP NNIE 架构的专用 NPU。soundSDK 利用此 NPU 实现低功耗、实时的声音推理。

关键特性

项目
详情
CPU
双核 ARM Cortex-A55 @ 1GHz
NPU
SVP NNIE(仅支持 INT8——不支持 FP32/FP16 NPU 推理)
NPU 模型格式
`.om`(DaVinci 离线模型,通过 ATC 工具转换)
音频采集
MPP SDK(`ss_mpi_ai_*`)
采集类型字符串
`"mpp"`
引擎类型字符串
`"svp_acl"`
交叉编译器
`aarch64-v01c01-linux-gnu-gcc`

重要:仅 INT8

海思 NPU 仅支持 INT8 量化推理。ATC 编译器通过校准数据将浮点 ONNX 模型转换为 INT8。使用 compile_mode=0(A8W8——激活值和权重均量化为 8 位)。

模型准备流程

# 第 1 步:生成校准数据(Windows 上执行)
cd c/py
python generate_calibration.py   # 生成 500 个 .bin 文件 + calibration_data.bin

# 第 2 步:导出 ONNX 模型(Windows 上执行)
python export_model_onnx.py \
    --model ../../path/to/trained/model.h5 \
    --output cry_detect.onnx

# 第 3 步:ONNX → INT8 .om 转换(在有海思 SDK 的 Linux 上执行)
atc --model=cry_detect.onnx \
    --framework=5 \
    --output=cry_detect_int8_v4 \
    --soc_version=Hi3519DV500 \
    --input_shape="input:1,1,225,225" \
    --input_format=NCHW \
    --image_list=calibration/calibration_data.bin \
    --compile_mode=0

编译

cd c/hisi3519
NPU=1 ./build.sh

输出:cry_detect(ARM64 可执行文件,链接 libsvp_acl)

部署到目标板

# 通过 SCP 拷贝到 SD 卡
scp cry_detect cry_detect_int8_v4.om root@192.168.0.106:/mnt/sdcard/

# 运行(NPU 模式)
./cry_detect -f test.wav -e svp_acl -w cry_detect_int8_v4.om

# 与 CPU 基线对比验证
./cry_detect -f test.wav -e pure_c -w model_weights.bin

精度验证

INT8 量化通常与 float32 的概率差异 < 0.02。对比输出以验证:

# NPU 推理
./cry_detect -f test.wav -e svp_acl -w cry_detect_int8_v4.om

# CPU 推理(参考)
./cry_detect -f test.wav -e pure_c -w model_weights.bin

已知限制

1. NPU 需要填充输入:225×225 → 225×228(每行末尾补 3 个零)

2. 输出张量为 [1,4] 而非 [1,2](含反量化参数)

3. svp_acl 引擎通过条件编译(NPU=1)构建——标准构建不包含 NPU 支持