Ubuntu 16.04 + cuda8.0 + opencv3 + caffe的安装,tensorflow-gpu的安装

折腾了一天总算把caffe装好了,其实主要是编译库的问题,记录一些坑,跳过就好了。
另外吧,tensorflow-gpu的安装前面安装cuda和cudnn的几步一样,就不另开了吧。

  • cuda8.0 和 cudnn6.0的安装
  • tensorflow-gpu 的安装(乱入,可选)
  • opencv3.1 的安装
  • caffe的安装

  • 安装cuda8.0

不管是安装tensorflow还是caffe,要用到gpu还是先把cuda装好吧,推荐使用cuda8.0+cudnn6.0。其他新版本使用好像会报错。

window下的安装主要错误其实就是版本的问题,安装cuda8.0然后吧cudnn6.0对应的文件夹下的内容复制过去就好了。

Ubuntu16 cnda+cudnn链接: https://pan.baidu.com/s/1kUYdHwN 密码: v2fz
Windows10 cnda+cudnn链接: https://pan.baidu.com/s/1eSfF8CM 密码: 9cdc

这里写图片描述

解压然后运行:sudo sh cuda_8.0.27_linux.run
一路选accept,y或者直接回车默认(第一个N卡驱动如果装了可不装)。

添加环境变量:sudo gedit ~/.bashrc
在后面添加:

# cuda
export CUDA_HOME=/usr/local/cuda-8.0
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64:$CUDA_HOME/extras/CUPTI/lib64
export LIBRARY_PATH=$LIBRARY_PATH:$CUDA_HOME/lib64

解压cudnn并进入其中cd cuda

sudo cp lib64/lib* /usr/local/cuda-8.0/lib64/
sudo cp include/cudnn.h /usr/local/cuda-8.0/include/
sudo apt-get install nvidia-modprobe

运行例子进行测试,如果最后result为pass安装正确:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
  • 安装tensorflow-gpu
    前面的弄好了其实也就一句话的事情了
pip install --user tensorflow-gpu
# 测试
python
import tensorflow
# 回车之后没有报错基本就可以说安装好了
  • 安装opencv
    为了编译opencv和caffe,这里需要下一堆库,也是很容易出错的地方。有些库对Python3支持不好,强烈建议切换到用Python2环境下安装(我用Python3试了一下午还是报错)
这一步非必须,个人觉得比较大的坑所在,建议设置
# 设置Python版本索引
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 3
# 选择Python版本
sudo update-alternatives --config python

安装库

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

http://opencv.org下载3.1版本解压到需要安装存放opencv的目录并进入,我的是~/software/opencv:

cd ~/software/opencv
mkdir build //建立一个build目录,把cmake的文件都放着里边
cd build   //进入build目录
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules/ -D CUDA_NVCC_FLAGS=--Wno-deprecated-gpu-targets ..
make -j7 # 并行运行七个jobs,这一步也在build目录中进行
sudo make install
# 测试,可跳过
cd ~/software/opencv/samples/python/
python asift.py
  • 安装caffe
    caffe的安装和opencv类似,都要下载编译,下载并解压移动到安装目录:
    git clone https://github.com/BVLC/caffe.git
    unzip后我放在了:mv caffe ~/software/
    进入编译cd ~/software/

先修改一些配置文件:

cp Makefile.config.example Makefile.config
gedit Makefile.config

1.若使用cudnn,去掉“#”注释符,即
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1

2.若使用的opencv版本是3的,去下“#”号
#OPENCV_VERSION := 3

3.若要使用python来编写layer,则去下“#”号
#WITH_PYTHON_LAYER := 1

4.重要的一项 :
将# 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的位置,所以需要更改这一路径.

5.编译
make all -j7 #-j根据自己电脑配置决定
sudo make runtest

注意,上面的第五步很可能出问题,这是因为我们的cudnn只是下载复制文件,并没有添加到系统的动态链接库中,会出现无法找到的错误:

.build_release/tools/caffe: error while loading shared libraries: libcudnn.so.6: cannot open shared object file: No such file or directory
# 还可能出现cuda的问题
error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory

上面两个问题的解决方法类似,把需要的库添加即可:

# 进入cuda相关库文件夹
sudo rm -rf libcudnn.so libcudnn.so.6
# 去掉可能存在的错误链接库
sudo rm -rf libcudnn.so libcudnn.so.6
# 新建链接
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.6.0.21 /usr/local/lib/libcudnn.so.6 && sudo ldconfig

# 下面的也执行无妨,以防cuda8.0的库出现问题
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig

sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig

sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig

然后再重新执行第五步即可。

  • 测试训练,你以为前面就完了,可能没呢
1.将终端定位到Caffe根目录
cd ~/caffe

2.下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh

3.将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh

4.训练网络
./examples/mnist/train_lenet.sh

如果没问题,那就如下盗的图,如果有,那很可能是驱动问题
这里写图片描述

  • 驱动问题

前面没说驱动的问题,然后就打脸了(手动滑稽),运行caffe的时候出现了问题Cannot create Cublas handle. Cublas won't be available.
自己安装和cuda选择安装的显卡驱动版本都太高了,果然很多坑啊,选择375版本的。

安装方式一(推荐):
下载NVIDIA驱动: https://pan.baidu.com/s/1kUYdHwN 密码: v2fz
# 添加执行权限
chmod +x NVIDIA-Linux-x86_64-375.66.run
# 先按Ctrl + Alt + F1到控制台,关闭当前图形环境 
$sudo service lightdm stop
# 再安装驱动程序 
$sudo sh NVIDIA-Linux-x86_64-xxx.run
# 测试,会显示显卡驱动 nvidia -smi
# 最后重新启动图形环境 
$sudo service lightdm start
安装方式二(可能会被系统还原为384):
1. 删除之前安装的nvidia驱动,运行 sudo apt-get purge nvidia-*
2. 添加第三方驱动源,运行 sudo add-apt-repository ppa:graphics-drivers/ppa 或者 sudo apt-add-repository ppa:xorg-edgers/ppa
3. 更新源,运行 sudo apt-get update
4. 查询nvidia驱动可用版本,运行sudo apt-cache search nvidia-* 查询相应版本
4. 安装驱动,运行 sudo apt-get install nvidia-375

猜你喜欢

转载自blog.csdn.net/dod_jdi/article/details/78635061