linux下darknet深度学习框架上手

9次阅读

共计 2234 个字符,预计需要花费 6 分钟才能阅读完成。

  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,traintruck,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/dog.jpg

  不打开 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 用于打开图片和视频,对检测的效率无提升作用。

正文完
 0