前言:
OpenExplorer(OE)是地平线面向边缘 / 车载 AI 的全链路开发平台,量化是其模型编译优化的核心环节,目标是把FP32 浮点模型转为 INT8/INT16 定点模型,实现:
- 模型体积压缩(INT8≈4 倍)、内存占用大幅降低
- 推理速度显著提升,适配地平线 J5/J6 等芯片
- 精度可控,PTQ/QAT 双方案保障落地效果

PTQ(Post-Training Quantization,训练后量化)
- 适用场景:已训练好的浮点模型(ONNX/Caffe),无需重训,快速量化部署
- 核心流程:
- 准备校准数据集(少量代表性数据,用于统计激活值分布)
- 配置
quant_config(量化策略、精度、算子级控制) - 执行
hb_mapper工具完成量化、图优化、编译 - 生成
.bin模型,上板验证精度与性能
- 关键配置(quant_config)OpenExplorer
- 量化粒度:
per-tensor(默认)/per-channel(精度更高,部分算子支持) - 精度:
int8(默认)/int16(高敏感算子,如检测头) - 算子级控制:指定某算子输入 / 输出为
int16,不支持则自动回退int8 - 配置优先级:
node_config>op_config>model_config
- 量化粒度:

核心工具

|---------------------|---------------------------------------------------------------------------------------------------------------------------------|
| hb_compile | hb_compile工具是地平线提供的将浮点模型映射为量化模型并附带验证功能以及模型修改功能的工具,支持三种使用场景,分别为:模型检查、模型量化编译、模型修改。 |
| hb_model_info | hb_model_info工具是地平线提供的用于解析*.hbm和*.bc编译时的依赖及参数信息,同时支持对*.bc可删除节点进行查询的工具。 |
| hb_verifier | hb_verifier工具是一致性验证工具,支持进行onnx模型之间、onnx模型与hbir模型、hbir模型与hbir模型之间的余弦相似度对比,hbir与hbm模型之间的输出一致性对比。 |
| hb_eval_preprocess | hb_eval_preprocess工具是地平线提供的用于对模型精度进行评估时,在x86环境下对图片数据进行预处理(包括图片resize、crop、padding等在图片数据送入模型前的特定处理操作)的工具。 |
| hb_config_generator | hb_config_generator工具是地平线提供的用于支持您获取最简yaml配置文件、包含全部参数默认值的yaml配置文件的工具。 |
| HBRuntime | HBRuntime是地平线提供的一套x86端模型推理库,支持对常用训练框架直接导出的ONNX原始模型、地平线工具链进行PTQ转换过程中产出的各阶段ONNX模型以及地平线工具链转换过程中产出的HBIR(*.bc)模型和HBM(*.hbm)模型进行推理。 |
| 精度debug工具 | 精度debug工具是地平线提供的用于协助您自主定位模型量化过程中产生的精度问题的工具,该工具能够协助您对校准模型进行节点粒度的量化误差分析,最终帮助您快速定位出现精度异常的节点。 |
标准工作流(PTQ 为主)
- 模型准备:PyTorch/TensorFlow → 导出 ONNX(推荐)/Caffe
- 数据准备:校准集(100--1000 张)+ 测试集(精度验证)
- 配置编写 :
model_config.json+quant_config.json - 执行量化 :
hb_mapper --config ... - 精度评估:对比浮点 / 量化模型的 mAP/Acc
- 上板部署 :生成
.hbm/.bin,在 BPU 上推理
混合精度与算子支持
- 默认 INT8:大部分算子(Conv/FC/ReLU 等)自动量化为 INT8
- INT16 增强:对精度敏感算子(如 YOLO 检测头、Transformer 注意力)可手动指定 INT16,减少精度损失
- 算子约束:OE 提供详细算子支持列表,不支持的算子会保留浮点或自动回退OpenExplorer
常见问题与调优
- 精度下降
- 增大校准集数量 / 多样性
- 开启
per-channel量化 - 对关键算子启用 INT16
- 切换 QAT 方案
- 量化失败
- 检查 ONNX 算子是否合规(OE 不支持的算子需替换 / 融合)
- 校准集数据范围异常(如 NaN/Inf)
- 性能未达标
- 关闭冗余算子 / 常量折叠
- 启用算子融合(OE 自动优化百余项图优化)
