搭建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环境搭建完成。
Pytorch转caffe模型: 首先将远端的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模型的转换。
Caffe转NCNN模型: 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。 至此,模型转换完毕。 |
扫描关注,了解最新资讯