• AlexeyAB DarkNet YOLOv3框架解析与应用实践(一)


    AlexeyAB DarkNet YOLOv3框架解析与应用实践(一)

    Darknet:  C语言中的开源神经网络             

    Darknet是一个用C和CUDA编写的开源神经网络框架。它速度快,易于安装,支持CPU和GPU计算。您可以在GitHub上找到源代码,也可以在这里阅读更多关于Darknet可以做什么的信息:

    1.  Installing Darknet

    Darknet易于安装,只有两个可选依赖项:             

    OpenCV,如果你想要更广泛的支持图像类型。             

    如果你想计算GPU的话,安装CUDA。             

    两者都是可选的,所以让我们从安装基本系统开始。我只在Linux和Mac电脑上测试过。

    Installing The Base System

    首先在这里获取Darknet git存储库。这可以通过以下方式实现:

    git clone https://github.com/pjreddie/darknet.git

    cd darknet

    make

    如果这有效,你会看到一大堆编译信息飞驰而过:

    mkdir -p obj

    gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast....

    gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast....

    gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast....

    .....

    gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast -lm....

    如果你有任何错误,试着去修正它们?如果一切看起来都编译正确,请尝试运行它!

    ./darknet

    你应该得到输出:

    usage: ./darknet <function>

    使用CUDA编译             

    CPU上的Darknet速度很快,但是GPU上的速度快了500倍!你必须有一个Nvidia的GPU,你必须安装CUDA。我不会详细介绍CUDA的安装,因为它很可怕。             

    安装CUDA后,将基本目录中Makefile的第一行更改为:

    GPU=1

    现在你可以做这个项目,CUDA将被启用。默认情况下,它将在系统的第0个图形卡上运行网络(如果正确安装了CUDA,则可以使用nvidia smi列出图形卡)。如果要更改Darknet使用的卡,可以给它一个可选的命令行标志-i<index>,例如:

    ./darknet -i 1 imagenet test cfg/alexnet.cfg alexnet.weights

    如果您使用CUDA编译,但出于任何原因希望进行CPU计算,则可以使用-nogpu来代替CPU:

    ./darknet -nogpu imagenet test cfg/alexnet.cfg alexnet.weights

    OpenCV编译            

     默认情况下,Darknet使用stb_image.h加载图像。如果你想更多的支持奇怪的格式(像CMYK jpeg),你可以使用OpenCV代替!OpenCV还允许您查看图像和检测,而无需将它们保存到磁盘。             

    首先安装OpenCV。如果从源代码处执行此操作,则会很长且很复杂,因此请尝试让包管理器为您执行此操作。            

     接下来,将Makefile的第2行更改为:

    OPENCV=1

    完成了!尝试一下,首先重新做一个项目。然后使用imtest例程测试图像加载和显示:

    ./darknet imtest data/eagle.jpg

    2. YOLO:实时目标检测

    你只看一次(YOLO)是一个最先进的实时物体检测系统。在Pascal Titan X上,它以每秒30帧的速度处理图像,在COCO test-dev上有57.9%的mAP。

    与其他检测模型的比较             

    YOLOv3非常快速和准确。在0.5 IOU处测得的mAP中,YOLOv3与焦距损失相当,但速度快了约4倍。此外,可以轻松地权衡速度和准确性之间的简单改变模型的大小,无需再训练!

     工作原理             

    先前的检测系统重新利用分类器或定位器来执行检测。他们将模型应用于多个位置和比例的图像。图像的高分区域被认为是检测。             

    使用完全不同的方法。将单一的神经网络应用于完整的图像。该网络将图像分为多个区域,并预测每个区域的包围盒和概率。这些边界框由预测的概率加权。

    与基于分类器的系统相比,我们的模型有几个优点。它在测试时查看整个图像,因此它的预测由图像中的全局上下文通知。它也用单一的网络评估来预测,不像R-CNN这样的系统需要数千张单一的图像。这使得它非常快,比R-CNN快1000倍,比R-CNN快100倍。有关完整系统的详细信息,请参阅我们的论文。

  • 相关阅读:
    为Qtcreator 编译的程序添加管理员权限
    热备,冷备,云备
    最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
    进入2012 -- 回顾我走过的编程之路
    为什么中国程序员水平一直上不了层次?无非是这些原因!
    我是如何失去团队掌控的?
    后端开发甩锅奥义
    一个线程oom,进程里其他线程还能运行吗?
    架构师必备,带你弄清混乱的JAVA日志体系!
    IDEA一定要改的八条配置
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/12817216.html
Copyright © 2020-2023  润新知