YOLOv4: Optimal Speed and Accuracy of Object Detection(2020.4)


文章目录

  • Abstract
  • Introduction
  • Related work
    • Object detection models
    • Bag of freebies
    • Bag of specials
  • Methodology
    • Selection of architecture
    • Selection of BoF and BoS
    • Additional improvements
    • YOLOv4
  • Experiments
  • Results
    • 表8列出了使用Maxwell GPU的帧率对比结果
    • 表9列出了使用Pascal GPU的帧率对比结果
  • 表10列出了使用Volta GPU的帧率对比结果
  • Conclusions

原文链接
源代码

Abstract

据说有大量的特征可以提高卷积神经网络(CNN)的准确性。需要在大型数据集上对这些特征的组合进行实际测试,并对结果进行理论论证。一些特征只对某些模型和某些问题起作用,或者只对小规模数据集起作用;而一些特征,如批归一化和残差连接,适用于大多数模型、任务和数据集。我们假设这些通用特征包括加权残差连接(WRC)、跨阶段部分连接(CSP)、跨小批归一化(CmBN)、自对抗训练(SAT)和Mish-激活。
我们使用了新的特征:WRC、CSP、CmBN、SAT、Mish-激活、Mosaic数据增强、CmBN、DropBlock正则化和CIoU损失,并将其中一些特征结合起来获得了最先进的结果:MS COCO数据集在Tesla V100上以~ 65 FPS的实时速度获得了43.5%的AP(65.7%的AP50)

Introduction

大多数基于cnn的目标检测器很大程度上只适用于推荐系统。最精确的现代神经网络不是实时运行的,需要大量的gpu来进行大量的mini-batch大小的训练。提高实时对象检测器的准确性,不仅可以将它们用于提示生成推荐系统,还可以用于独立流程管理和减少人工输入

我们通过创建一个在传统GPU上实时运行的CNN来解决这些问题,并且训练只需要一个传统GPU
本工作的主要目标是在生产系统中设计一个快速运行的目标检测器,并优化并行计算,而不是低计算量理论指标(BFLOP)
我们希望所设计的对象易于训练和使用。例如,任何使用传统GPU进行训练和测试的人都可以获得实时、高质量和令人信服的目标检测结果,如图1所示的YOLOv4结果
(在性能相当的情况下,YOLOv4的运行速度比EfficientDet快两倍。改进YOLOv3的AP和FPS分别提高10%和12%)
我们的贡献总结如下:

  1. 我们开发了一个高效、强大的目标检测模型。它使得每个人都可以使用1080 Ti或2080 Ti GPU来训练超级快速准确的目标检测器
  2. 我们在检测器训练过程中验证了最先进的Bag-of- Freebies和Bag-of- specials方法对目标检测的影响
  3. 我们修改了最先进的方法,使它们更有效,更适合单GPU训练,包括CBN, PAN, SAM等

Related work

Object detection models

现代检测器通常由两部分组成,在ImageNet上进行预训练的主干和用于预测对象类别和边界框的头部

对于那些运行在GPU平台上的检测器,它们的主干可以是VGG[68]、ResNet[26]、ResNeXt[86]或DenseNet[30]
对于那些运行在CPU平台上的检测器,它们的主干可以是SqueezeNet b[31]、MobileNet[28,66,27,74]或ShuffleNet[97,53]。

对于头部部分,通常分为两种,即一阶段目标检测器和两阶段目标检测器。最具代表性的两阶段目标检测器是R-CNN系列,包括Fast R-CNN、Faster R-CNN、R-FCN和Libra R-CNN。也有可能使两阶段对象检测器成为无锚点对象检测器,如RepPoints
对于单级目标检测器,最具代表性的型号有YOLO、SSD和RetinaNet

