darknet是一个基于c与cuda轻量级深度学习框架,编译部署简单,移植性好,适合初学者上手。下面来介绍一下dark的安装和简单使用。html
Darknet深度学习框架是由Joseph Redmon提出的一个用C和CUDA编写的开源神经网络框架。它安装速度快,易于安装,并支持CPU和GPU(CUDA/cuDNN)计算。且支持opencv(可选,用于图像和视频的显示)和openmp(可选,用于支持for语句的并行处理,能够加快cpu的并行处理速度并大幅提升框架的检测效率)。git
YOLO(You Only Look Once)是Joseph Redmon针对darknet框架提出的核心目标检测算法,做者在算法中把物体检测问题处理成回归问题,用一个卷积神经网络结构就能够从输入图像直接预测bounding box和类别几率。
YOLO是基于深度学习的端到端的实时目标检测系统。与大部分目标检测与识别方法(好比Fast R-CNN)将目标识别任务分类目标区域预测和类别预测等多个流程不一样,YOLO将目标区域预测和目标类别预测整合于单个神经网络模型中,实如今准确率较高的状况下快速目标检测与识别,更加适合现场应用环境。github
一、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。能够理解为泛化能力强。
四、准确率高。算法
一、位置精确性差
二、召回率低
注:召回率:正确的结果有多少被你给出了网络
支持person,bicycle,car,motorbike,aeroplane,bus,train
truck,boat等共80中物体的识别(见darknet/data/coco.names)。框架
进入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
使用官网训练的权重进行检测:
$ ./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
而检测的结果相同: 如此可见,使用OPENMP以后,程序的CPU并行效率提升3倍以上。opencv用于打开图片和视频,对检测的效率无提高做用。