Ubuntu16.04安装caffe(gpu版)

字数 1185阅读 1725

继续前面tensorflow(gpu版)、torch后,我们开始安装caffe

若要安装NVIDIA显卡驱动或者安装CUDA+cudnn,参见:https://www.jianshu.com/p/1baf9848b7d7 (内附下载资源)
若需要安装tensorflow或者torch,参见:https://www.jianshu.com/p/038c6e073201

1.首先,我们安装一下依赖包

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 libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential

2. 安装opencv,注意:我们不安装opencv3,一般用也只用opencv2,没有必要用3

下载opencv版本自选,这里选择下载opencv2.4.13,下载地址:https://opencv.org/releases.html
(1) 将下载好的文件夹解压,进入文件夹 opencv-2.4.13:

cd opencv-2.4.13

(2) 新建一个文件夹用于存放临时文件:

mkdir release

(3) 切换到该临时文件夹:

cd release

(4) 开始编译:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

make -j8 //开启线程 按照自己的配置
sudo make install

然后进行环境配置:

(1) 将opencv的库加入到路径,从而让系统可以找到:

sudo gedit /etc/ld.so.conf.d/opencv.conf

(2) 末尾加入/usr/local/lib,保存退出:

sudo ldconfig #使配置生效

sudo gedit /etc/bash.bashrc

末尾加入:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

保存退出

sudo source /etc/bash.bashrc #使配置生效

到此为止,opencv的所有工作就做完了

可能有些小伙伴在终端测试时会发现问题:

ImportError: dynamic module does not define init function (PyInit_cv2)

这时候只需要通过pip安装opencv-python就好了:

pip3 install opencv-python

3. 下面我们开始安装caffe

在此确认步骤1中的步骤是否完成(重新输入步骤1中的命令以确认),安装好后方可继续
在自己想安装caffe的位置打开终端:

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

进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config :

cd caffe
sudo cp Makefile.config.example Makefile.config

在 caffe 目录下,修改 Makefile.config 文件:

sudo gedit Makefile.config

修改 Makefile.config 文件内容:
(1).应用 cudnn


 #USE_CUDNN := 1
修改成:
USE_CUDNN := 1

(2).应用 opencv


 #USE_OPENCV := 0
修改为:
USE_OPENCV := 1

(3).使用 python 接口


 #WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1

(4).修改 python 路径:

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 /usr/lib/x86_64

然后修改 caffe 目录下的 Makefile 文件:

sudo gedit Makefile


 NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)


 LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

然后修改 /usr/local/cuda/include/host_config.h 文件 :

sudo gedit /usr/local/cuda/include/host_config.h


 #error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

OK ,可以开始编译了,在 caffe 目录下执行 :

make all -j8

这是如果之前的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。

编译成功后可运行测试:

sudo make runtest -j8

4. 最后我们安装 pycaffe接口环境

pycaffe 的安装是为了更方便的去使用 caffe:

cd caffe
sudo make pycaffe -j8

5. 验证

编译 pycaffe 成功后,验证一下是否可以在 python 中导入 caffe 包,首先进入 python 环境:

python

然后导入 caffe :

 >>> import caffe

若不报错则表示 caffe 的 python 接口已正确编译

在终端import caffe成功,但是当使用jupytr notebook时失败的解决办法


如图,出现这种情况时,我们采取一下方式解决:

import os
import sys
caffe_root='/home/haoyev5/caffe/python' #自己的caffe路径
os.chdir(caffe_root)
sys.path.insert(0,caffe_root+'python')

第三行有些是caffe-mast文件夹下的路劲,改下就好了,但是有个弊端就是,每次使用caffe时都必须加入以上几行,略为不便
另外有些说法是这样子的:

import sys
sys.path.append('/home/haoyev5/caffe/python')

我采取了这种方式,无效,大家可以试试

另外,若遇到有关于libpng16.so的错误,如 ImportError: libpng16.so.16: cannot open shared object file: No such file or directory,按照https://blog.csdn.net/pkokocl/article/details/78756422下载安装就好了。

感谢:https://blog.csdn.net/yhaolpz/article/details/71375762

推荐阅读更多精彩内容