【论文笔记】YOLOv4: Optimal Speed and Accuracy of Object Detection
简介:
笔者原本计划接着解读一篇有关NAS的文章的,奈何今天YOLOv4突然闪亮登场,经不住诱惑,那篇有关NAS的文章就只能后面再写了。好了,废话不多说,进入正题。
论文链接
代码链接
本文链接
前言:
YOLO系列的网络都有一个共同的特点,即追求网络精度也追求网络速度,YOLOv4在此基础上又多了一个追求,那就是降低硬件要求。换句话说,作者希望只有一个GPU的“穷人”也能玩转YOLO,而不是像Google那样的“土豪”才能玩。那作者是如何做到的呢?简单来说就是通过大量实验对大量tricks带来的效果进行逐层分析、比对,最终得到一组最佳的trick组合。
文章概括:
现在很多网络要么是精度高、实时性差,要么是精度低、实时性高。而YOLOv4设计的理念是:鱼和熊掌我都要。
主要贡献:
1、 设计了一个高精度、高实时性的网络,并且该网络只需要一个GPU就可以快速训练;
2、 验证了Bag-of-Freebies和Bag-of-Specials对目标检测的影响很大(现在不知道Bag-of-Freebies和Bag-of-Specials是什么意思也没关系,后面会做解释);
3、 优化了一些tricks,使其可以在单GPU上进行训练。
YOLOv4性能曲线:
从下图可以看到,YOLOv4将网络精度和网络实时性之间的balance做的非常好。
上文说的都是YOLOv4的优点,但是个人觉得YOLOv4也不是完美的,因为它并不care网络的算力,所以YOLOv4对于要求低算力移动端来说可能并不友好(论文刚出,暂未看代码,也未实测算力,纯属个人感觉)。
Tricks介绍:
所谓tricks,就是我们平时设计、训练、测试网络的技巧。本文引用的trick非常非常多,我在这里做个简单的总结,相信大家一定用得到。
文章将tricks分为两大类:
一、 Bag-of-Freebies:这类tricks是指在网络训练时使用到的trick,只增加训练的时长,但是不影响推理的时长。
Bag-of-Freebies又细分为几类:
- 数据增强
Random erase
CutOut
Hide-and-seek
Grid mask
DropOut
DropConnect
DropBlock
MixUp
CutMix
GAN - 样本均衡
Hard negative example mining
Online hard example mining
Focal loss - 软标签
Label smooth
Label Refinement - Bbox的回归
IOU loss
GIOU loss
DIOU/CIOU loss
二、 Bag-of-Specials:这类tricks是指网络设计或者后处理时使用的tricks,它们可以在增加较少的推理时间的同时,较大的提升网络精度。
Bag-of-Freebies又细分为几类:
- 感受野
SPP
ASPP
RFB - 注意力机制
SE block
SAM - 特征融合
Skip connection
Hyper-column
SFAM
ASFF
BiFPN(NAS搜索出来的FPN结构) - 激活函数
ReLU
LReLU
PReLU
ReLU6
SELU
Swish
Hard-Swish
Mish - NMS(非极大值抑制)
Soft-NMS
DIoU NMS
为了方便大家查找tricks,已经将各个trick的链接都附在文章中了,不同的trick有不同的作用,作用相同的tricks之间也有着不同的区别。本文的重点是讲解YOLOv4,就不一一介绍上述众多tricks的功能和区别了,有兴趣的朋友可以点文中链接去详细了解。
YOLOv4设计:
目标检测网络,无论是one-stage还是two-stages、无论是anchor based还是anchor free、无论是在GPU上运行还是在CPU上运行,网络结构无外乎是由三个部分组成:backbone、neck、heads(做个小广告,如果大家想知道如何用NAS同时搜索这三个部分,可以看我的另一篇博客Hit-Detector,哈哈哈)。
那么YOLOv4是如何设计backbone、neck和heads的呢?
1、 backbone的选择:为了使网络速度更快、优化并行计算,作者在卷积层使用group(1-8)比较小的卷积,并将ResNeXt50、Darknet53分别与Cross-Stage-Partial-connections(CSP)结合,组成了CSPResNeXt50和CSPDarknet53。由于实验证明CSPResNeXt50更适合于分类网络,CSPDarknet53更适合于检测网络,因此YOLOv4的backbone选择CSPDarknet53。
2、 neck的选择:这部分主要是考虑如何扩大感受野以及如何更好的进行特征融合。对于检测网络来说,主要有三个要求:
- 提高网络输入的分辨率,可以提升检测小目标的性能;
- 更多的网络层,可以扩大网络的感受野,以便网络可以hold大分辨率的输入;
- 更多的网络参数,可以让网络更好的检测图像中不同尺寸的目标
经过一系列的实验,最终选择SPP module和PANet中的path-aggregation neck作为YOLOv4的neck。
3、head的选择:沿用YOLOv3的head。
将YOLOv4的主体网络结构设计完以后,作者就开始设计YOLOv4的tricks了,要使用哪些tricks可以使YOLOv4延续YOLO家族的辉煌呢?
作者通过一些先验知识和大量实验,最终选择了如下tricks组合:
- Bag of Freebies (BoF) for backbone:
1)CutMix and Mosaic data augmentation(本文创新的数据增强)
2)DropBlock regularization
3)Class label smoothing - Bag of Specials (BoS) for backbone:
1)Mish activation
2)Cross-stage partial connections (CSP)
3)Multiinput weighted residual connections (MiWRC) - Bag of Freebies (BoF) for detector:
1)CIoU-loss
2)CmBN
3)DropBlock regularization
4)Mosaic data augmentation
5)Self-Adversarial Training(本文创新的训练方式)
6)Eliminate grid sensitivity
7)Using multiple anchors for a single ground truth
8)Cosine annealing scheduler
9)Optimal hyperparameters
10)Random training shapes - Bag of Specials (BoS) for detector:
1)Mish activation
2)SPP-block
3)SAM-block(本文优化,提高训练和推理速度)
4)PAN path-aggregation block(本文优化,提高训练和推理速度)
5)DIoU-NMS
YOLOv4使用的如此众多tricks着实挺让人吃惊的,YOLOv4也用实力证明了“tricks大法好”。接下来简单介绍一下,本文在tricks中的创新点:
本文提出的Mosaic数据增强的方法,是将4张训练图片混合在一起然后输入网络,这样一来四张图片的信息会有融合(感觉就是CutMix的升级版)。
本文提出的SAT也是一种数据增强的方法,分成两阶段完成:
在第一阶段,神经网络会更改原始图像,而不是网络权重。以这种方式,神经网络对其自身执行对抗攻击,从而改变原始图像,以便造成一种图像上没有我们想要关注的目标的假象(说的这么绕,其实就是在增加样本的训练难度)。
在第二阶段,训练神经网络以正常方式检测此修改图像上的物体。
本文分别对SAM、PAN和BN做了优化,分别如Figure4、Figure5和Figure6所示:
通过Figure4、Figure5和Figure6很容易能get到作者是如何进行优化的,在此,我就不费口舌了。
除此之外,YOLOv4还通过遗传算法对超参进行了优化,NAS就是擅长做这种超参搜索、网络搜索的事情哦,快来关注我,一起学NAS啦,哈哈哈!
实验结果:
前面说了那么多,终于到了可以看实验结果的时候了,废话不多说,直接上图:
Table8:
Table9:
Table10:
其他:
除了上述介绍内容,本文还做了大量的实验去验证各个tricks的有效性,并且均给出了实验结果。YOLO家族从诞生那天起,就在不断地给我们带来各种惊喜,希望YOLOv4不是YOLO家族的最后一代网络,期待见到v5,v6……
若文中有不足之处,还请各位大佬们指正!
原创码字不易,若转载,请注明出处!
欢迎各位关注我的公众号,一个专注于NAS的公众号,我会持续跟进学术界NAS领域的最新进展,每周更新一篇新Paper,公众号刚刚起步,希望各位多多支持!
【论文笔记】YOLOv4: Optimal Speed and Accuracy of Object Detection相关推荐
- 论文笔记-YOLOv4: Optimal Speed and Accuracy of Object Detection
论文地址:https://arxiv.org/pdf/2004.10934v1.pdf code:https://github.com/AlexeyAB/darknet. 摘要 有大量的技巧可以提高C ...
- 【读点论文】YOLOv4: Optimal Speed and Accuracy of Object Detection,讲明目标检测结构,分析先进的涨点tricks,实现一种精度与速度的平衡
YOLOv4: Optimal Speed and Accuracy of Object Detection Abstract 据说有大量的特征可以提高卷积神经网络(CNN)的准确性.需要在大型数据集 ...
- 论文翻译YOLOv4: Optimal Speed and Accuracy of Object Detection YOLOv4:目标检测的最佳速度和精度 论文中文翻译
摘要 有大量的特征被认为可以提高卷积神经网络(CNN)的精度.需要在大型数据集上对这些特性的组合进行实际测试,并对结果进行理论验证.某些特性在特定的建模中起决定性作用,而在特定的强制确定问题中起决定性 ...
- 【论文翻译】YOLOv4: Optimal Speed and Accuracy of Object Detection
<YOLOv4: Optimal Speed and Accuracy of Object Detection> 链接地址 发表会议: CVPR 2020 Alexey Bochkovsk ...
- Paper:《YOLOv4: Optimal Speed and Accuracy of Object Detection》的翻译与解读
Paper:<YOLOv4: Optimal Speed and Accuracy of Object Detection>的翻译与解读 目录 YOLOv4的评价 1.四个改进和一个创新 ...
- AI实战: YOLOv4: Optimal Speed and Accuracy of Object Detection
前言 YOLOv4: Optimal Speed and Accuracy of Object Detection [Submitted on 23 Apr 2020] [是的,你没看错,2020年0 ...
- YOLOv4阅读笔记(附思维导图)!YOLOv4: Optimal Speed and Accuracy of Object Detection
今天刷看到了YOLOv4之时,有点激动和兴奋,等了很久的YOLOv4,你终究还是出现了 论文地址:https://arxiv.org/pdf/2004.10934.pdf GitHub地址:https ...
- 论文精读:YOLOv4: Optimal Speed and Accuracy of Object Detection
Abstract 大量的特征据说可以提高卷积神经网络(CNN)的精度.需要在大数据集上对这些特征的组合进行实际测试,并对结果进行理论证明.有些特性只适用于某些模型,只适用于某些问题,或仅适用于小规模 ...
- 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》
深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4<Optimal Speed and Accuracy of Object Detection> Abstract 摘要 1. In ...
最新文章
- CentOS 7 上安装 redis3.2.3安装与配置
- 【统计学习】假设检验
- [杂记]对RSA算法的数学原理的一点思考
- oracle for循环
- [链接]最短路径的几种算法[迪杰斯特拉算法][Floyd算法]
- windows故障转移群集和mysql_Windows 2016 无域故障转移群集部署方法 超详细图文教程...
- 宁夏大学新华学院08计算机马宁,公 示
- 最强战队出炉,2020腾讯广告算法大赛圆满落幕
- 快速排序查询第k个数
- 【实物】端到端自动驾驶搭建教程(一)附完整资料
- Windows7与Window2008 64位IIS7上面配置操作Excel
- mysql 复制权限不够_解决不能mysqldump备份权限不够的问题
- 最新的windows xp sp3序列号(绝对可通过正版验证)
- linux常用命令,亲测可用
- matlab 线性拟合polyfit_Matlab实现线性回归(直线拟合)
- chromium代码结构
- solidworks齿轮编辑_如何应用solidworks进行齿轮工程图绘制
- 微信小程序之获取当前位置附近的美食、酒店、娱乐、超市等,并显示标记
- PHPMyWind支持Word粘贴
- Linux 自定义回收站
热门文章
- 计算机学院毕业礼物,“风里雨里,我们在这里等你“计算机学院举行毕业礼物赠予仪式...
- 人形机器人视觉处理——垃圾分类
- 游戏的服务器号怎么查询网站,游戏服务器状态查询网站
- MODIS数据所有产品介绍与下载地址
- android联系人的简易通讯录
- 支付宝Html授权,网页版的支付宝授权登录(vue+java)
- 基于matlab的步进电机转速控制仿真,matlab步进电机转速控制仿真(课程设计).doc
- 几个不成熟的理由建议弟兄姊妹们用Gmail (转自立水桥牧养小组邮箱)
- O-1 4GB+的ISO镜像刻录
- NET Core是.NET Framework的升级版吗