Ubuntu16.04 安装配置 Caffe 过程 (GPU版+CUDA 9.0+cuDNN 7.0+OpenCV 3.4.1)
虽然 Caffe 的官网已经有比较详细的针对 Ubuntu 的安装教程,但是要配置可以使用 GPU 的 Caffe 需要的依赖太多,包括 CUDA,cuDNN,OpenCV 等。参考了网上的很多教程,但在自己的配置中依旧出现了各种各样的意想不到的坑,所以在此记录一下自己配置 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 该博文步骤简洁,内容清晰,很值得参考