平常较少接触linux系统,因项目需要使用linux下的caffe。为了这一次安装探索了两天,踩了无数的坑,参考了网上很多教程,发现百度里的答案不是内容有错误,就是描述的问题和自己无关。在此把自己的安装过程分享给大家,可能并不适用于每一个人,可以此参考。
整个安装流程的概括:
1、NVIDIA显卡驱动
2、cuda安装(GPU加速使用)
3、cuDNN配置(深度神经网络的加速计算库)
4、opencv安装
5、caffe安装
6、mnist数据集测试
一、安装NVIDIA显卡驱动
从官网 http://www.nvidia.com/Download/index.aspx?lang=en-us找到适合自己系统版本的驱动并下载,推荐下载.run格式的。下载好的安装文件放置于/home下即可(注意:不要放到中文目录下,因为之后要使用文本模式操作,中文目录无法读取)。本人下载的驱动是NVIDIA-Linux-x86_64-384.90.run。
输入命令行:
sudo gedit /etc/modprobe.d/blacklist.conf
在最后一行加上 blacklist nouveau ,该操作是为了屏蔽系统自带的显卡驱动
在终端输入:
sudo update-initramfs -u
重启电脑,进入控制台
首先输入账户和密码(注意要先输账户)
输入
sudo init 3 (注意每一步操作都要输密码)
sudo rm -r /tmp/.X*
sudo service lightdm stop
sudo sh NVIDIA-Linux-x86_64-384.90.run
按提示操作完成后重启电脑,输入命令 sudo nvidia-smi 可查看GPU信息
二、安装cuda
去官网 https://developer.nvidia.com/cuda-downloads 下载适合的cuda,本人下载的是cuda_8.0.61_375.26_linux.run。
输入
sudo ./cuda_8.0.61_375.26_linux.run
之后经过一长段说明后会跳出一些选项,注意看到Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?时一定要选否
输入
sudo gedit ~/.bashrc
将以下内容写到最后
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
测试cuda的sample
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery
可看到相关信息
三、配置cuDNN
去官网 https://developer.nvidia.com/rdp/cudnn-download 下载相关文件,并解压
进入cuDNN5.1解压之后的include目录,输入:
cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include
链接动态文件,输入
cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/
sudo chmod a+r/usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 (注意自己下载的版本,不一定一致)
sudo ln -s libcudnn.so.5 libcudnn.so
四、安装opencv
下载opencv安装压缩包,并解压到/home/opencv
安装前准备,创建编译文件夹:
cd ~/opencv
mkdir build
cd build
使用cmake编译,若没有要事先安装
sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make
sudo make install
提示:在安装cmake阶段,会出现错误,提示找不到ippicv,是因为其下载速度太慢,我们要事先将它下载好(网上搜),放到/opencv/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e文件夹下
安装完成后,可用 pkg-config --modversion opencv 查看已安装的opencv版本
五、安装caffe
从github上下载caffe源码并解压
进行内容复制,输入
sudo cp Makefile.config.example Makefile.config
修改配置文件,输入
sudo gedit Makefile.config
a.若使用cudnn,则
将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
b.若使用的opencv版本是3的,则
将
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
c.若要使用python来编写layer,则
将
#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1
将 # 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/local/cuda-8.0/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/local/cuda-8.0/lib64 /usr/lib/x86_64-linux-gnu/hdf5/serial
编辑/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!
安装caffe所需的各种依赖库,会用到包括如下
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install build-essential -y
sudo apt-get install -y pkg-config automake autoconf
sudo apt-get install libprotobuf-dev libleveldb-dev -y
sudo apt-get install libsnappy-dev libhdf5-serial-dev protobuf-compiler -y
sudo apt-get install libatlas-base-dev -y
sudo apt-get install --no-install-recommends libboost-all-dev -y
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev -y
sudo apt-get install libopencv-dev -y
sudo apt-get install python-pip python-dev -y
sudo apt-get install -y python-numpy python-scipy
进入caffe目录,开始编译caffe
cd ~/caffe
sudo make all -j4
期间可能会出现很多error,基本上分为两种,一种是缺少相应依赖库,则安装所缺少的相应库,二是路径不对,查看上步所说Makefile.config的路径是否添加
个人遇到的问题举例:缺少google/protobuf/stubs/common.h 安装 sudo apt-get install libprotobuf-dev
出现找不到lhdf5_hl和lhdf5的错误,
在计算机中搜索libhdf5_serial.so.10.1.0,找到后右键点击打开项目位置
该目录下空白处右键点击在终端打开,打开新终端输入
sudo ln libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
最后在终端输入sudo ldconfig使链接生效
解决完错误后,再次编译前首先 sudo make clean 删除上次不完整编译残留的文件
继续sudo make all -j4 编译
成功后使用
sudo make test -j4
sudo make runtest -j4
看到如下图时,则大功告成了。
六、mnist数据集测试
下载mnist数据集
cd ~/caffe/data/mnist
sudo sh ./get_mnist.sh
在该目录下将有相应图片和标签文件
mnist数据格式转换
cd ~/caffe
sudo sh ./example/mnist/create_mnist.sh
训练mnist
cd ~/caffe
sudo sh ./example/mnist/train_lenet.sh
看到如下结果,则测试成功