Ubuntu16.04配置Darknet实现YOLO

介绍:

Darknet:开源的网络框架
YOLO:实时的目标检测系统,网络包括24个卷积层,2个全连接层。其中,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值。

一. 安装OpenCV

我安装的版本是opencv3.1.0 官网链接:https://opencv.org/news.html ,下载.zip压缩包,下载完成以后解压到home目录下

1.安装依赖项
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install checkinstall yasm libtiff5-dev libjpeg-dev libjasper-dev libdc1394-22-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils libeigen3-dev
这里写图片描述

2.安装opencv
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local …
这里写图片描述

cmake完成以后在build目录下开始make:
make -j8
注:-j8表示八核运算,根据电脑配置自行选择。
make完成以后输入:
sudo make install
这里写图片描述
注:编译完成后要将opencv的安装路径添加到系统环境中,否则编译darknet的时候会提示找不到opencv库,添加方法参考下面第五步。

make过程可能有报错:
注:make失败的话可以用make clean命令消除

  1. 消除nvcc warnning
    在终端输入命令:cmake -DBLAS=Open -DCUDA_NVCC_FLAGS=–Wno-deprecated-gpu-targets

这里写图片描述
这是因为opecv3.0与cuda8.0不兼容导致的。解决办法:直接进入 home/wang/opencv/modules/cudalegacy/src文件夹,修改graphcuts.cpp文件内容,如图:
这里写图片描述
其中,#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000) 是我们修改的。
修改以后重新make

这里写图片描述

二.安装CUDA

cuda是nvidia的编程语言平台,想使用GPU就必须安装cuda。
我安装的版本是 CUDA Toolkit 8.0
官网链接:https://developer.nvidia.com/cuda-release-candidate-download
要先注册才能下载,注意:下载的是cuda8.0的runfile(local)文件
下载完cuda8.0后,进入存放文件的文件夹,执行如下语句,运行runfile文件:
sudo sh cuda_8.0.61_375.26_linux.run
注意:执行后会有一系列提示让你确认,有个选择是询问是否安装NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26,如果已经安装了显卡驱动的话这里要选择否。其余的都直接默认或者选择是即可。
安装成功以后会显示如下界面:
安装成功图

安装完毕后,要配置环境变量:
(1). 用gedit打开 ~/.bashrc文件,输入如下命令:
sudo gedit ~/.bashrc
将以下内容写入到~/.bashrc尾部:
export PATH=/usr/local/cuda-8.0/binKaTeX parse error: Expected '}', got 'EOF' at end of input: {PATH:+:{PATH}}export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64KaTeX parse error: Expected '}', got 'EOF' at end of input: …LIBRARY_PATH:+:{LD_LIBRARY_PATH}}
如下图所示:
这里写图片描述

(2). 将cuda8.0的安装路径及相应的库文件导入到etc目录下的profile文件末尾
打开文件:
cd /etc
sudo gedit profile

将以下内容导入文件尾部:
export PATH= P A T H : / u s r / l o c a l / c u d a − 8.0 / b i n e x p o r t L D L I B R A R Y P A T H = PATH:/usr/local/cuda-8.0/bin export LD_LIBRARY_PATH= PATH:/usr/local/cuda8.0/binexportLDLIBRARYPATH=LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-8.0/lib64
如下图所示:
这里写图片描述
使配置文件生效,执行命令:source /etc/profile

可以测试一下cuda的Samples:
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery
这里写图片描述

三. 安装CUDNN

官网下载压缩包cuDNN v5.1 Library for Linux,不要下载deb文件 (https://developer.nvidia.com/rdp/cudnn-download):
这里写图片描述

下载完cuDNN5.1之后进行解压:
sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz
进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:
cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include #复制头文件
再将进入lib64目录下的动态文件进行复制和链接:
cd …
cd lib64
sudo cp lib /usr/local/cuda/lib64/* #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接

四.配置darknet

1.下载darknet
git clone http://github.com/pjreddie/darknet.git

2.进入darknet文件夹,打开Makefile文件,按如下修改:
将开头的OPENCV=0修改为=1,
GPU=0修改为=1,
NVCC= /usr/local/cuda-8.0/bin/nvcc
这里写图片描述

修改完成以后在darknet目录下开始编译:
make -j8
make的时候有个报错参考了下面这篇博客得以解决:
https://blog.csdn.net/tmosk/article/details/76578082
五.测试

1.下载YOLO预训练好的模型:
下载地址:https://pjreddie.com/media/files/yolo.weights,
注:我在darknet目录下新建了weights文件夹,保存该weights文件。

2.单幅图像测试
在darknet下输入
./darknet detect cfg/yolo.cfg weights/yolo.weights data/dog.jpg
此时会报错,提示找不到opencv库,如下图所示:
这里写图片描述

解决办法:
① 在etc目录下找到ld.so.conf文件
sudo gedit /etc/ld.so.conf
在文件中加上一行 /usr/loacal/lib(其实就是opencv的安装路径)
这里写图片描述
再运行sudo ldconfig,

② 修改bash.bashrc文件,sudo gedit /etc/bash.bashrc
在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

然后输入命令:source /etc/bash.bashrc
就可以正常运行了。
这里写图片描述

测试结果:
这里写图片描述

3.实时视频测试
输入命令:
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights

注:darknet目录下的cfg文件夹存放的是一些网络模型的配置文件,其中配置文件coco.data和yolov3.cfg文件就存放在该文件夹下。yolov3.weights文件是训练好的模型,可以直接去官网下载yolov3.weights

参考博客:
https://blog.csdn.net/gzj_1101/article/details/78651650
http://blog.csdn.net/feiderade/article/details/51778408
http://blog.csdn.net/tmosk/article/details/76578082
http://blog.csdn.net/u010454261/article/details/71268325?utm_source=itdadao&utm_medium=referral
http://blog.csdn.net/hrsstudy/article/details/60876451

官网链接:
https://pjreddie.com/darknet/yolo/

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值