ubuntu18.04环境下的darknet+yolov3搭建及程序演示

前言:

此次环境搭建使用的硬件平台是一台微星笔记本,运行速度足够学习使用。本文仅介绍环境的搭建。yolo的使用教程会在后续更新,欢迎持续关注。

本文参考以下博客:

https://blog.csdn.net/debjiu/article/details/80824439

https://blog.csdn.net/Jeff_zjf/article/details/84846350

https://blog.csdn.net/qq_36362060/article/details/80739573

https://blog.csdn.net/vilmaigic/article/details/81412671

https://blog.csdn.net/kevineeo/article/details/84572589

想简单了解下darknet框架和yolo请点击这里:

介绍一个相对小众的深度学习框架Darknet,其YOLO神经网络算法对目标检测效果显著

本平台环境参数:

  1. gpu:GTX 1060
  2. cpu:intel i7-7700HQ
  3. 内存:16GB
  4. Ubuntu版本:18.04
  5. NVIDIA驱动版本:390.116
  6. cuda版本:cuda_9.0.176_384.81_linux
  7. cudnn版本:cudnn-9.0-linux-x64-v7.1
  8. opencv源码版本:2.4.13.6

下面是一些程序演示:

(1)准确识别出了11名足球队员,在使用gpu运算并开启cuda加速的情况下运算耗时0.094s。见下图:

(2)而使用cpu运算,耗时23.69s,由此可见gup对运算的提速效果显著。见下图:

(3)进行视频检测,这是我旅游时拍摄的一小段视频。

FPS:9.4

GPU占用:93%

显存占用:76%

下面开始搭建环境啦!安装顺序如下:

  1. 安装NVIDIA驱动

  2. 安装CUDA并配置Cudnn

  3. opencv安装

  4. 安装darknet

一.安装NVIDIA显卡驱动

安装显卡驱动有添加ppa源和下载官方安装包的方法。

这里介绍一个相对简单点的方法为ubuntu 18.04安装显卡驱动:

(1)查看gpu和推荐的驱动版本:

$ ubuntu-drivers devices

(2)然后进行自动安装

$ sudo ubuntu-drivers autoinstall

在设置里面点击详细信息,如果显示出显卡信息就说明显卡驱动安装成功了。

二.安装cuda并配置cudnn

(1)对GCC降级

Ubuntu 18.04预装GCC的版本为7.3,而cuda编译需要更低的版本,这里对gcc进行手动降级至4.8版本。

对gcc降级:

sudo apt-get install gcc-4.8


对g++降级

sudo apt-get install g++-4.8

然后进入到/usr/bin目录下输入:ls -l gcc*

cd /usr/bin
ls -l gcc* 

 显示结果如下:

 lrwxrwxrwx 1 root root 7th 3月  20 11:38 /usr/bin/gcc -> gcc-7.3  

 表示gcc链接到gcc-7.3, 需要将它改为链接到gcc-4.8,方法如下:

sudo mv gcc gcc.bak #备份
sudo ln -s gcc-4.8 gcc #重新链接

同理, 将g++链接到g++4.8:

sudo mv g++ g++.bak
sudo ln -s g++-4.8 g++

在/usr/bin目录下查看gcc和g++版本

ls -l gcc*
ls -l g++*

显示gcc和g++均链接到4.8版本,则说明安装成功:

(2)下载cuda9.0版本:cuda9.0下载链接

根据电脑配置,选择如下:

然后下载基础安装包和四个补丁至 /home/qrt/Downloads目录下:

(3)安装cuda

进入文件目录 /home/qrt/Downloads,安装cuda9.0

cd  /home/qrt/Downloads
sudo sh cuda_9.0.176_384.81_linux.run

进入安装界面

然后一路accept或者yes,在提示是否安装显卡驱动时(如下图)选择no(因为已经安装过了,否则可能会出现bug):

接下来安装补丁文件,方法和安装cuda9.0一样:

在/home/qrt/Downloads目录打开终端,分别输入:

sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
sudo sh cuda_9.0.176.3_linux.run
sudo sh cuda_9.0.176.4_linux.run

安装补丁。

安装完毕后还需要配置环境,将以下两条加入.barshrc文件中。

打开.barshrc

sudo vim ~/.barshrc

在最后面加入下面两条语句

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}      
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

如下图:

到此,cuda就安装完了。

(4)配置cudnn

下载cudnn需要注册,注册完,下载:cuDNN v7.1.4 Library for Linux

 进入下载目录并解压在当前目录:

cd /home/qrt/Downloads
tar zxvf cudnn-9.0-linux-x64-v7.1.tgz

复制cudnn里的文件到cuda相关文件夹内

sudo cp /home/qrt/Downloads/cuda/include/cudnn.h    /usr/local/cuda-9.0/include
sudo cp /home/qrt/Downloads/cuda/lib64/libcudnn*    /usr/local/cuda-9.0/lib64
sudo chmod a+r /home/qrt/Downloads/cuda/include/cudnn.h   /usr/local/cuda-9.0/lib64/libcudnn*

三.安装opencv

(1)下载opencv,选择2.4.13.6版本sources文件下载:https://opencv.org/releases.html

下载并解压至/home/qrt/Downloads目录下,然后将文件夹重命名为opencv

(2)执行以下命令安装依赖项:

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

(3)修改opencv配置文件

1.进入到opencv/cmake 目录下,找到OpenCVDetectCUDA.cmake文件并打开,定位到26行,修改set(HAVE_CUDA 1)为set(HAVE_CUDA 0)。
这里修改的目的是为了避免后面执行sudo make install出现如下的错误信息。

nvcc warning : The 'compute_20', 'compute_20','sm_21' architectures are deprecated

备注:出现上面的错误信息的原因是使用CUDA配置opencv引起的。将HAVE_CUDA 设为0之后,在后面的编译过程中就会关闭CUDA,解决这个问题。

2.进入到opencv 目录下,找到CMakeList.txt文件并打开,定位到176,177行,将ON改为OFF然后保存。

(4)安装opencv

在opencv目录下新建build文件夹,然后执行以下命令:

cd build    #进入到build文件夹
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..    #开始编译
make -j8   
sudo make install -j8

执行完毕就说明opencv配置完成了。

下面进行测试:

没有出现报错信息则说明opencv配置成功了。
四.darknet的安装

(1)可以按照官网上面的步骤来安装:https://pjreddie.com/darknet/yolo/

git clone https://github.com/pjreddie/darknet     下载代码
cd darknet                                        进入darknet目录
make                                              编译

(2)下载权重,然后保存在darknet的目录下

wget https://pjreddie.com/media/files/yolov3.weights

在darknet目录下打开终端,输入: 

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

 就可以进行测试了,如下图:

 下面是对darknet目录下的Makefile文件进行的一些修改

每次修改完都需要重新编译

(1)如需使用gpu运算,修改如下,然后保存。

修改完后一定要重新编译,在darknet目录下打开终端,输入:

make clean
make -j8

(2)根据自己电脑的硬件可在Makefile中对ARCH进行修改,我的显卡是GTX1060,算力为6.1(具体算力nvidia官网可查)。

 https://developer.nvidia.com/cuda-gpus

修改如下:

 显卡算力:

(3)在Makefile文件的第46行,修改为cuda的安装路径。

(4)在程序运行的过程中如果出现以下错误(内存溢出):

cuda error: out of memory darknet: ./src/cuda.c:36: check_error: Assertion `0' failed.

应该进行如下修改:

将/home/qrt/darknet/cfg目录下yolov3.cfg的修改为:

将
[net]
# Testing
#batch=1
#subdivisions=1
# Training
batch=64
subdivisions=16
修改为
[net]
# Testing
batch=1
subdivisions=1
# Training
#batch=64
#subdivisions=16

 

 

              全文结束啦!欢迎在回复区讨论!

  • 21
    点赞
  • 190
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值