參考https://www.cnblogs.com/wanggangtao/p/11352948.html
一、mxnet模型轉ncnn模型
可以參考上篇博客文章
https://blog.csdn.net/kupepoem/article/details/104814665
二、ncnn模型量化
1、ncnn2table生成量化表
(1)、終端進入vs2015build\tools\quantize\Release
(2)、ncnn2table --param=model.param --bin=model.bin --images=org_bvt_mul_allinone/ --output=model.table --mean=104.0,117.0,123.0 --norm=1.0,1.0,1.0 --size=112,112 --swapRB --thread=2
- 注:這裏的image指的是圖片集,並且是圖片數量較多的圖片集;
(3)、執行命令後,即可看見原文件目錄下生成model..table的量化表
三、ncnn2int8量化網絡模型
1、執行可執行文件ncnn2table,生成量化表,參考步驟二
2、終端進入vs2015build\tools\quantize\Release
3、執行命令ncnn2int8
ncnn2int8 [inparam] [inbin] [outparam] [outbin] [calibration table]
ncnn2int8 model.param model.bin model_q.param modelq.bin model.table
4、執行命令後,即可在原文件目錄下生成param和bin的輸出文件(即進行int8量化後的ncnn模型)
四、使用
這個ncnn版本的int8量化模型的使用基本和fp32的使用基本一樣,
ncnn::Net netq
netq.load_param("model_q.param");
netq.load_model("model_q.bin");
五、結果及討論
4.65M的模型降低到了1.35M,x86pc上平均運行一次的時間從0.46s提高到0.269s左右,效果基本還可以,具體效果的精確數據還需要測一下。