caffe2ncnn

一、准备工作

安装opencv

安装protobuf

下载ncnn源码并编译

git clone https://github.com/Tencent/ncnn

cd ncnn

mkdir build && cd build

cmake ..

make -j4

make install

二、具体操作

(1)、如果是旧版Caffe模型,需要在Caffe环境中转换为新版Caffe模型;

 ~/caffe/build/tools/upgrade_net_proto_text deploy.prototxt new_deplpy.prototxt

 ~/caffe/build/tools/upgrade_net_proto_binary bvlc_alexnet.caffemodel new_bvlc_alexnet.caffemodel

 执行后,即可生成一个新版的Cafffe模型;

(2)、编译NCNN源码,编译成功后,会在源码中生成一个build文件夹;

(3)、终端进入ncnn/build/tools/caffe目录下,会发现生成一个caffe2ncnn的可执行文件。

(4)、执行如下命令:(caffe文件名和生成的ncnn文件名需要自己设置)

./caffe2ncnn new_deploy.prototxt new.caffemodel demo.param demo.bin

执行完成之后在ncnn/build/tools/caffe下就可以看到生成的param和bin文件了。

三、转换后模型验证

验证思路:

1、对caffe和ncnn进行相同的预处理,使结果保持一致,例如指定图片的大小、将HWC通道转换为CHW、减均值、归一化处理等操作;

2、输入一张图片,使用Resnet50 Caffe模型运行,得出结果;

进入caffe/build/examples文件下执行resnet50的可执行文件,输入图片,得到预测值的索引和概率的结果

3、同样地,输入同张图片,使用Resnet50 NCNN模型运行,得出结果;

进入ncnn/build/examples文件下执行resnet的可执行文件,输入图片,得到预测值的索引和概率的结果

4、将两个得出的结果进行比较,观察是否大致相同。如果结果大致相同,则模型转换成功;如果结果差距较大,则模型转换失败。