AI-深度学习

海思NPU模型转换 06 校准数据与量化

展开合集目录
  1. 海思NPU模型转换 01 平台工具与文档地图
  2. 海思NPU模型转换 02 搭建转换环境
  3. 海思NPU模型转换 03 拿到模型后的检查
  4. 海思NPU模型转换 04 导出和整理ONNX
  5. 海思NPU模型转换 05 预处理与AIPP
  6. 海思NPU模型转换 06 校准数据与量化
  7. 海思NPU模型转换 07 执行ATC转换
  8. 海思NPU模型转换 08 输出与后处理约定
  9. 海思NPU模型转换 09 PC仿真与精度比对
  10. 海思NPU模型转换 10 板端最小推理闭环
  11. 海思NPU模型转换 11 转换失败与性能排查
  12. 海思NPU模型转换 12 项目案例与交付清单
  13. 海思NPU模型转换 A 附录A文档检索表
  14. 海思NPU模型转换 B 附录BATC与AIPP参数表
  15. 海思NPU模型转换 C 附录C错误现象与排查表
  16. 海思NPU模型转换 D 附录D项目目录及交付模板
海思NPU模型转换 06 校准数据与量化的封面

系列编排日期为 2026 年 8 月;技术基线核对与教学代码 CPU 验证日期为 2026-10-12。适用 Hi3516CV610 与本系列注明的 SDK/工具版本,实测范围见第 12 章。

返回系列目录 · 本篇属于 12 章与 4 份附录。

量化把浮点网络映射到目标引擎支持的数值表示。校准数据决定中间激活范围,配置决定量化方式;两者都属于模型版本的一部分。

查阅文档的位置

《ATC工具使用指南》3.2.6.1~3.2.6.8 分别涉及外部量化参数、校准清单、编译模式、权重按通道量化、量化算法和精度相关选项。《快速上手指南》5.1.1~5.1.4 用于定位和改善精度问题。需要训练期或更复杂量化流程时,再读《AMCT使用指南(PyTorch)》及其样例。

编译模式与量化算法是两件事

参数或模式 本版文档含义 使用注意
compile_mode=0 A8W8 激活与权重都使用 8 bit 量化
compile_mode=1 A16W8 激活 16 bit,权重 8 bit;不是 FP16 模型
compile_mode=2 预留 不作为可用模式选择
compile_mode=3 A4W4 性能试验 实际使用需要相应 4 bit 重训及芯片支持
compile_mode=4 A8W4 性能试验 同样不能直接当作精度可交付模型
compile_mode=5 CUBE A8W8,非 CUBE FP16 必须核对芯片与算子限制
compile_mode=6 CUBE A16W8,非 CUBE FP16 必须核对芯片与算子限制
quant_mode=0 默认 linear_quant 与激活位宽不是同一概念
quant_mode=1 激活 IFMR,权重 ARQ 需用同一验收集比较收益

模式 5、6 的定义不意味着本芯片支持所有高精度组合。本版文档在量化参数相关约束中指出 Hi3516CV610 不支持 VEC 高精度,应结合该芯片说明检查,不要照其他型号照抄参数。

提供 gfpq_param_file 时,已配置层优先使用其中的量化参数,未指定部分才按编译模式处理。weight_quant_per_channel=1 针对文档所列 Conv、Deconv 等适用算子,不是把所有算子都自动变成同一种按通道策略。

准备有代表性的校准输入

校准集需要覆盖部署时真正进入网络的输入分布。检测整图、人头 ROI、人脸裁剪和分割输入应分别准备;同一原视频并不意味着各模型使用同一批原图。

人脸路径可以按明暗、偏色、尺寸、侧脸、倾斜、口罩、手遮挡、边界裁剪和无目标输入分组。不要让相邻视频帧占据绝大多数样本,也不要只保留高分、居中、清晰人脸。先建立较小而覆盖明确的集合,再根据量化误差和任务指标扩充。

手册中的少量典型图片适合开始跑通工具。项目个别脚本回退到一张示例 JPEG,也只构成冒烟验证。校准量不应机械写成一个适用于所有模型的固定数字。

校准集与独立验收集分开记录;即使校准不需要标签,任务精度评估仍需要可靠标注。为了修一次误差不断调整同一批测试图,会使结果逐渐只适应该批样本。

image_list 的文件格式

图像 AIPP 路线中,清单保存图片路径,典型 batch=1 时每行一张:

/workspace/application/.temp/yunet320-run/prepared_0.png
/workspace/application/.temp/yunet320-run/prepared_1.png

命令对应 --image_list="input:/workspace/.../calibration.txt"。参数中的名字是 ONNX 输入名。多输入使用引号包住 name1:list1;name2:list2,避免 shell 把分号解释成命令分隔。

路径必须在执行 ATC 的环境里可读。使用绝对容器路径最容易排除工作目录差异。AIPP 图像校准会按输入尺寸处理图像,但不会自动理解业务的头部 ROI 和特定 letterbox;应先生成尺寸和几何都正确的 PNG,再列入清单。

没有图像 AIPP 的特征输入可按手册使用文本或二进制,二进制数据类型必须匹配 input_type,默认路径下不能把 UINT8 字节当 FP32。扩展名为 .bin 不说明内容格式,PNG 编码流也不能直接充当连续 tensor。

逐项比较量化方案

先用已知可执行配置建立基线,例如当前 YuNet 的 A16W8、默认线性量化;之后每次只改变一项,如量化算法、样本集合或按通道选项。每个实验保存配置、日志、模型哈希、张量差异和任务指标。

若某层误差突然增加,先确认输入归一化和图变换无误,再使用厂商 dump 和 MindCmd 精度定位流程。只有数据和接口已对齐时,调整高精度层、AMCT 或重训才有可靠依据。直接提高输出为 FP32 不会恢复内部量化丢失的信息。

校准版本的交付要求

保留清单、样本 ID 与哈希、处理脚本版本、颜色与几何参数、数量和分组统计。受限样本可以保存在内部数据仓库,发布包只记录可追溯 ID。转换日志还需说明哪些输入实际参与校准,不能仅凭目录中“有很多图”推断工具都使用了它们。

上一篇 预处理与AIPP · 系列目录 · 下一篇 执行ATC转换