近年来发展了无锚单级目标探测器。这类检测器有CenterNet、CornerNet、FCOS等。近年来发展起来的目标检测器通常在主干和头部之间插入一些层,这些层通常用于收集不同阶段的特征图。我们可以称之为物体探测器的颈部
通常,一个颈由几个自下而上的路径和几个自上而下的路径组成。采用这种机制的网络包括Feature Pyramid Network (FPN)、Path aggregation Network (PAN)[49]、BiFPN[77]和NAS-FPN

除了上述模型外,一些研究者强调直接建立一个新的主干(DetNet[43], DetNAS[7])或一个新的整体模型(SpineNet [12], HitDe- tector[20])来进行目标检测
综上所述,一个普通的目标检测器由几个部分组成:

Bag of freebies

通常,目标检测器是离线训练的。因此,研究人员一直喜欢利用这一优势,开发更好的训练方法,使目标检测器在不增加推理成本的情况下获得更高的精度,我们把这些只改变训练策略或只增加训练成本的方法称为 “bag of freebies”

目标检测方法中经常采用的一种方法是数据增强,这种方法符合 “bag of freebies”的定义。数据增强的目的是增加输入图像的可变性,使所设计的目标检测模型对来自不同环境的图像具有更高的鲁棒性

其他一些 “bag of freebies”方法致力于解决数据集中的语义分布可能存在偏差的问题。在处理语义分布偏差问题时,一个非常重要的问题是不同类别之间存在数据不平衡的问题,这一问题通常通过两阶段对象检测器中的硬负例挖掘[72]或在线硬例挖掘[67]来解决

最后一类“bag of freebies”是边界盒(Bounding Box, BBox)回归的目标函数传统的目标检测器通常使用均方误差(Mean Square Error, MSE)直接对BBox的中心点坐标和高度、宽度进行回归,即{x中心,y中心,w, h},或者左上点和右下点,即{x左上,y左上,x右下,y右下}。基于锚点的方法是估计相应的偏移量,例如{x中心偏移量,y中心偏移量,w偏移量,h偏移量}和{x左上偏移量,y左上偏移量,x右下偏移量,y右下偏移量}

Bag of specials

对于那些只增加少量推理成本,却能显著提高目标检测精度的插件模块和后处理方法,我们称之为“bag of specials”。一般来说,这些插件模块是为了增强模型中的某些属性,如扩大接受野、引入注意机制或增强特征集成能力等,后处理是对模型预测结果进行筛选的一种方法

通常用于目标检测的注意模块主要分为通道型注意和点型注意,这两种注意模型的代表分别是挤压-激发(Squeeze-and-Excitation, SE)[29]和Spatial注意模块(SAM)[85]

基于深度学习的目标检测中常用的后处理方法是NMS,它可以过滤掉那些对同一目标预测不好的bbox,只保留响应较高的候选bbox

Methodology

根本目标是神经网络在生产系统中的快速运行和并行计算的优化,而不是低计算量的理论指标(BFLOP)。我们提出了两种实时神经网络的选择:
对于GPU,我们在卷积层中使用少量组(1 - 8):CSPResNeXt50 / CSPDarknet53
对于VPU -我们使用分组卷积,但我们避免使用挤压和兴奋(SE)块-具体包括以下模型:EfficientNet-lite / MixNet [76] / GhostNet [21] / Mo- bileNetV3

Selection of architecture

我们的目标是在输入网络分辨率、卷积层数、参数数(filter_size² * filters * channel / groups)和输出层数(过滤器)之间找到最佳平衡

下一个目标是为不同的检测器级别(如FPN, PAN, ASFF, BiFPN)选择额外的块来增加接受野和来自不同骨干级别的参数聚合的最佳方法

对于分类来说最优的参考模型对于检测器来说并不总是最优的。与分类器不同,检测器需要满足以下条件:
1. 更高的输入网络大小(分辨率)-用于检测多个小尺寸目标
2. 更多的层-用于更高的接受域,以覆盖增加的输入网络大小
3. 更多参数-为了提高模型在单个图像中检测不同大小的多个目标的能力

