caffe(CPU-only)安装及配置

更多信息请查阅caffe官方文档

1. 环境说明

  • OS: Ubuntu 16.04 LTS

  • Python 2.7.12(系统预装)

2. 安装依赖

打开终端(Ctrl+Alt+T),执行以下命令安装caffe依赖项:

sudo apt install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

为了获得更好的CPU性能,执行以下命令安装ATLAS:

sudo apt install libatlas-base-dev

执行以下命令安装OpenBLAS:

sudo apt install libopenblas-dev

安装MKL。

Ubuntu预装了Python2.7版本,但要使用caffe的Python接口需执行以下命令:

sudo apt install python-dev

以上命令无论在哪个文件夹下执行都没有影响,Linux系统有默认的安装目录。自Ubuntu 16.04 LTS开始,apt命令全面取代了Linux软件包管理中的apt-get、apt-cache等命令。为兼顾老用户的使用习惯Ubuntu 16.04依然保留着apt-get系列命令。

3. 安装caffe

使用cd命令转到caffe的安装目录(我的是/home/”username”/local),使用以下命令从Github获取caffe源码(没有git的话要先使用命令sudo apt install git进行安装):

git clone https://github.com/BVLC/caffe.git

下载完成后,cd到caffe文件夹,使用以下命令从模板文件Makefile.config.example复制一份Makefile.config:

cp Makefile.config.example Makefile.config

因为是CPU-only模式,需要修改Makefile.config内容:去掉第8行# CPU_ONLY := 1行首的”#”。

此外还需要修改接近文件末尾的两行

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

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

否则会报hdf5错误。

保存完成后就可以进行编译了,因为我要使用caffe的Python接口,所以需要编译pycaffe。cd到caffe文件夹下的python文件夹,使用以下命令安装pycaffe的依赖项(没有pip的话要先使用命令sudo apt install python-pip进行安装):

for req in $(cat requirements.txt); do pip install $req; done

因为pip默认的源在国外,所以下载速度惨不忍睹,这里可以修改命令为

for req in $(cat requirements.txt); do pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done

以使用清华的镜像来提高下载速度。

以下是安装时的几个坑:

  1. requirements.txt只限定了依赖项的最低版本,其中IPython下载的版本不支持Python2.7版本,需要下载IPython5.x才行。
  2. caffe使用proto2,然而现在下载的protobuf都是3.x,坑爹的是2和3不兼容啊!
  3. 这里下载的东西比较多,需要注意是否所有的依赖都安装成功。我安装的时候没注意,执行完成就去编译了,结果编译报错,最后才发现是scikit-image没下载成功。

填坑需要修改requirements.txt:

ipython>=3.0.0  -->  ipython==5.6.0
...
protobuf>=2.5.0 -->  protobuf==2.6.1

pycaffe依赖项安装完成后,就可以编译pycaffe了。cd到caffe目录下,运行以下命令进行编译:

make pycaffe -j8
make all -j8
make test -j8
make runtest -j8

其中8表示并行线程的数量,线程数量最好和自己电脑的CPU核数一致。如果编译时出错,建议在找到错误原因后使用命令make clean清理后再重新开始编译。

4. 设置PYTHONPATH

如果要在Python中导入caffe模块,还要使用以下命令设置模块路径:

export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH

其中/path/to/caffe是caffe的路径(我的是/home/”username”/local/caffe)。注意:不能在…/caffe/python/caffe目录下导入caffe模块。

上面设置模块路径的方法只在当前终端有效,要使模块路径在所有终端甚至重启后都有效,可以使用下面的两种方法。1. 使用sudo vim /etc/profile打开配置文件,添加上面的命令到文件里,然后使用source /etc/profile使更改过的配置文件立即生效。2. 在/etc/profile.d文件下新建pythonpath.sh文件(文件名无所谓,但必须是.sh后缀名),然后将上面的命令保存到pythonpath.sh里,之后重新启动就行了。个人推荐第二种方法,虽然重启麻烦了点,但胜在美观。

最后,可以导入caffe模块试一试,看看是否配置成功。

$ python
>>> import caffe
>>>

导入成功!开始caffe之旅吧!

你可能感兴趣的:(caffe)