linux下darknet深度学习框架上手

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

1.darknet源码的下载和编译

1.1 darknet介绍

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

1.2 YOLO算法

1.2.1 算法简介

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

1.2.2 算法的优势:

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

1.2.3 算法的缺点:

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

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显卡):ui

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

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

$ 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目录:code

$ 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
  而检测的结果相同:
clipboard.png  如此可见,使用OPENMP以后,程序的CPU并行效率提升3倍以上。opencv用于打开图片和视频,对检测的效率无提高做用。

相关文章
相关标签/搜索