我们可以假设应该选择一个具有更大的接受野大小(具有更多的卷积层数3 × 3)和更多参数的模型作为主干。表1显示了CSPResNeXt50、CSPDarknet53和Effi- cientNet B3的信息,这一理论证明,连同我们的大量实验,表明CSPDarknet53神经网络是两者的最佳模型作为一个检测器的骨干

不同大小感受野的影响总结如下:
1. 达到目标大小-允许查看整个目标
2. 达到网络大小-允许查看目标周围的上下文
3. 超过网络大小-增加图像点和最终激活之间的连接数

我们在CSPDarknet53上添加了SPP块,因为它显着增加了接受野,分离出最重要的上下文特征,并且几乎没有导致网络运行速度的降低。我们使用PANet作为不同检测级别的不同骨干级别的参数聚合方法,而不是YOLOv3中使用的FPN

最后,我们选择CSPDarknet53骨干、SPP附加模块、PANet路径聚合颈和YOLOv3(基于锚点的)头作为YOLOv4的架构

Selection of BoF and BoS

为了改进目标检测训练,CNN通常使用以下方法:
对于训练激活函数,由于PReLU和SELU较难训练,而ReLU6是专门为量化网络设计的,因此我们将上述激活函数从候选列表中删除
我们毫不犹豫地选择DropBlock作为我们的正则化方法,对于归一化方法的选择,由于我们关注的是只使用一个GPU的训练策略,所以没有考虑syncBN

Additional improvements

为了使所设计的检测器更适合在单GPU上进行训练,我们进行了额外的设计和改进如下:
1.本文介绍了一种新的数据增强方法Mosaic, and Self-Adversarial Training (SAT)
2.采用遗传算法选择最优超参数
3.我们修改了一些现有的方法,使我们的设计适合于有效的训练和检测-改进的SAM,改进的PAN和交叉小批量正态化(CmBN)

Mosaic是一种新的数据增强方法,它将4张训练图像混合在一起,因此混合了4种不同的上下文,而CutMix只混合了2个输入图像。这使得在正常环境之外的对象检测变得容易。此外,批处理规范化计算每层上4个不同图像的激活统计信息。这大大减少了对大型mini-batch大小的需求

**自对抗训练(SAT)**也代表了一种新的数据增强技术,它分为两个向前和向后的阶段。在第一阶段,神经网络改变原始图像,而不是改变网络权重。通过这种方式,神经网络对其自身进行对抗性攻击,改变原始图像以制造图像上没有期望对象的欺骗。在第二阶段,对神经网络进行训练,对修改后的图像进行正常的目标检测)

CmBN表示CBN的修改版本,如图4所示,定义为Cross mini-Batch Normalization (CmBN)。这只收集单个批内的小批之间的统计信息
我们将SAM从空间注意改为点注意,将PAN的快捷连接改为串联,分别如图5和图6所示

YOLOv4


YOLO v4 uses
Bag of Freebies (BoF) for backboneCutMixMosaic数据增强DropBlock正则化类标签平滑
Bag of Specials (BoS) for backboneMish激活,跨级部分连接(CSP),多输入加权残差连接(MiWRC)

Bag of Freebies (BoF) for detectorCIoU-loss, CmBN, DropBlock正则化Mosaic数据增强自对抗训练SAT,消除网格敏感性,使用多个锚点为一个ground truth,余弦退火调度程序[52],最优超参数,随机训练形状
Bag of Specials (BoS) for detectorMish激活,SPP-block, SAM-block, PAN路径聚合block, DIoU-NMS

Experiments

我们在ImageNet (ILSVRC 2012 val)数据集上测试了不同训练改进技术对分类器精度的影响,然后在MS COCO (test-dev 2017)数据集上测试了不同训练改进技术对检测器精度的影响




Results

