Ubuntu16.04+Cuda8.0+cudnn5.1+opencv3.1+caffe2.7+SSD+GTX1080ti

ubuntu是一种很神奇的东西,每次安装的过程都会产生不同的错误,所以安装之前最好先焚香、沐浴、祈祷......

安装过程中,出现了各种问题,参考了网上各路大神的经验终于顺利解决,一并感谢...

一、Ubuntu安装

1.   安装ubuntu16.04.

下载ubuntu-16.04.4-desktop-amd64.iso,用UltraISO制作U盘镜像。

不能理解的是,用Ubuntu14.04.3安装后升级16.04.4,一直到最后训练SSD,过程一直都比较顺利,直接用Ubuntu16.04.4安装,过程中各种错误层出不穷。

1.1安装google拼音输入法

安装输入法纯粹是为了写文档用,不是必须。

1)安装汉语言包

sudo apt-get installlanguage-pack-zh-hans

2)安装google拼音输入法

sudo apt-get installfcitx-googlepinyin

3)打开systemsetting-->languagesupport,安装语言包

如图,选择键盘输入方式系统为fcitx


4)重启电脑,打开终端,执行“fcitx-configtool”,进行输入法配置:

二、 Caffe环境搭建

2.1 安装显卡驱动

1)首先,通过快捷键Ctrl+Alt+T打开终端,然后加入官方ppa源:

sudoadd-apt-repository ppa:graphics-drivers/ppa

sudo apt-get update

2)点击Ubuntu右上角的设置图标->系统设置->软件和更新->附加驱动, 这时系统会自动匹配出读者独显型号的最新驱动版本,点击最新的驱动版本(即数字最大的那个,比如nvidia-378与nvidia-387就选nvidia-387) ->应用更改。

3)重启后输入:nvidia-settings

查看显卡驱动版本是否与所安装驱动相符.


2.2安装CUDA

1)官网下载CUDA××.run文件,下载CUDA需要注册和登陆NVIDIA开发者账号,CUDA8下载页面,这里选择了Ubuntu16.04系统runfile安装方案:runfile: https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda_8.0.44_linux-run

2)下面开始安装:

sudo shcuda_8.0.44_linux.run

执行后会有一系列提示让你确认,非常关键的地方是是否安装378这个低版本的驱动,答案必须是n,否则之前安装的驱动就白费了,而且问题多多。

Logging to/opt/temp//cuda_install_6583.log Using moreto view the EULA.       End User LicenseAgreement       --------------------------

Preface
-------

The followingcontains specific license terms and conditions   forfour separate NVIDIA products. By accepting this agreement, you agree to complywith all the terms and conditions applicable to the specific product(s)included herein.

如果这里出现:more 0%,按Ctrl+C

Do you accept thepreviously read EULA? accept/decline/quit:accept

Install NVIDIAAccelerated Graphics Driver for Linux-x86_64 378.16?      (y)es/(n)o/(q)uit: n

Install the CUDA 8.0Toolkit? (y)es/(n)o/(q)uit: y

Enter ToolkitLocation     [ default is/usr/local/cuda-8.0 ]: /usr/local/cuda-8.0

Do you want toinstall a symbolic link at /usr/local/cuda?  (y)es/(n)o/(q)uit:y

Install the CUDA 8.0Samples?      (y)es/(n)o/(q)uit: y

Enter CUDA SamplesLocation      [default is/home/whealther]: /usr/local/cuda-8.0/Samples

3)安装完毕后,再声明一下环境变量,并将其写入到 ~/.bashrc 的尾部:

在命令行输入:sudo gedit ~/.bashrc

exportPATH=/usr/local/cuda-8.0/bin\${PATH:+:\${PATH}} 

exportLD_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

使链接立即生效。

如果出现ls sudo等终端命令不可用,一般是路径错误,将路径加到~/.bashrc和/etc/profile中即可。

4)最后再来测试一下CUDA,运行:nvidia-smi

结果如下所示:

 

2.3编译CUDA Samples

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

sudo ./deviceQuery

看到类似如下图片中的显示,则代表CUDA安装且配置成功。


2.4 安装cundnn

1)下载cuDNN后解压:

官网下载https://developer.nvidia.com/rdp/cudnn-download,下载:cudnn-8.0-linux-x64-v5.1.tgz

解压缩 :

sudo tar -zxvf    cudnn-8.0-linux-x64-v5.1.tgz

2)拷贝解压后的文件:

cd lib64/

sudo cp lib*/usr/local/cuda/lib64/

cd ..

cd include/

sudo cp cudnn.h/usr/local/cuda/include/    //复制动态链接库

