更新时间:2021-03-18 GMT+08:00
模型精度测试
由于量化示例进行的推理和量化校准的过程都是基于自带的图片数据集进行的,量化结果仅用于验证量化模型是否成功,不能够作为量化后模型精度验证标准。本章节给出基于ImageNet标准数据集进行量化前后网络精度验证测试的详细步骤。
在使用ImageNet标准数据集之前,需要预先下载ImageNet数据集并调用Caffe提供工具转换成为LMDB格式数据集。
准备动作
- 参考Caffe工程caffe-master/examples/imagenet/readme.md文件下载并制作lmdb格式ImageNet数据集。
- 修改ResNet50_sample.py sample脚本。原始代码如下:
# Configuration for ImageNet LMDB dataset DO_BENCHMARK_TEST = False LMDB_DATASET_DIR = 'your lmdb dataset dir' SCALE = 1 CROP_SIZE = 224 MEAN_FILE = None MEAN_VALUE = [103.894, 116.555, 122.578]
修改原则如下:- 修改DO_BENCHMARK_TEST为True,表示基于ImageNet数据集进行精度测试。
- 修改LMDB_DATASET_DIR改为1得到的数据集地址。
- SCALE根据需要设置数据预处理的scale值,默认为1。
- CROP_SIZE根据据网络输入shape进行合适的裁剪,默认ResNet-50的输入shape为224。
- MEAN_FILE/MEAN_VALUE:二选一的均值配置方式,MEAN_FILE可以配置为LMDB数据集制作过程中产生的均值文件(element wise),也可以配置为列表格式的MEAN_VALUE(channel wise);
精度测试
- 量化前精度测试。
python3.7.5 ResNet50_sample.py --model_file pre_model/ResNet-50-deploy.prototxt --weights_file pre_model/ResNet-50-model.caffemodel --gpu 0 --caffe_dir caffe-master --pre_test
参数解释请参见表1,若出现如下信息则说明执行成功:
******final top1:0.72875 ******final top5:0.9099375 [AMCT][INFO]Run ResNet-50 without quantize success!
- 量化后精度测试。
python3.7.5 ResNet50_sample.py --model_file pre_model/ResNet-50-deploy.prototxt --weights_file pre_model/ResNet-50-model.caffemodel --gpu 0 --caffe_dir caffe-master
若出现如下信息则说明量化成功:
******final top1:0.7288125 ******final top5:0.909625 [AMCT][INFO]Run ResNet-50 with quantize success!
- 用户可以根据量化前后分类精度(top1, top5)的指标,查看量化是否满足要求。
父主题: 分类网络模型量化
