linux下darknet深度学习框架上手

wandaxiao 2019-06-30

  darknet是一个基于c与cuda轻量级深度学习框架,编译部署简单,移植性好,适合初学者上手。下面来介绍一下dark的安装和简单使用。

1.darknet源码的下载和编译

1.1 darknet介绍

  Darknet深度学习框架是由Joseph Redmon提出的一个用C和CUDA编写的开源神经网络框架。它安装速度快,易于安装,并支持CPU和GPU(CUDA/cuDNN)计算。且支持opencv(可选,用于图像和视频的显示)和openmp(可选,用于支持for语句的并行处理,可以加快cpu的并行处理速度并大幅提高框架的检测效率)。

1.2 YOLO算法

1.2.1 算法简介

  YOLO(You Only Look Once)是Joseph Redmon针对darknet框架提出的核心目标检测算法,作者在算法中把物体检测问题处理成回归问题,用一个卷积神经网络结构就可以从输入图像直接预测bounding box和类别概率。
  YOLO是基于深度学习的端到端的实时目标检测系统。与大部分目标检测与识别方法(比如Fast R-CNN)将目标识别任务分类目标区域预测和类别预测等多个流程不同,YOLO将目标区域预测和目标类别预测整合于单个神经网络模型中,实现在准确率较高的情况下快速目标检测与识别,更加适合现场应用环境。

1.2.2 算法的优点:

  1、YOLO的速度非常快。在cpu上是7秒一帧图像(开启openmp的情况下),在Titan X GPU上的速度是45 fps(frames per second),加速版的YOLO差不多是150fps。
  2、YOLO是基于图像的全局信息进行预测的。这一点和基于sliding window以及region proposal等检测算法不一样。与Fast R-CNN相比,YOLO在误检测(将背景检测为物体)方面的错误率能降低一半多。
  3、可以学到物体的generalizable-representations。可以理解为泛化能力强。
  4、准确率高。

1.2.3 算法的缺点:

1、位置精确性差
2、召回率低
注:召回率:正确的结果有多少被你给出了

1.2.4

  支持person,bicycle,car,motorbike,aeroplane,bus,train
truck,boat等共80中物体的识别(见darknet/data/coco.names)。

2. darknet源码编译

  进入darknet官网,运行

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

  可以编译出c版本的darknet,如果需要编译GPU版本、打开cudnn(cuDNN只是NVIDIA深度神经网络软件开发包中的其中一种加速库)、opencv(跨平台计算机视觉库)、openmp(for语句并行处理),可用gedit打开makefile,打开相应的项(注:opencv、cudnn需要另行安装,GPU、cudnn需要NVIDIA显卡):

GPU=0
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0

  由于本人的电脑没有NVIDIA显卡,故这里只说明一下opencv的安装,先到opencv官网下载opencv2,主要当前最新的版本是opencv4,但是darknet只支持opencv2。然后解压、安装:

$ unzip  opencv-2.4.13.6.zip
$ sudo apt-get install cmake
$ udo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev 
$ cd opencv-2.4.13.6
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make -j7
$ make install

  opencv安装成功,开始编译opencv的darknet,进入darknet目录:

$ vi Makefile
GPU=0
CUDNN=0
OPENCV=1
OPENMP=1
DEBUG=0

  如上所示,打开opencv和openmp选项,然后wq保存退出。然后执行:

make

  程序将在当前目录下生成darknet文件.
  下载官方训练的权重:到darknet当前目录:

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

3. 检测图片

  使用官网训练的权重进行检测:

$ ./darknet detect cfg/yolov3.cfg yolov3.weights ./data/timg.jpeg

  注:该检测照片是本人从网上下载的一张照片。
  不打开OPENMP时检测一张图片消耗的时间分别为(五次):
  24.889,23.650,23.705,22.262,23.095,
  平均时间为:
  23.520

  打开OPENMP检测一张图片消耗的时间分别为(五次):
  7.384,7.892,7.627,7.203,7.796
  平均时间为:
  7.580s
  而检测的结果相同:
linux下darknet深度学习框架上手
  如此可见,使用OPENMP之后,程序的CPU并行效率提高3倍以上。opencv用于打开图片和视频,对检测的效率无提升作用。

相关推荐