1、编译win10版本的caffe
详细编译过程参考其他笔记
【Caffe-GPU】Caffe+Python3+CUDA8+CUDNN5+win10+VS2015+Mnist 配置
【Caffe-CPU】Caffe+Python+CPU+Win10+VS2015+Mnist 配置
2、准备需要转换的caffemodel
通常来说,一个caffe模型有以下三个文件: train.prototxt 、deploy.prototxt 、alexnet.caffemodel,其中 train.prototxt 是用于训练的,在部署的时候,只需要 TEST 过程,所以只要有 deploy.prototxt 和caffemodel 就够了。
3、编译win10版本的NCNN
详见本人其他笔记 NCNN + WIN10 + VS2015 编译和测试
本机ncnn根目录为
D:\github\ncnn-win10\ncnn-20190611
4、将老版本的caffe网络转换为新版
由于NCNN只支持新版本的caffe网络,因此需要先将老版本的caffe网络转换为新版本,该转换可以用caffe自带的工具来进行。
如果在第1步中成功编译了caffe,将在caffe-windows/build/tools/Release 目录下生成各种工具,如
其中的 upgrade_net_proto_text.exe 和 upgrade_net_proto_binary.exe 用于转换新模型,用以下
命令进行
upgrade_net_proto_text.exe [老prototxt] [新prototxt]
upgrade_net_proto_binary.exe [老caffemodel] [新caffemodel]
转换完成后,将prototxt文件中的input第一个dim设为1,因每次只需测试一张图片。
5、将新版本的caffe网络转换为ncnn
如果在第3步中成功编译了ncnn,将在 ncnn/build/tools/caffe 目录下生成 caffe2ncnn.exe 工具,
利用该工具可将新版本的caffe转换为ncnn,执行以下命令
caffe2ncnn.exe [新prototxt] [新caffemodel] [ncnn的param格式描述文件] [ncnn的bin格式模型文件]
执行完后将生成ncnn格式的param和bin文件,这两个文件其实已经可以用了,但param描述文件是明文的,容易被人看到,因此可以进一步利用 ncnn2mem.exe 工具生成二进制的描述文件,该工具在ncnn/build/tools 目录下,执行以下命令,将生成 bin 格式的描述文件和两个静态数组文件
ncnn2mem.exe [ncnn的param格式描述文件] [ncnn的bin格式描述文件] [alexnet.id.h] [alexnet.mem.h]
主要参考官方的 ncnn组件使用指北alexnet