3)更新软链接 (这里libcudnn.so.5.1.10是固有文件,而libcudnn.so.5是libcudnn.so.5.10链接得到的动态文件,libcudnn.so是libcudnn.so.5链接得到的动态文件。)

cd/usr/local/cuda/lib64/

sudo rm -rf libcudnn.so libcudnn.so.5 //删除原有动态文件

sudo ln -slibcudnn.so.5.1.10 libcudnn.so.5   //生成软链接(注意查看自己下载的是不是libcudnn.so.5.1.10,在/usr/local/cuda/lib64/下查看)

sudo ln -slibcudnn.so.5 libcudnn.so

若需要更换cudnn版本,则替换原来的libcudnn*,并重新软链接。

4)更新链接库:

sudo ldconfig

2.5安装Opencv3.1

1)首先安装必要的库:

sudo apt-get -yremove ffmpeg x264 libx264-dev

sudo apt-get -yinstall libopencv-dev build-essential checkinstall cmake pkg-config yasmlibtiff5-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-devlibswscale-dev libdc1394-22-dev libxine2-dev libgstreamer0.10-devlibgstreamer-plugins-base0.10-dev libv4l-dev x264 v4l-utils ffmpeg libgtk2.0-dev

2)根据官网上的链接下载OpenCV3.1.0版本,并进行解压,解压之后进入安装文件目录。建立要编译的build目录,然后进入build目录进行编译:

mkdir build   //编译的工程文件都在这个文件夹里

cd build

cmake -DCMAKE_BUILD_TYPE=RELEASE -D   CMAKE_INSTALL_PREFIX=/usr/local ..

成功后会提示配置和生成成功:

--Configuringdone

--Generatingdone

--Buildfile have been written to :/home…

在configure过程中过程中,可能会出现下面的错误:ICV:Downloading ippicv_linux_20151201.tgz… 。在直接下载该文件的过程中,会因为超时而失败,可以下载ippicv_linux_20151201.tgz,并替换掉opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,然后再次cmake即可。

3)生成编译文件之后,在opencv-3.1.0/build目录下,终端输入:

sudo make -j8   //编译opencv,但是并没有安装到系统,还需install

sudo make install

安装好以后配置环境变量,使其生效:

sudo sh -c 'echo"/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

sudo ldconfig

4)make 过程中可能出现的问题

问题1在执行make命令的时候,可能会在进度的60%左右出现一个错误:

error: ‘NppiGraphcutState’has not been declared …  
modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/build.make:290:recipe fortarget    ‘modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o’failed       make[2]:***     [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error

原因: GraphCut在cuda7.5中弃用,而且在cuda8.0中移除了。 
解决办法:修改 ~/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp文件把第45行修改成: 

#if !defined(HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

问题2执行make时,会在80%左右出现 :

fatal error: hdf5.h:No such file or directory 
opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatalerror: hdf5.h: No such file or directory

原因:找不到hdf5.h的路径      
解决办法:

在opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp文件中修改第40行

将#include<hdf5.h> 修改成#include"/usr/include/hdf5/serial/hdf5.h"

问题393%左右,/home/whealther/Downloads/opencv-3.1.0/

modules/cudalegacy/src/graphcuts.cpp:120:54:error:   ‘NppiGraphcutState’ has not beendeclared

解决办法:需要修改一处源码:在graphcuts.cpp中将 #if !defined     (HAVE_CUDA)|| defined (CUDA_DISABLER)改为     #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) ||    (CUDART_VERSION >= 8000)

PS:每次修改文件后可直接执行make命令,不需要执行make clean。因为执行make clean后会重新从头编译,那样会浪费时间。

2.6安装Python

1)Linux16.04自带有python,在终端下直接输入python可以查看你的版本:


2)python的安装有两种方式:一种是系统自带的python,只需再安装相应的库即可;第二种是直接安装anaconda,很多相应的库已经包含了。这里,我们使用第一种安装方法:

安装pip,tornado和pyzmq:

sudo apt-get installpython-pip

sudo pip installtornado pyzmq pygments 

错误:TypeError:unsupported operand type(s) for -=: 'Retry' and 'int'

解决方式:·sudo apt-get install python-pip

sudoapt-get install libzmq-dev

再安装一些依赖库

sudo apt-get installpython-numpy python-scipy python-matplotlib python-qt4 qt4-designerpyqt4-dev-tools python-qt4-doc spyder cython swig python-sklearn python-skimagepython-h5py python-protobuf python-leveldb python-networkx python-nosepython-pandas python-gflags ipython protobuf-c-compiler protobuf-compiler

3)安装完成后,输入

ipython

如有相关信息出现,即为安装成功。


