编译NCNN
mkdir build && cd build && cmake ../
进入到build/tools/darknet目录,将来源于darknet的模型文件和权重文件拷贝一份到这里:
转换过程如下:
优化:
./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
生成的优化过的模型如下:
检测实战,未优化的模型推理结果:
优化后的模型推理结果:
下载量化校准表图片
下载官方给出的1000张ImageNet图像,很多同学没有梯子,下载慢,可以用下这个链接:
图片内容包括:
进入到目录build/tools/quantize,创建images文件夹,之后将imagenet图片全部拷贝到此目录
之后,执行命令 find images/ -type f >imagelist.txt,创建图像文件列表。
之后执行命令:
./ncnn2table yolov4-tiny-opt.param yolov4-tiny-opt.bin imagelist.txt yolov4-tiny.table mean=[104,117,123] norm=[0.017,0.017,0.017] shape=[224,224,3] pixel=BGR thread=8 method=kl
量化模型:
./ncnn2int8 yolov4-tiny-opt.param yolov4-tiny-opt.bin yolov4-tiny-int8.param yolov4-tiny-int8.bin yolov4-tiny.table
生成的yolov4-tiny-int8.bin即为量化后的权重文件,可以看到它的大小是量化前的 四分之一,这就是量化的一个优势,可以减小内存使用量。