笔者原本计划接着解读一篇有关NAS的文章的,奈何今天YOLOv4突然闪亮登场,经不住诱惑,那篇有关NAS的文章就只能后面再写了。好了,废话不多说,进入正题。 YOLO系列的网络都有一个共同的特点,即追求网络精度也追求网络速度,YOLOv4在此基础上又多了一个追求,那就是降低硬件要求。换句话说,作者希望只有一个GPU的“穷人”也能玩转YOLO,而不是像Google那样的“土豪”才能玩。那作者是如何做到的呢?简单来说就是通过大量实验对大量tricks带来的效果进行逐层分析、比对,最终得到一组最佳的trick组合。 现在很多网络要么是精度高、实时性差,要么是精度低、实时性高。而YOLOv4设计的理念是:鱼和熊掌我都要。 YOLOv4性能曲线: 上文说的都是YOLOv4的优点,但是个人觉得YOLOv4也不是完美的,因为它并不care网络的算力,所以YOLOv4对于要求低算力移动端来说可能并不友好(论文刚出,暂未看代码,也未实测算力,纯属个人感觉)。 所谓tricks,就是我们平时设计、训练、测试网络的技巧。本文引用的trick非常非常多,我在这里做个简单的总结,相信大家一定用得到。 二、 Bag-of-Specials:这类tricks是指网络设计或者后处理时使用的tricks,它们可以在增加较少的推理时间的同时,较大的提升网络精度。 为了方便大家查找tricks,已经将各个trick的链接都附在文章中了,不同的trick有不同的作用,作用相同的tricks之间也有着不同的区别。本文的重点是讲解YOLOv4,就不一一介绍上述众多tricks的功能和区别了,有兴趣的朋友可以点文中链接去详细了解。 目标检测网络,无论是one-stage还是two-stages、无论是anchor based还是anchor free、无论是在GPU上运行还是在CPU上运行,网络结构无外乎是由三个部分组成:backbone、neck、heads(做个小广告,如果大家想知道如何用NAS同时搜索这三个部分,可以看我的另一篇博客Hit-Detector,哈哈哈)。 那么YOLOv4是如何设计backbone、neck和heads的呢? 经过一系列的实验,最终选择SPP module和PANet中的path-aggregation neck作为YOLOv4的neck。 将YOLOv4的主体网络结构设计完以后,作者就开始设计YOLOv4的tricks了,要使用哪些tricks可以使YOLOv4延续YOLO家族的辉煌呢? YOLOv4使用的如此众多tricks着实挺让人吃惊的,YOLOv4也用实力证明了“tricks大法好”。接下来简单介绍一下,本文在tricks中的创新点: 通过Figure4、Figure5和Figure6很容易能get到作者是如何进行优化的,在此,我就不费口舌了。 前面说了那么多,终于到了可以看实验结果的时候了,废话不多说,直接上图: Table9: Table10: 除了上述介绍内容,本文还做了大量的实验去验证各个tricks的有效性,并且均给出了实验结果。YOLO家族从诞生那天起,就在不断地给我们带来各种惊喜,希望YOLOv4不是YOLO家族的最后一代网络,期待见到v5,v6…… 若文中有不足之处,还请各位大佬们指正!
简介:
前言:
文章概括:
主要贡献:
1、 设计了一个高精度、高实时性的网络,并且该网络只需要一个GPU就可以快速训练;
2、 验证了Bag-of-Freebies和Bag-of-Specials对目标检测的影响很大(现在不知道Bag-of-Freebies和Bag-of-Specials是什么意思也没关系,后面会做解释);
3、 优化了一些tricks,使其可以在单GPU上进行训练。
从下图可以看到,YOLOv4将网络精度和网络实时性之间的balance做的非常好。
Tricks介绍:
文章将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
IOU loss
GIOU loss
DIOU/CIOU loss
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
Soft-NMS
DIoU NMSYOLOv4设计:
1、 backbone的选择:为了使网络速度更快、优化并行计算,作者在卷积层使用group(1-8)比较小的卷积,并将ResNeXt50、Darknet53分别与Cross-Stage-Partial-connections(CSP)结合,组成了CSPResNeXt50和CSPDarknet53。由于实验证明CSPResNeXt50更适合于分类网络,CSPDarknet53更适合于检测网络,因此YOLOv4的backbone选择CSPDarknet53。
2、 neck的选择:这部分主要是考虑如何扩大感受野以及如何更好的进行特征融合。对于检测网络来说,主要有三个要求:
3、head的选择:沿用YOLOv3的head。
作者通过一些先验知识和大量实验,最终选择了如下tricks组合:
1)CutMix and Mosaic data augmentation(本文创新的数据增强)
2)DropBlock regularization
3)Class label smoothing
1)Mish activation
2)Cross-stage partial connections (CSP)
3)Multiinput weighted residual connections (MiWRC)
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
1)Mish activation
2)SPP-block
3)SAM-block(本文优化,提高训练和推理速度)
4)PAN path-aggregation block(本文优化,提高训练和推理速度)
5)DIoU-NMS
本文提出的Mosaic数据增强的方法,是将4张训练图片混合在一起然后输入网络,这样一来四张图片的信息会有融合(感觉就是CutMix的升级版)。
本文提出的SAT也是一种数据增强的方法,分成两阶段完成:
在第一阶段,神经网络会更改原始图像,而不是网络权重。以这种方式,神经网络对其自身执行对抗攻击,从而改变原始图像,以便造成一种图像上没有我们想要关注的目标的假象(说的这么绕,其实就是在增加样本的训练难度)。
在第二阶段,训练神经网络以正常方式检测此修改图像上的物体。
本文分别对SAM、PAN和BN做了优化,分别如Figure4、Figure5和Figure6所示:
除此之外,YOLOv4还通过遗传算法对超参进行了优化,NAS就是擅长做这种超参搜索、网络搜索的事情哦,快来关注我,一起学NAS啦,哈哈哈!实验结果:
Table8:
其他:
原创码字不易,若转载,请注明出处!
欢迎各位关注我的公众号,一个专注于NAS的公众号,我会持续跟进学术界NAS领域的最新进展,每周更新一篇新Paper,公众号刚刚起步,希望各位多多支持!
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算