2.7Caffe配置

1)首先安装依赖库:

sudo apt-get update

sudo apt-get install--no-install-recommends libboost-all-dev

sudo apt-get install build-essential cmakegit pkg-config libprotobuf-dev protobuf-c-compiler protobuf-compilerlibleveldb-dev libsnappy-dev libopenblas-dev libhdf5-serial-dev libgflags-devlibgoogle-glog-dev liblmdb-dev python-dev 

sudo apt-get install libatlas-base-dev

2)在~/work/ssd/目录下(新建)clone作者github下的caffe文件包:

git clone https://github.com/weiliu89/caffe.git

cd caffe

git checkout ssd(出现“分支”则说明copy-check成功...作者caffe目录下有三个分支fcn/master/ssd,利用git checkout来切换分支,否则只有master目录下的文件)

3)配置SSDcaffe:

修改配置文件,进入到caffe的根目录,执行cd /home/.../caffe

cpMakefile.config.example Makefile.config

打开Makefile.config对其进行修改,Makefile.config修改内容内容如下(红色字体修改后可能出错):

a.去掉注释第21行的OPENCV_VERSION:= 3

b.去掉注释 WITH_PYTHON_LAYER := 1

c.将#USE_CUDNN := 1修改成:USE_CUDNN := 1

d.#USE_OPENCV := 0 修改成USE_OPENCV :=1

e.#USE_LEVELDB := 0 修改为USE_LEVELDB:=1

f.#USE_LMDB := 0 修改为USE_LMDB :=1

h.在 INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include 后面添加 /usr/include/usr/include/hdf5/serial

i.在 LIBRARY_DIRS := $(PYTHON_LIB)/usr/local/lib /usr/lib 后面添加 /usr/lib/s86_64-linux-gnu/usr/lib/x86_64-linux-gnu/hdf5/serial

j.实现caffe对Python和Matlab接口的支持 PYTHON_LIB := /usr/local/lib

打开Makefile文件,修改内容内容如下:

181行:LIBRARIES +=glog gflags protobufboost_system boost_filesystem m hdf5_hl hdf5

改为

LIBRARIES+=glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hlhdf5_serial

打开/usr/local/cuda/include/host_config.h ,将:

#error -- unsupported GNU version! gcc versionslater than 5.0 are not supported!

改为

//#error -- unsupported GNU version! gcc versionslater than 5.0 are not supported!

4)编译

makeall -j8   

错误.

make:*** [.build_release/tools/convert_annoset.bin] Error 1

make:*** [.build_release/tools/get_image_size.bin] Error 1

make:*** [.build_release/tools/compute_image_mean.bin] Error 1

…… 

解决办法: 添加boost_regex到Makefile中,在Makefile第260行左右添加boost_regex至LIBRARIES+= boost_thread stdc++后,为:LIBRARIES += boost_thread stdc++boost_regex

make runtest -j8  

错误:

Makefile:597:recipe for target '.build_release/test/test_all.testbin' failed,make: *** [.build_release/test/test_all.testbin] Error 1

解决方法:在Makefile.config中注释掉USE_CUDNN(为什么?

makepycaffe -j8

自此,Caffe配置完成,接下来配置SSD算法。

2.8SSD算法配置、训练、测试

1)下载预训练模型:  https://github.com/weiliu89/caffe/tree/ssd或者下载SSD300*300和SSD512*512两个模型。 将它放入caffe/models/VGGNet/目录下(没有VGGNet文件夹可以新建)

2)下载VOC2007和VOC2012数据集,放到/home/data(需要在home目录下生成data文件夹)

cd /home

mkdir data

cd data/

下载数据集,放在/data文件夹下:

sudo  wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar

sudo   wgethttp://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar

sudo wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

解压数据集:

tar -xvf VOCtrainval_11-May-2012.tar

tar -xvf VOCtrainval_06-Nov-2007.tar

tar -xvf VOCtest_06-Nov-2007.tar

3)将图片转化为LMDB文件,用于训练:

cd caffe/

./data/VOC0712/create_list.sh 

./data/VOC0712/create_data.sh

错误:ImportError: No module named caffe.proto

解决方法:sudo gedit /etc/profile

加入:exportPYTHONPATH=CAFFE_ROOT/caffe/python:$PYTHONPATH

CAFFE_ROOT为caffe所在路径,比如本处为~/work/ssd/

使得文件生效:source  /etc/profile

注意:等号两边不能加空格,否则会出现bash: export: `=': 不是有效的标识符等错误信息.

4)开始训练:pythonexamples/ssd/ssd_pascal.py

开始漫长的训练时间,我用一块1080ti,训练了3天。











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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值