折腾了将近一周时间,caffe终于安装成功。中间遇到很多坑,系统也重装好几次,一步步终于把caffe环境搭建成功了。
首先安装各种软件和库、更新包:
两个里面有重复的
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 --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 cmake git
sudo apt-get install build-essential
sudo apt-get install -y libopencv-dev
sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev # 处理图像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
sudo apt-get install ffmpeg
##一、说明##
系统环境是Ubuntu16.04_x64
##二、安装显卡驱动
**1、**在NVIDIA 官网根据条件选择下载最新的驱动即可 http://www.geforce.cn/drivers
驱动下载完成后最好使用将驱动复制到Home目录下,方便后面的操作
终端进入驱动所在的路径(也可以手动复制)
sudo cp NVIDIA-Linux-x86_64-384.69.run /路径名/复制后的名字 #
(将驱动复制到路径/home/下,并且重新命名为a.run,重新命名是方便在非图形化界面安装时的命令输入)
2、禁用自带的 nouveau nvidia驱动 (important!)
参考链接 http://blog.csdn.net/u012581999/article/details/52433609
sudo apt-get purge nvidia* //卸载原有的nvidia驱动,新系统不需要
创建一个文件通过命令
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
并添加如下内容:
blacklist nouveau
options nouveau modeset=0
或者
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
用下面命令,更新一下文件
sudo update-initramfs -u
修改后需要重启系统。确认下Nouveau是已经被你干掉,
使用命令:lsmod | grep nouveau
如果nouveau禁用成功该命令执行后没有显示,否则该命令后会显示nouveau 的相关信息(可以禁用之前用该命令查看nouveau的相关信息)。
3.开始安装
先按Ctrl + Alt + F1到控制台,首先输入用户名和密码登录,然后关闭当前图形环境,通过下面的命令。
sudo service lightdm stop
查看显卡驱动的全名(如果显卡驱动名字很长,没记住的话)
cd 目录名 //进入到显卡驱动所在目录
ls //列出/home下的所有文件和文件夹
再安装驱动程序
sudo sh NVIDIA-Linux-x86_64-xxx.run //sh--是显示安装过程
然后根据提示完成驱动安装。
安装完成后,重新启动图形环境
sudo service lightdm start
重启系统后,执行下面的命令查看驱动的安装状态
nvidia-smi
nvidia-settings
或者下面的命令查看显卡驱动
cat /proc/driver/nvidia/version
4、有可能出现的问题
(1) 、Ubuntu 系统循环登录问题,可能原因是驱动安装失败。
解决办法:重新进入到控制台界面,关闭图形显示后卸载刚才安装的驱动程序
命令:
sudo sh NVIDIA-Linux-x86_64-xxx.run --uninstall
(2) 、显卡驱动安装成功,各个测试命令都没问题,但是,Ubuntu显示不正常。
原因是显卡使用了转接头(自己因为这个问题折腾了两天(我是显卡用DVI转VGA后连接的显示器)),显卡驱动反复重装,通过命令显示安装成功,但是就是显示有问题!!!这是坑啊),连接显示器的视频线用直连线就可以。
##三、配置安装cuda8.0##
在英伟达官网 https://developer.nvidia.com/cuda-downloads ,根据自己的机器下载最新版的cuda,如下图
**CUDA历史版本下载地址:**https://developer.nvidia.com/cuda-toolkit-archive
注意这里下载的是cuda8.0的runfile(local)文件。
这里是nvidia给出的官方安装指南(遇到问题时可以查阅):
http://docs.nvidia.com/cuda/cuda-installation-guide-linux/#axzz4HIBXnwyt
参考链接:
http://www.52nlp.cn/深度学习主机环境配置-ubuntu-16-04-nvidia-gtx-1080-cuda-8
1、gcc/g++版本
cuda8.0安装前要进行gcc版本降级,参考我写的另一篇文章,链接
http://blog.csdn.net/ytusdc/article/details/77980915
注意:我在安装过程中,没有进行降级,caffe环境配置成功,可能是最新版本的cuda能够支持高版本的gcc/g++
2、安装cuda8.0
(跟安装显卡驱动过程类似,把文件复制到/home 目录下)
1、在你的用户登录界面按ctrl+alt+F1进入tty模式
关闭图形界面
sudo service lightdm stop
cd切换到下载的文件目录下进行安装:
sudo sh cuda_8.0.44_linux.run
启动安装程序,一直按空格到最后
注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia驱动时,一定要选择否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
此处一定选择否
因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。
大概有以下选项
输入accept接受条款
输入n不安装nvidia图像驱动,之前已经安装过了
输入y安装cuda 8.0工具
回车确认cuda默认安装路径:/usr/local/cuda-8.0
输入y安装CUDA 8.0 Samples,以便后面测试
回车确认CUDA 8.0 Samples默认安装路径,该安装路径测试完可以删除
安装成功后会出现如下界面:
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-8.0
Samples: Installed in /home/textminer
Please make sure that
– PATH includes /usr/local/cuda-8.0/bin
– LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
To install the driver using this installer, run the following command, replacing with the name of this run file:
sudo .run -silent -driver
Logfile is /opt/temp//cuda_install_6583.log
3、cuda安装后配置
安装完毕后,再声明一下环境变量,并将其写入到 ~/.bashrc 的尾部:
CUDA安装后在/usr/local/目录下产生,cuda,cuda-8.0 两个文件夹,如下如所示
解释:
cuda ----是软链接,指向的是cuda-8.0,因此对cuda的操作实际上就是对cuda-8.0文件夹的操作,
下面的操作中的*/cuda-8.0/* 等操作其实可以换成 /cuda/
cuda-8.0 --是cuda实际安装的文件(认为本次按照的是cuda-8.0)
打开~/.bashrc文件
sudo gedit ~/.bashrc
将以下内容写入到~/.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}}
关闭文件,使环境变量生效
source ~/.bashrc
cuda 卸载
sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
此方法同样适用于其他版本的CUDA卸载
运行完成之后,使用下面的命令删除残余
sudo rm -r /usr/local/cuda-8.0
4、测试cuda的Samples
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make //该命令首次执行即可
sudo ./deviceQuery
执行完之后出现下图
如果显示的是一些关于GPU的信息,则说明安装成功了。
##四、安装cudnn-v6##
参考链接:http://www.h3399.cn/201705/86033.html
参考链接:http://blog.csdn.net/qq_25073253/article/details/72571714
下载cudnn相应版本.
下载地址:https://developer.nvidia.com/rdp/cudnn-download
cudnn历史版本: https://developer.nvidia.com/rdp/cudnn-archive
cd到下载的文件目录下,解压:
tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
解压后,在当前目录下产生一个cuda目录
cd cuda/include/
sudo cp cudnn.h /usr/local/cuda-8.0/include/ #复制头文件
cd ../lib64 #打开lib64目录
sudo cp lib* /usr/local/cuda-8.0/lib64/ #复制库文件
sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn* #给所有用户增加这些文件的读权限
建立软连接
在终端输入
cd /usr/local/cuda-8.0/lib64/ #进入到lib64目录进行操做
sudo rm -rf libcudnn.so libcudnn.so.6 #删除原有动态文件
sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6 #生成软衔接
sudo ln -s libcudnn.so.6 libcudnn.so #生成软链接
注意此处的 libcudnn.so.6.0.21、libcudnn.so.6 都是根据cudnn解压之后的文件定的,我用的是cudnn-8.0-linux-x64-v6 的所以此处是libcudnn.so.6.0.21、libcudnn.so.6
安装完成后可用 nvcc -V
命令验证是否安装成功,若出现以下信息则表示安装成功
查看cudnn版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
##五、安装opencv2.4.13#
opencv安装过程参考另一篇博客:
Ubuntu安装和完全卸载opencv:https://blog.csdn.net/ytusdc/article/details/89682028
##六、安装高级语言接口##
1、安装其他依赖项
安装各种更新包看文章开头
2、下载caffe源码
首先在你要安装的路径下(一般下载到Home下) clone :
cd #进入Home目录
git clone https://github.com/BVLC/caffe.git
3、修改配置文件 Makefile.config
进入 caffe 文件夹下,将 Makefile.config.example 文件复制一份并更名为 Makefile.config,也可以在 caffe 目录下直接调用以下命令完成复制操作 :
cd caffe //进入caffe目录
cp Makefile.config.example Makefile.config
复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而 Makefile.config.example 只是 caffe 给出的配置文件例子,不能用来编译 caffe。
然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:
gedit Makefile.config
修改 Makefile.config 文件内容:
(1) 、应用 cudnn
如果使用GPU的话,将#USE_CUDNN := 1修改成:
USE_CUDNN :=1
(2) 、应用 opencv 版本
如果使用的是opencv 3 的版本,将#OPENCV_VERSION := 3 修改为:
OPENCV_VERSION :=3
(3) 、使用 python 接口
将#WITH_PYTHON_LAYER := 1 修改为
WITH_PYTHON_LAYER :=1
(4) 、 修改 python 路径
//重要的一项将
#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
//这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径
更改使用的python版本路径:
下面的路径根据自己使用的python版本修改
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
注意:使用Anaconda(下面写的不全面,还需要修改)
使用Anaconda时,路径做一下修改,否则会出现一些问题
#Anaconda3是我安装anaconda的目录
# py36是自己新建的python环境名,所以使用py36的环境的话,如下
ANACONDA_HOME := $(HOME)/SoftWare/Anaconda3/envs/py36
#如果是Anaconda默认python环境,则可改成
ANACONDA_HOME := $(HOME)/SoftWare/Anaconda3
##以上两个路径根据自己的写就好。
#下面的三个路径确认一遍目录是否一样
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python3.6m \
$(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include
(5)、然后修改 caffe 目录下的 Makefile 文件:(Makefile本人没有配置)
//将
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
//替换
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
然后修改 /usr/local/cuda/include/host_config.h 文件 :(因为我的gcc没有降版本所以此处没有修改)
//将
#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!
(6)、pycaffe相关依赖库安装
然后进入caffe目录下的python文件夹,执行下面的命令:
for req in $(cat requirements.txt); do sudo pip install $req; done
这一步由于下载速度问题,经常出现连接超时现象,因此可以更换源看另一篇博客https://blog.csdn.net/ytusdc/article/details/89469161
for req in $(cat requirements.txt); do sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done
等待执行完毕可以编译caffe了
如果pip命令找不到,需要安装
sudo apt-get install python-pip
(7)、编译caffe
在 caffe 目录下执行 :
cd .. //此时位置应该处于caffe文件夹下
make all -j4 //j8代表计算机cpu有8个核,因此可以多线程一起make,这样make的速度会快很多。一般常用的还有j4
make test -j4
make runtest -j4 //如果此处不使用sudo编译不过,可能前面一些步骤安装命令用sudo,以后安装注意,sudo导致后面的脚本文件必须用root权限运行,很不方便调试
make pycaffe //如果以后用python来开发的话必须执行这一句,一般不管你是否用 python,都会执行这一句
make runtest -j4 //测试成功会如下图所示
如果编译过程出现错误,用下列命令清楚刚才的编译,然后解决问题后,重新进行编译
make clean
(8)、以上只是caffe安装编译成功,下一步测试python环境中使用caffe。
如果成功显示如下
>>> import caffe
>>>
下面显示的是python无法成功导入caffe
>>>import caffe
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named caffe
解决办法:
声明一下环境变量,并将其写入到 ~/.bashrc 的尾部:
打开~/.bashrc文件
sudo gedit ~/.bashrc
将以下内容写入到~/.bashrc尾部:
export PYTHONPATH=/home/vision/Project/caffe/python:$PYTHONPATH
/home/vision/Project/caffe/ 是caffe的主目录,根据实际安装位置修改
关闭文件,使环境变量生效
source ~/.bashrc
##错误集锦
可能遇到的错误,请移步http://blog.csdn.net/ytusdc/article/details/79229369