Ubuntu16.04 安装配置 Caffe 过程 (GPU版+CUDA 9.0+cuDNN 7.0+OpenCV 3.4.1)

虽然 Caffe 的官网已经有比较详细的针对 Ubuntu 的安装教程,但是要配置可以使用 GPU Caffe 需要的依赖太多,包括 CUDAcuDNNOpenCV 等。参考了网上的很多教程,但在自己的配置中依旧出现了各种各样的意想不到的坑,所以在此记录一下自己配置 Caffe 的过程,以供参考。因为是配置完成后以回忆的形式做的记录,所以可能会有细节上的遗漏,还请见谅。

安装 Nvidia 驱动

1. 查询 NVIDIA 显卡驱动

去官网查询自己的显卡对应的驱动 http://www.nvidia.com/Download/index.aspx?lang=en-us

下图是我的显卡和其对应的驱动版本

 

2. 安装 NVIDIA 显卡驱动

安装 NVIDIA 驱动可以有两种方式,一种自动,一种手动。我选择的是自动安装,毕竟比较简单,观察了一周多还没出什么问题。

自动安装:添加 PPA 源,命令如下:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

然后在 Ubuntu 的系统设置→软件和更新→附件和驱动中选择对应的驱动版本进行安装。

手动安装:下载你查询出来的 NVIDIA 驱动 .run文件,详细的安装方法可自行百度或参考该博文 https://blog.csdn.net/cosmoshua/article/details/76644029

安装完后用命令

sudo nvidia-smi

可查看 GPU 的信息和驱动版本,如果有信息说明已成功安装。

 

Cited from[1]

安装 CUDA 9.0

首先,根据自己的系统下载 CUDA runfile 文件,如下图所示。

 

然后我是 Ctrl+Alt+F1 进入了 Ubuntu 的文字界面以 root 的身份进行的安装(图形界面下试过以 sudo 身份安装失败了,naïve…

文字界面下,应该可以用 sudo 的身份安装:

sudo service lightdm stop //关闭图形界面
sudo sh cuda_9.0.176_384.81_linux.run

然后不停按回车看完一堆协议后会有一系列提示要求你确认,有一个问你是否安装 NVIDA 驱动的选项最好选择否(因为之前已经安装过 NVIDIA 驱动;CUDA 自动安装的显卡驱动不一定是最新的,所以最好在这之前先安装一下最新的 NVIDA 驱动)。然后其他的提示一般都选默认和是,如果不确定可以再自己搜一下更详细的指导。

最后需要配置一下 CUDA 的环境变量

sudo gedit /etc/profile

将以下内容写入到 profile 文件的尾部:

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

然后使其立即生效

source /etc/profile

配置完后可测试一下 CUDA 的例子以验证是否安装正确

cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery

有如下信息则说明安装成功

Cited from [1]

命令 nvcc –V 可查看 CUDA 版本。

安装 cuDNN 7.0

NVIDIA 官网下载 cuDNN 7.0 tgz 压缩包。(可能需要FQ才能下,我下的时候都无法注册账号,就直接拷了别人的)

解压缩

tar -xzvf cudnn-9.0-linux-x64-v7.tgz

把下载的 cuDNN 的头文件和库文件添加到了已安装的 CUDA 文件中

sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h

然后必须再做一个软链接,否则在之后配置中会报找不到 libcudnn.so 的文件的错误

软链接配置,文件后缀数字根据版本的不同会不一样,根据自己的情况修改:

cd /usr/local/cuda/lib64/
sudo ln -sf libcudnn.so.7.0.5 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig

安装 OpenCV 3.4.1

官网的教程很详细 https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html

这里参考官网的教程简要描述一下过程,并附上自己编译 OpenCV cmake 配置命令

1. 各种依赖项的安装,保险起见可以全装

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

2. Git clone 或者直接下载 OpenCV 的源码

(OpenCV2的版本只要下 OpenCV2 的主文件就可以,OpenCV3 有些模块被分割到了opencv_contrib,这个额外的模块包含了 SIFT 等函数。如果你要安装 OpenCV3 以上的版本最好也下载 opencv_contrib 并一起编译,这样你可以得到一个完整的 OpenCV 库)

cd ~/<my_working_directory>
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

创建 build 文件夹

cd ~/opencv
mkdir build
cd build

3. 配置 cmake,我的 cmake 配置命令

Build with Python 3.5

cmake -D CMAKE_BUILD_TYPE=Release -D INSTALL_C_EXAMPLES=OFF -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/GitPackages/opencv-python/opencv_contrib/modules -D BUILD_EXAMPLES=OFF -D BUILD_opencv_python2=OFF PYTHON3_EXECUTABLE = /usr/bin/python3 PYTHON_INCLUDE_DIR = /usr/include/python3.5 PYTHON_INCLUDE_DIR2 = /usr/include/x86_64-linux-gnu/python3.5m PYTHON_LIBRARY = /usr/lib/x86_64-linux-gnu-python3/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS = /usr/local/lib/python3.5/dist-packages/numpy/core/include/ ..

Build with Python 2.7:

cmake -D CMAKE_BUILD_TYPE=Release -D INSTALL_C_EXAMPLES=OFF -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/Packages/opencv_contrib-3.4.1/modules -D BUILD_EXAMPLES=OFF PYTHON2_EXECUTABLE = /usr/bin/python2 PYTHON_INCLUDE_DIR = /usr/include/python2.7 PYTHON_INCLUDE_DIR2 = /usr/include/x86_64-linux-gnu/python2.7 PYTHON_LIBRARY = /usr/lib/x86_64-linux-gnu/libpython2.7.so PYTHON2_NUMPY_INCLUDE_DIRS = /usr/local/lib/python2.7/dist-packages/numpy/core/include ..

4. 最后编译

sudo make –j8
sudo make install

Caffe 安装

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

2. 下载并修改其配置文件

git clone https://github.com/BVLC/caffe.git
cd <path-to-caffe>/caffe
sudo cp Makefile.config.example Makefile.config
sudo gedit Makefile.config #打开Makefile.config文件

取消下面几项的注释

# USE_CUDNN := 1

# OPENCV_VERSION := 3

# WITH_PYTHON_LAYER := 1

# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include(如果numpy安装的路径和文件中默认的不同)

因为安装的是 CUDA 9.0,需要注释下面两行

CUDA_ARCH := # -gencode arch=compute_20,code=sm_20 \

# -gencode arch=compute_20,code=sm_21 \

# Whatever else you find you need goes here. 下面的

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-linux-gnu/hdf5/serial

 

3. 最后编译

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

4. 编译 Python Caffe (PyCaffe)

caffe 根目录的 python 文件夹下的 requirements.txt 列出了需要安装的依赖库

caffe/python 目录下,执行命令

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

如果有项目没有安装成功

cd ..
sudo pip install -r python/requirements.txt

就会看到,安装成功的,都会显示 Requirement already satisfied;没有安装成功的,会继续安装,然后编译

make pycaffe -j8

配置环境变量

sudo gedit ~/etc/profile

export PYTHONPATH=<path-to-caffe>/caffe/python:$PYTHONPATH 添加到文件中

source /etc/profile

 

参考

[1] https://www.cnblogs.com/go-better/p/7161006.html 该博文步骤简洁,内容清晰,很值得参考

 

posted @ 2018-05-24 23:46  ToBeDeveloper  阅读(740)  评论(0编辑  收藏  举报