6.1 Model Quantization Development
工具简介
xquant 是基于 PPQ v0.6.6+ 开发 的模型量化工具,已集成适配主流芯片的量化策略。工具通过 JSON 配置文件统一调用接口,可将浮点格式的 ONNX 模型转换为 INT8 定点格式模型。
在使用 xquant 前,建议先将训练框架生成的模型转换为 ONNX 格式。目前主流框架均提供标准化的转换方案,参考 ONNX 转换教程: https://github.com/onnx/tutorials#converting-to-onnx-format
使用流程
量化流程如下图所示:
模型量化示例
以下以 Ultralytics 社区 提供的 yolov8n
模型为例,介绍 xquant 的量化操作流程。
安装量化工具包
从官方地址下载 .whl
安装包:xquant-1.2.1 下载地址
安装命令如下:
pip install xquant-1.2.1-py3-none-any.whl
安装完成后可通过以下命令验证安装成功:
pip show xquant
成功后输出如下:
获取浮点模型
-
下载原始 YOLOv8n 模型(
.pt
格式): https://docs.ultralytics.com/zh/models/yolov8/#performance-metrics -
使用 Ultralytics 提供的导出接口将
.pt
模型转换为.onnx
: 官方导出文档:https://docs.ultralytics.com/zh/modes/export/
通常建议导出时使用如下参数:
opset_version=13
input_shape=[1, 3, 640, 640]
配置量化工程文件
1)新建工程目录:
project_root/
├── yolov8/
│ ├── model/ # 放置 yolov8n.onnx 模型
│ └── data/ # 放置标定数据与配置文件
2)编写 yolov8_xquant_config.json
配置文件:
{
"model_parameters": {
"onnx_model": "yolov8/model/yolov8n.onnx",
"working_dir": "yolov8",
"skip_onnxsim": false
},
"calibration_parameters": {
"input_parametres": [
{
"mean_value": [0, 0, 0],
"std_value": [255, 255, 255],
"color_format": "rgb",
"data_list_path": "yolov8/data/calib_list.txt"
}
]
},
"quantization_parameters": {
"truncate_var_names": [
"/model.22/Reshape_output_0",
"/model.22/Reshape_1_output_0",
"/model.22/Reshape_2_output_0"
]
}
}
onnx_model
:模型路径mean_value
和std_value
:图像归一化参数,需与训练配置保持一致。color_format
:图像通道顺序(如 RGB/BGR)。data_list_path
:标定数据路径文件。
示例标定图像列表 calib_list.txt
内容如下:
Calib/000000428562.jpg
Calib/000000000632.jpg
Calib/000000157756.jpg
Calib/000000044279.jpg
Calib/000000131444.jpg
Calib/000000415238.jpg
Calib/000000202228.jpg
Calib/000000441491.jpg
Calib/000000068286.jpg
Calib/000000232088.jpg
⚠️ 建议标定数据选自模型训练集的子集,并保持数据分布一致。