深度学习之pytorch转caffe转ncnn模型转换(三)

搭建caffe平台:

先在Linux系统下搭建caffe环境,安装依赖包:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install libblas-dev

sudo apt-get install libatlas-base-dev

sudo apt-get install libopenblas-dev

sudo apt-get install python-skimage

sudo apt-get install python-protobuf

pip install easydict

 

(1)在linux环境下首先按下ctrl+alt+t打开一个新的terminal, 选定一个目录(还是建议不要在根目录下操作,尽量在用户目录下操作)输入命令mkdir Github; cd Github新建一个目录,并进入目录。

(2)输入git clone https://github.com/BVLC/caffe.git把远端仓库拉到本地目录。

(3)进入caffe目录,cp Makefile.config.example Makefile.config; 复制一份Makefile。

(4)该步骤为修改Makefile.config与Makefile文件,注意进行区分。

Makefile.config文件:

vim Makefile.config进入编辑模式;按住shift+:输入set number显示行号。

*第8行:如果没有CUDA的话就取消这一行的注释,编译CPU版本caffe,如果有显卡的话,注意需要安装CUDA,CUDA的搭建我们在先前教程已完成;

*第39行:根据代码注释,结合CUDA版本注释或接注释:

*第70行:将 /usr/lib/python2.7/dist-packages/numpy/core/include gaicheng修改为/usr/lib/local/python2.7/dist-packages/numpy/core/include

*第97行添加/usr/include/hdf5/serial 到 INCLUDE_DIRS。

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

*第98行进行修改,添加/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial到LIBRARY_DIRS:

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

Makefile文件:

*第181行,添加hdf5_hl hdf5。

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

1)输入 :

make –j12

进行编译。

2)make通过后输入:

make test –j12

make runtest –j12

测试编译正确性。通过后输入:

make pycaffe,编译通过后就可以在python下调用caffe。(也可以进入python环境下输入import caffe,若无报错则caffe环境搭建成功)

3)将caffe添加至环境变量:

gedit ~/.bashrc

export PYTHONPATH=$PYTHONPATH:{your local caffe path}/python

source ~/.bashrc

至此caffe环境搭建完成。

 

Pytorchcaffe模型:

首先将远端的Pytorch转Caffe模型工具git到本地路径下,进入../Github路径下(为了方便使用,同一将文件放入../Github路径下):

git clone https://github.com/tuvia0213/brocolli.git

(1)进入到../Github/brocolli/tests/pytorch_model文件目录下,将之前训练好的pytorch模型(pnet_epoch_9.pt、pnet_epoch_10.pt,后缀数字越大模型越精确,P、R、Onet相同)放入该目录。

(2)打开../Github/brocolli/tests目录,将../DFace/dface/core下的models.py与models.pyc文件放入../Github/brocolli下,运行../brocolli/tests下的pytorch_model_converter.py脚本。

(3)在转换Pnet、Rnet、Onet三种模型时需要对该脚本进行修改,三者类似,只以Pnet为例修改:

1)19行改为from models import PNet;

2)21行改为model_file = “pytorch_model/pnet_epoch_9.pt”;

3)25行改为PNet;

4)27行改为model_weights = torch.load(‘pytorch_model/pnet_epoch_10.pt’);

5)42、49、51行中,分别对红字进行修改:

dummy_input = torch.ones([1, 3, 24, 24])

summary(net, (3, 24, 24), device='cpu')

pytorch_parser = PytorchParser(model_file, [3, 24, 24])

在(1,3,24,24)中,1是batch size,3是channel(RGB),24为input size,只需要修改24,修改方法分别参考教程《深度学习之DFACE模型pytorch训练(二) 》三个网络的input_size,只需改成input size的整数倍即可;

(4)修改完后进入../brocoll/tests路径下进行模型转换:

python pytorch_model_converter.py

完成模型Pytorch转Caffe的模型转换,转换完后生成.caffemodel和.prototxt格式文件,进行Caffe转NCNN模型的转换。

 

CaffeNCNN模型:

ncnn是腾讯推出的一款嵌入式端推理框架,它可以完美兼容caffe环境,将caffe模型转换成ncnn框架支持的格式,然后就可以进行推理了。

       在这里感谢腾讯。

(1)cd ../Github;git clone https://github.com/Tencent/ncnn.git;

(2)cd ncnn; mkdir –p build; cd build; cmake ..; make –j4;编译生成pc端的工具;

(3)将caffe模型转换到ncnn可使用的模型;

(4)切换到目录ncnn/build/tools/caffe,运行

./caffe2ncnn pnet_epoch_10.pt.prototxt pnet_epoch_10.pt.caffemodel det1.param det1.bin

即可得到NCNN模型,Pnet、Rnet、Onet分别对应det1、det2、det3。

至此,模型转换完毕。

转载于:https://my.oschina.net/u/4003094/blog/3100540

你可能感兴趣的:(人工智能,git,操作系统)