本文是搭建用caffe来进行深度学习的所需的环境配置方法的介绍;具体配置内容如标题。在安装之前希望读者先阅读一遍事先将需要下载安装的东西提前都下载好,对于matlab的版本可以根据个人需求自行修改。caffe的环境配置网上有很多的教程,该篇文章是本人根据网上的一些教程和自己的一些经验作出的一些总结:
一、显卡驱动的安装;
方法一:
1、查看显卡型号:
·lspci | grep VGA
根据自己的显卡型号进入再进入nvidia官网(http://www.geforce.cn/drivers)搜索对应的驱动版本并下载,本人的是GT 705。
2. 禁止集成的nouveau驱动
Ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,我们需要先将其屏蔽才能安装NVIDIA官方驱动。
将驱动添加到黑名单blacklist.conf中,但是由于该文件的属性不允许修改。所以需要先修改文件属性。
查看属性
·sudo ls -lh /etc/modprobe.d/blacklist.conf
修改属性
·sudo chmod 666 /etc/modprobe.d/blacklist.conf
用gedit编辑器打开
·sudo gedit /etc/modprobe.d/blacklist.conf
在该文件后添加一下几行:
·blacklist vga16fb
·blacklist nouveau
·blacklist rivafb
·blacklist rivatv
·blacklist nvidiafb
3、开始安装
·sudo apt-get purge nvidia-*
·sudo add-apt-repository ppa:graphics-drivers/ppa
·sudo apt-get update
·sudo apt-get install nvidia-370
·sudo reboot
重启后执行:
·nvidia-smi
出现以下界面:
这样就代表你的驱动已经安装成功了。
方法二(建议):
16.04可以自动安装驱动,在System Settings..中进行安装,如图:
二、安装cuda 8.0
1、cuda 8.0下载
现在的cuda 9.0都已进出来了,官网(https://developer.nvidia.com/cuda-downloads)的下载已经默认下载9.0版本找不到8.0版的了;我自己把cuda 8.0存到了我的百度云中,需要的可以去我的百度云下载:
链接:http://pan.baidu.com/s/1kU7DfAv 密码:bhae
2、开始安装
(1).进入目录:
·cd Downloads
我存放在Downloads,根据自己的路径修改就好;
(2).进行MD5检验,确保安装包正常:
·sudo md5sum cuda_8.0.44_linux.run
(3).结果:
(4).检验正确后,输入如下代码安装(第一行修改文件权限,第二行执行文件安装):
·chmod 777 cuda_8.0.44_linux.run
·sudo ./cuda_8.0.44_linux.run --override
需要一直按住ENTER键。
后面选项答案依次为:
accept
n (这里一定要选no,不然之前的驱动就白装了)
y
/usr/local/cuda_8.0.44_linux.runy
y
/home/y-j-z
三、安装cuDNN
1、cuDNN下载我的百度云链接:
链接:http://pan.baidu.com/s/1eSneKxG密码:0qdy
2、开始安装
下载完放在Downloads并解压,解压后有个cuda文件,内有include和lib64两个文件夹,进入
include文件夹,执行如下命令复制头文件:
·cd Downloads/cuda/include/
·sudo cp cudnn.h /usr/local/cuda/include/
再cd命令切换进lib64文件夹,执行如下命令复制动态链接库:
·cd ../lib64/
·sudo cp lib* /usr/local/cuda/lib64/
然后进入复制后的动态链接库进行新的链接。先进入目录:
·cd /usr/local/cuda/lib64/
然后查看已有链接:
·ls -al | grep libcudnn
删除原有动态文件:
·sudo rm -rf libcudnn.so libcudnn.so.5
再次查看:
·ls -al | grep libcudnn
已删除,现在建立新的链接:
·sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
·sudo ln -s libcudnn.so.5 libcudnn.so
再次查看
·ls -al | grep libcudnn
已链接好!
然后设置环境变量和动态链接库:
·sudo gedit /etc/profile
然后再打开的文件末尾加上(“=”前后不要有空格)
·export PATH=/usr/local/cuda/bin:$PATH
·export PATH=/usr/local/cuda-8.0/bin:$PATH
·export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
保存之后创建链接文件:
·sudo vim /etc/ld.so.conf.d/cuda.conf
注:若是此处报错说明你的电脑vim没有配置,安装及配置过程见链
接:http://jingyan.baidu.com/article/046a7b3efd165bf9c27fa915.html
安装完vim后再执行
·sudo vim /etc/ld.so.conf.d/cuda.conf
现在可以打开了。在文件加入以下内容:
·/usr/local/cuda/lib64
按下esc,按下wq保存后退出。并在终端输入以下命令使该链接生效:
·sudo ldconfig
3、使用sample里面的例子来测试还需要编译。
(这里若是因为gcc版本问题而报错,那是因为当前的cuda还不支持gcc5.0以上的版本,在编译之前,我们需要修改配置文件,否则无法编译成功。(之前试过降低gcc版本,搞了很久没成功,这样改会有warning,但是还是先这样吧。)
·cd /usr/local/cuda-8.0/include/
·sudo cp host_config.h host_config.h.bak
·sudo gedit host_config.h
113行如下:
#if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3)
说明GCC版本要在5.3以下。查看自己的gcc版本:
·gcc --version
所以这句话需要改,于是我把3直接改成9:
#if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 9)
保存后退出。 )这是我在网上找到的修改方法,我的不知道原因,好像是兼容的,直接可以进行编译不用作出修改。
然后进入用例文件进行编译(注意执行第二步命令时候需要较长时间是正常现象):
·cd ~/NVIDIA_CUDA-8.0_Samples/
·sudo make -j16
编译成功。
·cd bin/x86_64/linux/release/
·sudo ./deviceQuery
运行结果:
说明显卡驱动和cuda安装成功。
四、BLAS(Openblas)安装
Caffe支持三种AtLas,分别是MKL,AtLas,OpenBlas。
MKL是有限制公开的,AtLas、OpenBlas是完全免费的,可以直接通过apt-get安装。由于
OpenBlas的效率接近MKL,比AtLas的效率高很多,且没有MKL的安装限制,故我使用
OpenBlas安装。安装命令如下:
·sudo apt-get install libopenblas-dev
注意:安装OpenBlas后,为使其生效,需要在Caffe安装结束后修改Caffe的Makefiel.config文件中BLAS的选项BLAS:=open。
五、OpenCV3.1.0安装与配置
1、OpenCV3.1.0下载:
链接:http://pan.baidu.com/s/1o8iKMoy密码:vcy2
将下载好的压缩包放在Downloads中,并在此处解压,然后在命令端进入该路径:
·cd Downloads/opencv-3.1.0
·mkdir build
·cd build
2、安装一些依赖项:
·sudo apt-get update
·sudo apt-get install build-essential
·sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
·sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
·cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
在配置过程会出现– ICV: Downloading ippicv_linux_20151201.tgz…错误。可以直接百度
ippicv_linux_20151201.tgz 下载。
将下载的文件替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-
8b449a536a2157bcad08a2b9f266828b下的同名文件,同时在opencv-3.1.0目录下的
CMakeList.txt 文件的开头加入一行,然后再次cmake即可。
在CMakeLists.txt 中加入一行:
·cd ../
·vim CMakeLists.txt
在弹出的文件开头加入一行(注意里面的引号要英文状态下的):
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")
按i进入后添加,然后按esc和:wq保存退出。
3、编译安装:
·cd build/
·cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
·make -j16
若到这一步遇到了问题:
输入:
·vim ../modules/cudalegacy/src/graphcuts.cpp
将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
保存后退出。
再次make -j16发现编译成功。
·sudo make install
六、Python安装与配置
1、选择的是anaconda linux64 2.7版本python2.7。下载完成之后,最好也要进行md5sum的检
验。完成之后,cd进入下载文件所在的目录,在命令行输入:
·cd ~/Downloads/
·bash Anaconda2-4.1.1-Linux-x86_64.sh
yes
(ENTER)
yes
这一选项把PATH=/home/huhui/anaconda2/bin加到了环境变量中。添加库:
·sudo gedit ~/.bashrc
添加
Export LD_LIBRARY_PATH=/home/huhui/anaconda2/lib:$LD_LIBRARY_PATH
重启电脑之后,在命令行输入:
·ipython
就可以看到python的版本。
2、使用系统自带的Python(建议使用),输入命令:
·sudo apt-get install python
七、matlab的安装与配置
下载matlab安装包及crack文件。
具体的安装过程见我的另外一片博客:http://blog.csdn.net/qq_37760750/article/details
/77586744
若是想要配置MATLAB2016b,其配置过程可能和我的教程有些出差,可以另行参考这篇博客(建议按照为2014a的安装教程来安装,该博客中有很多的坑的,按照我2014a教程安装只需要更改一些名称,质至于激活文件和密匙以及需要复制的四个文件(2014a里只需一个)按照这篇博客指引找到即可):
http://blog.csdn.net/dr_destiny/article/details/53336324
注:若实现挂载后进行install开始安装2016b时出现该install文件只有只读(OnlyRead)问题而无法安装时,可执行一下命令:
·sudo chown usename -R ~/MATLAB(usename为你计算机的名字,~/MATLAB为你挂载镜像文件的路径请自行根据自己情况修改)
·~/MATLAB/install(该文挂载镜像文件里install的路径,最好使用完整的路径,不要用~/这种省略的形式,开始安装matlab)
八、caffe的安装和配置
1、安装各种依赖包
·sudo apt-get update
·sudo apt-get upgrade
·sudo apt-get install -y build-essential cmake git pkg-config
·sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
·sudo apt-get install -y libatlas-base-dev
·sudo apt-get install -y --no-install-recommends libboost-all-dev
·sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
·sudo apt-get install -y python-pip
·sudo apt-get install -y python-dev
·sudo apt-get install -y python-numpy python-scipy
·sudo apt-get install -y libopencv-dev
2、下载caffe:
·cd ~
·git clone https://github.com/BVLC/caffe.git //从github上git caffe
3、安装配置caffe:
·cd caffe
·cp Makefile.config.example Makefile.config
·sudo gedit Makefile.config
3.1 配置文件Makefike.config修改(看英文提示根据具体修改):
1.应用 cudnn
USE_CUDNN := 1 #取消注释符号#
2.应用 opencv 版本
OPENCV_VERSION := 3 #取消注释符号#
3.BLAS库应用OpenBlas
BLAS := open #取消注释符号#
4.使用 python 接口
WITH_PYTHON_LAYER := 1 #取消注释符号#,使用python接口
5.修改 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-linux-gnu/hdf5/serial
3.2 注释第68行自带的python ,然后修改以下内容:(注意,若是使用anaconda2可以遵循这步,否则跳过)
ANACONDA_HOME := /home/huhui/anaconda2 #将具体anaconda2路径写入
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7\
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
#PYTHON_INCLUDE之前的注释#去掉,以及之后两行前的#也去掉
·PYTHON_LIB := $(ANACONDA_HOME)/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.3 为了之后编译matlab,这里提前在配置文件中修改matlab路劲,改完后保存退出:
·MATLAB_DIR := /usr/local/MATLAB/R2014b(根据自己安装的版本设置)
3.4 修改caffe下的Makefile文件:
(1) 打开makefile文件搜索并替换
·sudo gedit Makefile
·NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
为
·NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
(2) 将:
·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
(3)然后修改 /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!
(4)在命令行输入:
·source ~/.bashrc #编译立即生效
3.5 为hdf5之类的文件创建新的链接
首先执行下面两句话:
·cd /usr/lib/x86_64-linux-gnu/
·sudo find . -type f -exec sed -i -e 's^"hdf5/serial/hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5/serial/hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \;
执行
·ls -al | grep libhdf
然后根据情况执行下面两句:
·sudo ln -s libhdf5_serial.so.10.1.0 libhdf5_.so
·sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
注意:这里的10.1.0和10.0.2根据不同的系统可能对应的数字会不同,比如在ubuntu16.04中其数字就是10.1.0. 具体的数字可以在输入命令时候使用tab键补全查看。
3.6 然后进入caffe目录:
·make all -j16
3.7 若报错:
添加环境变量即可:
·sudo gedit ~/.bashrc
·export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
·source ~/.bashrc
出现错误的原因是执行convert_cifar_data.bin时会链接/usr/local/lib
/libopencv_imgcodecs.so,而这个库需要调到TIFFxx的函数,所以需要找到这些函数在哪个库里。然后执行
·find / -name "*libtiff*"
发现libtiff.so在/usr/lib/x86_64-linux-gnu目录下。然后查看环境变量
·echo $LD_LIBRARY_PATH
发现没有该目录。于是添加进环境变量:
·sudo gedit ~/.bashrc
·export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
·source ~/.bashrc
即可编译成功。
·make all -j16
·make test
·make runtest
4、Caffe Python接口
a.安装依赖库:
·sudo apt-get install python-pip
·sudo apt-get install python-dev python-numpy
·sudo apt-get install gfortran
·sudo pip install –r python/requirements.txt
·sudo pip install pydot numpy scipy matplotlib sklearn scikit-image h5py protobuf leveldb networkx nose pandas gflags Cython ipython gfortran
安装依赖库时可能会报 Cython的错误,若是报了该错,那就直接把命令中的Cython删除再运行,可能是Cython需要pip指令来安装。以后遇到再安装一下就好。
b.依赖库编译:
·cd caffe
·make pycaffe
c. 添加PYTHONPATH:
·sudo gedit ~/.bashrc
#末尾添加:export PYTHONPATH=/home/name/caffe/python:$PYTHONPATH
#使用完整路径,name为你自己电脑的名称
·source ~/.bashrc
d.测试:
·python
>>>import caffe
>>>
“import caffe”命令若是没有报错,则表明整个编译和安装成功。
e.若python下import caffe报这个错误:
ImportError: No module named google.protobuf.internal
原因是之前一步 pip install -r requirement.txt不成功,原因是数据源拉不到东西,只得自己亲手安装了。
首先现在protobuf
下载protobuf-2.5.0:
http://protobuf.googlecode.com/files/protobuf-2.5.0.zip
接下来就是安装了:
·unzip protobuf-2.5.0
·cd protobuf-2.5.0
·chmod 777 configure
·./configure
·make -j16
·make check -j16
·sudo make install
接下来编译python接口
·cd ./python
·python setup.py build
·python setup.py test
·sudo python setup.py install
在python 下使用
>>import google.protobuf
没有报错,那就是能用了。
f.若报错:
from google.protobuf import symbol_database as _symbol_database
ImportError: cannot import name symbol_database
解决方法:
·sudo pip install --upgrade protobuf
5、编译matlab接口:
·make matcaffe
·make mattest
若报错:
(参考http://itbilu.com/linux/management/NymXRUieg.html)源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version`GLIBCXX_3.4.21’ not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
将/usr/local/MATLAB/R2014b/sys/os/glnxa64下的libstdc++.so.6更改名称为libstd++.so.6_back:
·cd /usr/local/MATLAB/R2014b/sys/os/glnxa64/
·sudo mv libstdc++.so.6 libstdc++.so.6_back
·sudo ldconfig
注意:记得需要在Caffe安装结束后修改Caffe的Makefiel.config文件中BLAS的选项BLAS:=open。
参考博客:http://blog.csdn.net/hh930413/article/details/52774997