检测网络模型量化
量化前提
- 模型准备
以昇腾模型压缩工具的安装用户将需要量化的TensorFlow模型上传到Linux服务器任意目录下。本章节以sample自带的yolov3/pre_model/yolov3_coco.pb模型为例进行说明。
用户准备的模型,建议先在TensorFlow环境中执行推理,并确保能成功运行,精度没有异常。
- 数据集准备
使用昇腾模型压缩工具对模型完成量化后,需要对模型进行推理,以测试量化数据的精度。推理过程中需要使用和模型相匹配的数据集。
以昇腾模型压缩工具的安装用户将和模型相匹配的数据集上传到Linux服务器任意目录下。本章节以sample自带的yolov3/detection.jpg数据集为例进行说明。
- 校准集准备
校准集用来产生量化因子,保证精度。
计算量化参数的过程被称为“校准(calibration)”。校准过程需要使用一部分测试图片来针对性计算量化参数,使用一个或多个batch对量化后的网络模型进行推理即可完成校准。
以昇腾模型压缩工具的安装用户将校准集文件上传到Linux服务器任意目录下。本章节以sample自带的yolov3/calibration.jpg校准集为例进行说明。
量化示例
- 切换到sample/yolov3目录,执行如下命令量化yolov3网络模型。
python3.7.5 YOLOV3_sample.py
若出现如下信息则说明量化成功:
INFO - [AMCT]:[save_model]: The model is saved in $HOME/amct/amct_tf/sample/yolov3/result/YOLOv3_quantized.pb //量化后模型的保存路径 origin.png save successfully! //量化前检测结果 quantize.png save successfully! //量化后检测结果
- 量化成功后,在量化后模型的同级目录下生成量化配置文件config.json、量化日志文件夹amct_log、量化结果文件result、以及量化前后的检测结果(origin.png/detection.jpg)等:
- config.json:描述了如何对模型中的每一层进行量化。如果量化脚本所在目录下已经存在量化配置文件,则再次调用create_quant_config接口时,如果新生成的量化配置文件与已有的文件同名,则会覆盖已有的量化配置文件,否则生成新的量化配置文件。
实际量化过程中,如果量化后的模型推理精度不满足要求,用户可以修改config.json文件,量化配置文件内容、修改原则以及参数解释请参见量化配置。
- amct_log:记录了工具的日志信息,包括量化过程的日志信息amct_tensorflow.log。
- record.txt:记录量化因子的文件。关于该文件的原型定义请参见量化因子记录文件说明。
- result:量化结果文件,包括量化后的模型文件以及模型量化信息文件,如下所示:
- YOLOv3_quant.json:量化信息文件(该文件名称和量化后模型名称保持统一),记录了量化模型同原始模型节点的映射关系,用于量化后模型同原始模型精度比对使用。
- YOLOv3_quantized.pb:量化后的可在TensorFlow环境进行精度仿真并可在昇腾AI处理器部署的模型。
对该模型重新进行量化时,在量化后模型的同级目录下生成的上述结果文件将会被覆盖。
- config.json:描述了如何对模型中的每一层进行量化。如果量化脚本所在目录下已经存在量化配置文件,则再次调用create_quant_config接口时,如果新生成的量化配置文件与已有的文件同名,则会覆盖已有的量化配置文件,否则生成新的量化配置文件。
- (可选)如果用户需要将量化后的deploy模型,转换为适配昇腾AI处理器的离线模型,则请参见《ATC工具使用指导》。