Ubuntu16.04配置安装darknet

darknet是一个开源的深度学习框架,非常小巧,不用其他库的支持就能直接运行。但是作者还是支持了cuda和opencv更加方便加速训练以及显示。下面我们开始进行darknet+cuda+opencv的安装。

安装顺序

  • opencv
  • CUDA
  • darknet

安装顺序一定要注意,不然出现错误非常麻烦。darknet安装顺序可以随意,但是opencv一定要cuda前面安装。不然报错很难解决只能重装系统。
这里我们安装的版本是opencv3.2.0+cuda8.0,由于需要利用tensorlfow进行后续的开发,所以cuda需要选择cuda8。tensorlfow暂时不支持cuda9。

opencv3.2.0的安装

安装相关依赖

参考Ubuntu下编译opencv并生成python链接库详细教程-吐血编译系列

可能遇到问题

wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip  
unzip opencv.zip# 此时会生成一个opencv3.2.0
cd opencv-3.2.0

#创建一个文件夹
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4
make install

在执行cmke的时候会一直卡在ICV: Downloading ippicv_linux_20151201.tgz…,网上提到一种方法,就是下载这个压缩包,然后进行替换之后重新执行改名命令。但是笔者尝试之后发现再次cmake是还是会出现错误,所以这种方法并不可行。
发现很多人都漏了一点。当我们下载完之后,替换原来的linux_20151201.tgz,还需要关掉网络下载-DWITH_IPP=OFF。避免再次下载。
所以重新执行的指令为

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DWITH_IPP=OFF ..

Ubuntu16.04配置安装darknet_第1张图片
配置成功之后在执行

make -j4
make install

设置相关路径

sudo gedit /etc/ld.so.conf.d/opencv.conf  

在文件中添加/usr/local/lib
Ubuntu16.04配置安装darknet_第2张图片

执行下面指令

sudo ldconfig  

打开另一个opencv的配置文件

sudo gedit /etc/bash.bashrc  

在里面添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

Ubuntu16.04配置安装darknet_第3张图片

安装错误,重新编译安装的方法

进入build文件夹所有文件,重新编译。
删除

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DWITH_IPP=OFF ..
make -j4
make install

测试opencv是否安装成功

这里我选择的是samples/python里面的例子
进入到该文件家,执行

python turing.py

Ubuntu16.04配置安装darknet_第4张图片
测试成功。
或者直接利用darknet进行测试。这里后面再讲。

安装CUDA

查找驱动

去NVIDIA官网查看自己的显卡是那种驱动
Ubuntu16.04配置安装darknet_第5张图片
比如说我的显卡是gtx1050ti,对应查到的版本是NVIDIA-384

安装驱动

禁用系统默认驱动

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

安装NVIDIA驱动

按Ctrl+Alt+F1进入命令行模式,关闭图形系统
关闭图形界面

sudo service lightdm stop

安装N卡驱动程序

sudo apt install nvidia-384 

重新启动图形系统

sudo service lightdm start

上面的命令执行后会自动转到图形界面,因为之前Ubuntu系统集成的显卡驱动程序nouveau被禁用了,这时候可能无法显示图形界面,此时再按下Ctrl+Alt+F1进入命令行模式,输入reboot 重启计算机即可。

安装CUDA

最新的CUDA更新到了cuda9,由于实验需要tensorflow进行后期操作。但是tensorflow只支持到cuda8。
所以在这里选择安装CUDA8

下载CUDA8

由于官网上面找不到CUDA8,这里用wget下载

wget --no-check-certificate https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb

我们会得到一个本地deb文件

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb.44-1_amd64-deb

跟新缓存包

sudo apt-get update 

安装CUDA

sudo apt-get install cuda 

设置环境变量

在自己的.bashrc的最后添加以下代码

sudo 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}}

使环境变量生效

source ~/.bashrc

检查CUDA是否安装成功

检查cuda

nvcc -V

编译samples例子

进入cuda的安装目录,我的安装目录为/usr/local/cuda/samples,执行make,并且等待10分钟左右。

测试编译之后的例子

可以在Samples里面找到bin/x86_64/linux/release/目录,并切换到该目录 运行deviceQuery程序

sudo ./deviceQuery 

查看输出结果,重点关注最后一行,Pass表示通过测试
Ubuntu16.04配置安装darknet_第6张图片

安装CUDNN

darknet的安装

进入darknet官网可以查看相关指令
下面还是讲指令贴上来

git clone https://github.com/pjreddie/darknet.git
cd darknet
make

安装CUDNN

在官网下载cudnn,下载压缩包cuDNN v6.0 Library for Linux,不要下载deb文件
Ubuntu16.04配置安装darknet_第7张图片

下载完成之后解压得到一个cuda文件夹。对文件进行复制。

sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include#
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64

安装完成。
注意有两个cuda文件夹,一个是cuda一个是cuda-8.0,这里的文件对应之前设置的环境变量的路径。重点内容

2017.12.11
英伟达真tm有毒,前段时间系统崩掉,重装cuda莫名其妙的。官网找半天只有cuda9。
各个版本cuda,找了半天才找到。。。。

使用tensorflow的时候会遇到ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory
注意创建/usr/local/cuda to /usr/local/cuda-8.0的软链接
https://github.com/tensorflow/tensorflow/issues/5343

配置OPENCV和CUDA

在makefile文件中,修改配置文件

OPENCV=1
GPU=1

重新编译

make clean
make -j4#我的cpu为四核四线程

出现如下错误
Ubuntu16.04配置安装darknet_第8张图片
前面环境变量设置出现了错误。nvcc并没有设置到环境变量当中。重新设置环境变量。
然后讲makefile的NVCC设置为

NVCC=/usr/local/cuda-8.0/bin/nvcc 

重新编译,然后测试

./darknet imtest data/eagle.jpg

发现配置成功

结语

opencv3.2.0和cuda的配置真的崩溃。花了好几天时间,系统都重装了好几次,好在最后还是成功了。总算可以进行下一步。
如果大家遇到同样的问题欢迎留言。

.

你可能感兴趣的:(deep,learning,opencv)