Ubuntu16.04 Caffe安装笔记

前言:

大概半年前吧,由于学习需要,本人需要在Ubuntu上使用caffe,当时对于Linux,caffe一窍不通,配置安装caffe就失败好多次,光系统重装不下十多次。为什么会这样呢,根本原因是我对这个东西不懂,但是还有一个间接原因就是网上的关于安装配置caffe的博文有好多都是胡说八道,东抄西抄,我曾经看到好几篇博客错得一模一样。不给社区做贡献也就算了,还误人子弟!!!
所以我就将自己的配置过程详细记录下来,一是为了以后自己再次配置方便查阅。二是希望其他人不要走我的弯路。

一、安装nvidia驱动

如果要用NVIDIA的显卡做GPU加速,必然要安装人家显卡的驱动。安装显卡驱动有两种方法,一种是用apt-get,一种是用官方的驱动安装包。

apt-get安装方法
  • 执行如下语句,安装显卡驱动:
sudo apt-get install nvidia-367
  • 执行完上述后,重启(reboot)。重启后在终端输入如下命令,如果出现了你的GPU列表,则说明驱动安装成功了
nvidia-smi

这里写图片描述

  • 另外也可以通过如下这个命令查看自己机器上详细的GPU信息
nvidia-settings

这里写图片描述

用apt-get安装唯一的缺点应该就是显卡驱动版本较低,但是几乎不会影响以后的操作,但本人在用apt-get安装显卡驱动时发生一件匪夷所思的事情,就是我打的是安装nvidia-367,但最终安装好的居然是375.39版本,这个版本可是非常新了,这事情碰到两次。但由于说真的驱动版本不会影响后续操作,我也就没这么去深究。

官方安装包安装
  • 首先当然是去NVIDIA官网(点此跳转)(http://www.nvidia.cn/Download/index.aspx?lang=cn)去下载与自己显卡配套的驱动。如图是本人电脑显卡的信息,注意如果是笔记本电脑,产品系列中要去选有Notebooks后缀的选项。
    这里写图片描述

  • 将下载好的安装文件复制到Ubuntu的本地目录。按Ctrl + Alt + F1组合键切换到控制台,输入用户名和密码登录系统。而后输入如下命令来关闭图形会话。

sudo service lightdm stop
  • 而后用cd命令跳转到安装包所在路径,运行驱动安装包(文件名以自己下载的为准):
sudo sh NVIDIA-Linux-*-334.21.run
  • 而后就是傻瓜式安装,一路yes,碰到warning忽略……完成安装后sudo service lightdm start 或者直接sudo reboot重新启动。
  • 最后用nvidia-smi或者nvidia-settings来查看是否安装成功

二、安装CUDA

cuda是nvidia的编程语言平台,先去官网下载cuda的安装文件(点此跳转

  • 注册登录后选择自己要下载的版本,注意这里下载的是cuda8.0的runfile(local)文件。
    这里写图片描述
  • 下载完cuda8.0后cd到runfile文件所在目录,执行如下语句,运行runfile文件:
sudo apt-get install libxi-dev libxmu-dev
sudo sh cuda_8.0.61_375.26_linux.run
  • 以后的选择都是接受,yes,回车直接默认等,但有一个例外,就是让你选择是否安装nvidia驱动时,一定要选择否,因为前面我们已经安装了过了,所以这里不要选择安装。
    我的安装日志如下所示:(下面有Missing recommended library: libXi.so
    Missing recommended library: libXmu.so所以,在安装之前先安装好libXi和libXmu sudo apt-get install libxi-dev libxmu-dev)
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26?
(y)es/(n)o/(q)uit: n
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
 [ default is /usr/local/cuda-8.0 ]: 
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y
Enter CUDA Samples Location
 [ default is /home/yangyuan ]: 
Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...

Missing recommended library: libXi.so
Missing recommended library: libXmu.so

Installing the CUDA Samples in /home/yangyuan ...
Copying samples to /home/yangyuan/NVIDIA_CUDA-8.0_Samples now...
Finished copying samples.

===========
= Summary =
===========
Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-8.0
Samples:  Installed in /home/yangyuan, but missing recommended libraries

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 <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

Logfile is /tmp/cuda_install_2421.log
  • 配置cuda8.0之后主要加上的一个环境变量声明,在文件~/.bashrc之后加上
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}}
  • 然后设置环境变量和动态链接库,在命令行输入
sudo gedit /etc/profile
  • 在打开的文件里面加上(注意等号两边不能有空格)
export PATH=/usr/local/cuda/bin:$PATH
  • 保存之后,创建链接文件
sudo gedit /etc/ld.so.conf.d/cuda.conf
  • 在打开的文件中添加如下语句:
/usr/local/cuda/lib64
  • 保存退出执行如下命令,使链接立即生效。
sudo ldconfig
  • 安装完成后在终端输入nvcc -V(V是大写)来查看cuda是否安装成功,如果输出cuda的版本信息,就没问题了。如果说没有安装好,重启再查看。

