本文以NCNN框架为例,实践量化在推理中的巨大作用,加深对神经网络量化的理解。NCNN当前版本只支对称量化,下面以INT8精度为例介绍NCNN的量化使用方式:
编译NCNN
mkdir build && cd build && cmake ../
进入到build/tools/darknet目录,将来源于darknet的模型文件和权重文件拷贝一份到这里:
wget -c https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights
转换过程如下:
./darknet2ncnn ./yolov4-tiny.cfg ./yolov4-tiny.weights
优化:
./ncnnoptimize /home/czl/ncnn/ncnn/build/tools/darknet/ncnn.param /home/czl/ncnn/ncnn/build/tools/darknet/ncnn.bin yolov4-tiny-opt.param yolov4-tiny-opt.bin 0
同时,也可以得到MAC算力信息:
生成的优化过的模型如下:
检测实战,未优化的模型推理结果:
优化后的模型推理结果:
这里的yolov4其实就是yolov4-tiny,程序中是可以选择:
下载量化校准表图片
下载官方给出的1000张ImageNet图像,很多同学没有梯子,下载慢,可以用下这个链接: