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.hqwc.cn/news/168338.html

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

相关文章

Android 图层列表 、 LayerDrawable 、 layer-list \ 改变 seekbar thumb 滑块 的颜色

android 官网 &#xff1a; 图层列表 LayerDrawable / layer-list LayerDrawable 是管理其他可绘制对象数组的可绘制对象。列表中的每个可绘制对象均按照列表顺序绘制。列表中的最后一个可绘制对象绘于顶部。 每个可绘制对象均由单个 <layer-list> 元素内的 <item>…

财税服务展示预约小程序的作用是什么

财税财政往往困扰着很多公司&#xff0c;尤其是公司里没有相应职员或工作压力大的情况下&#xff0c;不少商家就会寻找代理记账、审计服务、会计代理等服务的机构。 对财政服务代理机构&#xff08;会计公司&#xff09;来说&#xff0c;市场企业多而广&#xff0c;理论上来说…

酷柚易汛ERP-客户管理操作指南

1、应用场景 对客户信息进行管理&#xff0c;可新增客户、设置客户等级、联系人信息、银行账户和销售人员等信息&#xff0c;方便开单时自动匹配销售信息。 2、主要操作 2.1 新增客户 打开【资料】-【客户管理】&#xff0c;点击【新增】。 在页面输入客户信息、联系人地址…

105.am40刷机(linux)折腾记1-前期的准备工作1

前段时间在某鱼上逛的时候&#xff0c;发现一款3399的盒子只要150大洋&#xff0c;内心就开始澎拜&#xff0c;一激动就下手了3台&#xff0c;花了450大洋&#xff08;现在想想&#xff0c;心都碎了一地&#xff09;。 然后自己又来来回回折腾了几天&#xff0c;目前能跑上fire…

【Python 千题 —— 基础篇】菜品的价格

题目描述 题目描述 食堂今天准备了很多好吃的菜。“beef” 12 元一份&#xff1b;“rice” 1 元一份&#xff1b;“fish” 8 元一份&#xff1b;其它菜品 5 元一份。请你根据输入的字符串&#xff0c;使用 if-elif-else 语句判断该菜品需要花费多少钱。 输入描述 输入一个菜…

flink1.18.0 sql-client报错

报错 Flink SQL> select * from t1; [ERROR] Could not execute SQL statement. Reason: org.apache.flink.table.api.ValidationException: Could not find any factory for identifier kafka that implements org.apache.flink.table.factories.DynamicTableFactory in t…

小白学爬虫:通过关键词搜索1688商品列表数据接口|1688商品列表数据接口|1688商品列表数据采集|1688API接口

通过关键词搜索1688商品列表数据接口可以使用1688开放平台提供的API接口实现。以下是使用关键词搜索商品列表数据的基本步骤&#xff1a; 1、注册并获取AppKey。 2、构造请求参数&#xff0c;包括搜索关键词、页码、每页条数等。 3、通过API接口链接&#xff0c;将请求参数发送…

数据的属性与数据集,相似度,数据的质量,OLAP

数据的属性与数据集&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sq…

制造企业如何做好进销存管理工作?

本文你将了解&#xff1a;什么是进销存管理系统&#xff1f;国内制造信息化的发展现状如何&#xff1f;进销存管理系统的功能有哪些&#xff1f; 接下来搭建进销存管理系统教学中用到的图片和系统都来自简道云的进销存管理系统 这也是我们公司目前正在用的进销存管理系统&…

YOLOv8-seg改进:复现HIC-YOLOv5,HIC-YOLOv8-seg助力小目标分割

🚀🚀🚀本文改进:HIC-YOLOv8-seg:1)添加一个针对小物体的额外预测头,以提供更高分辨率的特征图2)在backbone和neck之间采用involution block来增加特征图的通道信息;3)在主干网末端加入 CBAM 的注意力机制; 🚀🚀🚀HIC-YOLOv8-seg小目标分割检测&复杂场景…

uniapp小程序接入腾讯云【增强版人脸核身接入】

文档地址&#xff1a;https://cloud.tencent.com/document/product/1007/56812 企业申请注册这边就不介绍了&#xff0c;根据官方文档去申请注册。 申请成功后&#xff0c;下载【微信小程序sdk】 一、解压sdk&#xff0c;创建wxcomponents文件夹 sdk解压后发现是原生小程序代…

CSRF(跨站请求伪造)攻击演示

目录 CSRF(跨站请求伪造)攻击演示CSRF 是什么CSRF 演示项目代码CSRF 演示过程服务启动演示 CSRF(跨站请求伪造)攻击演示 CSRF 是什么 CSRF&#xff08;Cross-Site Request Forgery&#xff09;跨站请求伪造&#xff0c;是一种网络安全攻击&#xff0c;其目标是利用被攻击者在…