与其他最先进的目标探测器获得的结果的比较如图8所示。我们的YOLOv4位于帕累托最优曲线上,在速度和精度方面都优于最快和最准确的检测器

表8列出了使用Maxwell GPU的帧率对比结果

可以是GTX Titan X (Maxwell)或Tesla M40 GPU

(MS COCO数据集上不同目标检测器的速度和精度比较(test- dev 2017)。(此处高亮显示FPS为30或更高的实时检测器。我们将结果与batch=1进行比较,而不使用tensorRT)

表9列出了使用Pascal GPU的帧率对比结果

可以是Titan X (Pascal)、Titan Xp、GTX 1080 Ti、Tesla P100 GPU

表10列出了使用Volta GPU的帧率对比结果

可以是Titan Volta或者Tesla V100 GPU

Conclusions

我们提供了一个最先进的检测器,比所有可用的替代检测器更快(FPS)和更准确(MS COCO AP 50…95和AP 50)。所描述的检测器可以在具有8-16 gb vram的传统GPU上进行训练和使用,这使得其广泛使用成为可能。基于一阶段anchor的检测器的原始概念已被证明是可行的,我们已经验证了大量的特征,并选择使用这些特征来提高分类器和检测器的准确性,这些特性可以作为未来研究和开发的最佳实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/189033.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins 质量扫描

代码质量扫描工具(SonarQube) 质量评审 SonarQube有四个关键组件 ◼ SonarQube Server运行有三个组件 ◆ Web Server:UI ◆ Search Server:为UI提供搜索功能,基于ElasticSearch ◆ Compute Engine Server&#xff1a…

Git GUI、SSH协议和IDEA中的Git使用详解

目录 前言 一、Git GUI的使用 1. 什么是Git GUI 2. 常见的Git GUI工具 3.使用 4.使用Git GUI工具的优缺点 优点: 缺点: 二、SSH协议 1.什么是SSH协议 2.SSH的主要特点和作用 3.SSH密钥认证的原理和流程 4. SSH协议的使用 三、IEDA使用git …

webrtc推拉流 srs报错:DTLS_HANG DTLS: > Hang, done=0, version=-1, arq=0

执行了./objs/srs -c conf/rtc.conf 打开了srs的推拉流网页: 推流 拉流 srs报错如下: [2023-11-08 21:55:23.489][Warn][44992][8xvf4d62][104][DTLS_HANG] DTLS: Hang, done0, version-1, arq0 观看srs日志,在sdp offer,answer…

【postgresql】 代替mysql的if函数

在postgresql 中用 COALESCE 来代替mysql中的 if ; COALEASE 函数的语法如下: COALESCE(expression_1, expression_2, expression_3, ...) COALESCE 函数接受多个参数,并且返回第一个非空的参数值; 如果所有参数都为空值&…

[护网杯 2018]easy_tornado 1(两种解法!)

题目环境:发现有三个txt文本文件 /flag.txt/welcome.txt/hints.txt 依此点开 flag在/fllllllllllllag文件中 在hints.txt文件中发现md5计算 md5(cookie_secretmd5(filename)) 并且三个文件中都存在filehash(文件名被哈希算法加密32位小写) 猜…

java excel、word、PPT转换成pdf预览

先引入包:[lib下载地址](https://mp.csdn.net/mp_download/manage/download/UpDetailed)Controllerpublic AjaxResult fileToPdf(RequestBody VerifyCode url, HttpServletResponse response, HttpServletRequest request) throws IOException {String fileUrl req…

[pipe-自写管道] 强网拟态2023-water-ker

程序分析 保护当然都开了, 题目给了一次增加, 释放, 修改一字节堆块的能力, 这里释放堆块后没有将其指针置空从而导致了 UAF. 漏洞利用 这里的堆块大小为 512 字节并是 SLAB_ACCOUNT, 所以可以直接利用管道去构造自写管道从而构造任意读写系统, 详细见大佬博客:【CTF.0x08】D…

NSF服务器

1.简介 1.1 NFS背景介绍 NFS是一种古老的用于在UNIX/Linux主机之间进行文件共享的协议。它古老到你必须穿着白大补才能接近一台计算机的年代。在那个年代,所有的联网计算机都被认为是可信的,而不像现今这样,任何人都有多种多样方法能连接到你…

【解决】conda-script.py: error: argument COMMAND: invalid choice: ‘activate‘

运行conda activate base报错: 试了网上找到的解决方法都不行: 最后切换了一下terminal: 从powershell改回cmd(不知道为什么一开始手贱换成powershell) 就可以了

(一)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

Python - 利用 OCR 技术提取视频台词、字幕

目录 一.引言 二.视频处理 1.视频样式 2.视频截取 ◆ 裁切降帧 ◆ 处理效果 3.视频分段 三.OCR 处理 1.视频帧处理 2.文本识别结果 3.后续工作与优化 ◆ 识别去重 ◆ 多线程提效 ◆ 片头片尾优化 四.总结 一.引言 视频经常会配套对应的台词或者字幕&#xff0c…

4.HTML网页开发的工具

4. 网页开发的工具 4.1 快捷键 4.1.1 快速复制一行 快捷键:shiftalt下箭头(上箭头) 或者ctrlc 然后 ctrlv 4.1.2 选定多个相同的单词 快捷键: ctrld 4.1.3 添加多个光标 快捷键:ctrlalt上箭头(下箭头&…

CS224W6.1——介绍图神经网络GNN

之前我们讨论了一些节点嵌入技术,它们可以通过随机游走的过程学习与任务无关的特征。从这篇开始,我们介绍了令人兴奋的图神经网络技术,该技术基于图结构用多层非线性变换对节点特征进行编码。图神经网络在各种任务中表现出非凡的性能&#xf…

vue3响应式api

响应式api——compositon api setup: 不要再想this问题执行是在beforeCreated之前 beforeCreated:也就是创建了一个实例 created:挂载了数据 通过形参props接收,只读 以后所有代码都写到setup中 判断是否只读:isReadon…

Zabbix SNMPv3

一、Snmpv3简述 SNMPv3是Simple Network Management Protocol version 3(简单网络管理协议第三版)的缩写。它是一种网络管理协议,用于监控和管理网络中的设备、系统和应用程序。 相对于之前的版本,SNMPv3具有更强的安全性和扩展…

spring-cloud-stream

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

IIS前端服务和代理

前端服务可以用nginx和IIS开启,windows自带IIS方便管理一点。其实用docker的nginx更方便管理。 记录一下IIS的安装和开启服务过程 1、打开控制面板点击程序,再点击启用或关闭windows功能。 2、 点击左侧启用或关闭Windows功能。 3、把框框中全选上之后点…

便捷Benchmark.sh 自动匹配workload(自用)

​ 因为db_bench选项太多,而测试纬度很难做到统一(可能一个memtable大小的配置都会导致测试出来的写性能相关的的数据差异很大),所以官方给出了一个benchmark.sh脚本用来对各个workload进行测试。 该脚本能够将db_bench测试结果中…

CMOS介绍

1 二极管 2 CMOS 2.1 栅极、源极、漏极 2.2 内部结构 2.2 导电原理 - 原理:1.通过门级和衬底加一个垂直电场Ev,从而在两口井之间形成反形层2.如果加的电场足够强,反形层就可以把source(源极)和drain(漏极…

Doris学习--1、Doris简介、操作Doris、Doris架构(数据模型)

星光下的赶路人star的个人主页 心之所向,剑之所往 文章目录 1、Doris简介1.1 快速开始1.2 安装配置1.2.1 应知前提1.2.2 配置Doris1.2.2.0 配置前提1.2.2.1 配置FE(Frontend)1.2.2.2 启动FE1.2.2.3 连接FE1.2.2.4 停止FE1.2.2.5 配置BE&#…