欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

腾讯开源ncnn:caffemodel转化为.param和.bin文件

程序员文章站 2022-07-13 17:17:00
...

本博记录为卤煮使用时的记录,属于事后回忆记录,如有疏漏,请指正。

卤煮:非文艺小燕儿

本博地址:腾讯开源ncnn:caffemodel转化为.param和.bin文件

感谢开源共享的各位大牛们,让我们能够站在巨人的肩膀上前行。


ncnn Git:https://github.com/Tencent/ncnn

ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。


腾讯开源的ncnn中不能直接加载我们自己训练好的caffemodel和deploy文件,而是加载其自己定义的param和bin模型文件。

不过其提供了将caffemodel文件转化为param和bin文件的工具。在\ncnn-master\tools下的caffe2ncnn.cpp文件就是用来实现该转换。


首先创建一个VS工程(我的命名是caffe2ncnn),添加caffe2ncnn文件作为主文件。


然后进行工程配置:

(1)将工程配置为x64 release(我配置成win32出现了一些奇怪的问题(相关lib并没用错版本),后来转成x64就好了)

腾讯开源ncnn:caffemodel转化为.param和.bin文件

(2)包含目录

腾讯开源ncnn:caffemodel转化为.param和.bin文件

(3)库目录

腾讯开源ncnn:caffemodel转化为.param和.bin文件

(3)链接器输入

腾讯开源ncnn:caffemodel转化为.param和.bin文件

配置完成后,生成项目,在x64\Release下得到caffe2ncnn.exe,将依赖的库文件也放到该Release文件夹下。




接下来以alexnet为例,实施caffemodel的转换。

准备caffe网络和模型

caffe 的网络和模型通常是搞深度学习的研究者训练出来的,一般来说训练完会有

train.prototxt
deploy.prototxt
snapshot_10000.caffemodel

部署的时候只需要 TEST 过程,所以有 deploy.prototxt 和 caffemodel 就足够了

alexnet 的 deploy.prototxt 可以在这里下载https://github.com/BVLC/caffe/tree/master/models/bvlc_alexnet

alexnet 的 caffemodel 可以在这里下载 http://dl.caffe.berkeleyvision.org/bvlc_alexnet.caffemodel

转换ncnn网络和模型

caffe 自带了工具可以把老版本的 caffe 网络和模型转换为新版(ncnn的工具只认识新版

upgrade_net_proto_text [老prototxt] [新prototxt]
upgrade_net_proto_binary [老caffemodel] [新caffemodel]

输入层改用 Input,因为每次只需要做一个图片,所以第一个 dim 设为 1

layer {
  name: "data"
  type: "Input"
  top: "data"
  input_param { shape: { dim: 1 dim: 3 dim: 227 dim: 227 } }
}


deploy.prototxt 和 caffemodel 文件放入刚才的Release文件夹下。

使用 caffe2ncnn.exe 工具转换为 ncnn 的网络描述和模型

caffe2ncnn deploy.prototxt bvlc_alexnet.caffemodel alexnet.param alexnet.bin






相关标签: ncnn