-还有一个测试办法,通过运行cuda的samples来测试(对应地址以自己电脑上的为准)返回GPU的信息则表示配置成功。

cd ~/NVIDIA_CUDA-8.0_Samples/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery

注意ubuntu的gcc编译器是5.4.0,cuda8.0是支持5.0以上的编译器,所以并不需要降级,如果要用runfile文件安装cuda7.5,就需要将gcc和g++降级到5以下版本,但我是觉得要是不用最新的cuda8.0,那完全可以通过apt-get来安装cuda呀:

sudo apt-get install nvidia-cuda-toolkit

总之Ubuntu的apt-get安装库是非常的方便快捷,但唯一的缺点就是一般都是较老的版本。

三、使用cudnn

  • 首先上官网下载对应的cudnn,https://developer.nvidia.com/cudnn
    下载完cudnn后,解压,会解压成一个cuda的文件夹,cd进入其中的include目录,在命令行进行如下操作:
sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件

再cd进入lib64目录下的动态文件进行复制和链接:

sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6 #生成软衔接
sudo ln -s libcudnn.so.6 libcudnn.so #生成软链接

(通过ls命令来查看libcudnn.so的具体版本号,如下图libcudnn.so的具体版本号为5.1.10,个人根据自己的情况做对应修改)

这里写图片描述

四、安装opencv

如果仅仅是为了配置安装caffe来安装opencv,本人建议直接用apt-get来安装,因为caffe里面用到的opencv模块非常有限,仅限于图片的读写,缩放等。

sudo apt install libopencv-dev python-opencv

关于opencv最新版的配置安装详见我的另外一篇博文《Ubuntu16.04 OpenCV安装笔记》

五、安装caffe

  • 安装caffe之前先安装它所依赖的各种库(注意:该段代码最好多运行几遍,因为有的库只运行一遍可能会没安装成功)
sudo add-apt-repository universe
sudo apt-get update -y
sudo apt-get install -y build-essential cmake git pkg-config
# General Dependencies
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler -y
sudo apt-get install --no-install-recommends libboost-all-dev -y
# BLAS
sudo apt-get install libatlas-base-dev -y
# Remaining Dependencies
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev -y
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy python-setuptools python-pip cython python-skimage python-protobuf
  • 编译 Caffe,cd到要安装caffe的位置(最好就直接在家目录cd ~),来用命令下载caffe文件包
git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config
  • 修改Makefile.config:
gedit Makefile.config
  • 对打开的文件编辑
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1

(当显卡CUDA Capability低于3.0时,cudnn加速时不支持的,比如我的笔记本电脑显卡为GeForce 610,其CUDA Capability为2.1(该指标可在此网站查看https://developer.nvidia.com/cuda-gpus),当然不支持cudnn加速,刚开始不知道直接导致后面make runtest的后部分出错,mnist报错:caffe make runtest error(core dumped)Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0))

# Uncomment if you're using OpenCV 3 如果用的是opencv3版本
OPENCV_VERSION := 3

# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1

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的位置,所以需要更改这一路径(如果不改,会直接导致后面make的时候出错,报错:/usr/bin/ld: cannot find -lhd5和/usr/bin/ld: cannot find -lhd5_hl)。

  • 终端上打开python查看numpy所在的地址:
    这里写图片描述

    看看Makefile.config中PYTHON_INCLUDE下的地址和它对的上不,不对的话改了,例如:我的上图显示是/usr/local/lib……,所以把:
PYTHON_INCLUDE := /usr/include/python2.7 \
        /usr/lib/python2.7/dist-packages/numpy/core/include

改成

PYTHON_INCLUDE := /usr/include/python2.7 \
        /usr/local/lib/python2.7/dist-packages/numpy/core/include
  • 打开makefile文件
gedit 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,将其中的第115行注释掉:

sudo gedit /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!
  • 之后编译即可
make -j8 all
sudo make -j8 runtest  

(此处要用管理员权限sudo才可以完全成功运行)

  • 如果运行之后出现下图,说明caffe配置成功。

    这里写图片描述

  • 而后开始编译caffe的Python接口pycaffe :

make pycaffe
cd python
python
>>>import caffe #测试安装成功

(添加环境变量
gedit ~/.bashrc
将export PYTHONPATH=/home/用户名/caffe/python:$PYTHONPATH添加到文件中。
source ~/.bashrc 使更改生效。
这样,在其他地方打开python,也可以import caffe了。否则你编写一个Python文件不在/home/用户名/caffe/python里面的话import caffe会报错,说找不到该模块)

六、MNIST数据集训练测试

到这里Caffe开发环境就配置好了!我们可以利用MNIST数据集对caffe进行测试,过程如下:

  • 将终端定位到Caffe根目录
cd ~/caffe
  • 下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh
  • 将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh
  • 训练网络
sudo ./examples/mnist/train_lenet.sh

训练的时候可以看到损失与精度数值,如下图:

这里写图片描述

可以看到最终训练精度是0.9914。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值