ubuntu16.04.3中caffe编译
1、系统环境说明
利用lsb_release -a命令和uname -a命令查看操作系统信息或者直接点击右上角菜单中的“关于这台计算机”。
输入python命令可以看到Python的版本为Python 2.7.12 ,不要忘了quit()出来
2、安装依赖包
输入以下命令:
sudo apt-get install libprotobuf-dev
sudo apt-getinstall libleveldb-dev
sudo apt-getinstall libsnappy-dev
sudo apt-get install libopencv-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install --no-install-recommends libboost-all-dev
(在这里有一个sudo apt-get install python-dev的命令没有输入,不知道是否有影响)
2、下载caffe
(1)安装git工具:
sudo apt-get install git
(2)下载caffe包:
首先创建一个文件夹用来存放caffe包,然后开始下载:
git clone https://github.com/bvlc/caffe.git
(3)安装python接口依赖项:(这些依赖项在/caffe/python中的requirements.txt文件中)
进入caffe目录下:
cd caffe
进入里面的PYTHON文件夹,输入:
cd python
for req in $(cat requirements.txt); do pip install $req; done
如果没有pip需要先进行安装:sudo apt install python-pip
3、安装caffe
(1)复制Makefile.config.example文件,改名为Makefile.config文件:
cp Makefile.config.example Makefile.config
(2)根据需要修改Makefile.config文件,博主比较关注的是CPU还是GPU模式、是否使用cuDNN以及CUDA接口这三个问题:
根据以往的经验加上博主的电脑GPU和显存都不是十分理想,因此博主选择来CPU模式,就不用管CUDA了。同时,友情提示:打开cuDNN功能会导致网络结构很大而系统显存不够用,所以请量力而行(初始化网络就需要5G+的显存);
基于以上需求,博主作出如下改动:
1)将CPU_ONLY = 1前的注释符号删去,这是为了实现CPU模式,具体位置如下图:
2)更改hdf5路径,否则编译时会报hdf5错误,更改内容如下:
# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
更改效果如下:
(3)开始编译caffe
cd定位至caffe文件夹,输入命令:make pycaffe
遇到如下图所示问题:
分析原因是由于python没有安装numpy模块,手动下载:sudo apt-get install python-numpy
下载完毕后再次输入:make pycaffe,这一次很快就编译完成了(博主也不知道有咩游问题)
之后输入:make all,完成速度也比博主想象中要快许多(windows编译留下来阴影)
之后输入:make test
完成后输入:make runtest
如果最后显示如下图,表示caffe已经编译成功了:
4、配置Python接口
此时其实已经可以在python中import caffe,但是必须cd进入/caffe/python的路径中
之所以会出现这种问题,是因为在系统的环境变量PATH中并没有caffe。有两个选择,第一是更改系统环境变量,第二是在python中对于sys.path进行更改。介于第二个方法对于系统整体影响较小(即使操作失误问题也不大),故博主选择了第二种方法。实现方法是在import python前加以下命令:
import sys
sys.path.append("~/caffe/python/")#这里的~应该是你caffe文件夹的路径
效果如下图:
5、训练测试——MNIST训练
1)下载数据集
数据集的下载与解压是通过caffe自带的get_mnist.sh,命令如下:
cd ~/caffe/data/mnist
./get_mnist.sh
效果如下图:
2)转换格式
将下载的二进制原始数据集转换为lmdb形式,命令如下:
cd ~/caffe
./examples/mnist/create_mnist.sh
效果如下图:
3)开始训练
介于我们编译的是CPU_ONLY的caffe框架,因此需要先进入~/caffe/examples/mnist中修改lenet_solver.prototxt文件,修改训练测略:将最后一行的solver_mode: GPU改为solver_mode: GPU,如下图所示:
之后输入以下命令进行训练:
./examples/mnist/lenet_solver.prototxt
以上,完成所有步骤。最终效果如下: