YOLOv4论文笔记

1.introduction:

关注于建立一个能够实时操作和在传统gpu上的cnn,只需要一块gpu。贡献主要包括:

1设计了一个目标检测detector,使能够在1080ti训练非常快和精确的目标检测器。

2验证了在检测器训练阶段无痛涨点和特殊涨点的方法

3修改了这些方法,使他们更有效和适合单gpu训练。

2.related work

2.1目标检测方法

检测器主要包括两部分:backbone(vgg,resnet,densenet),head部分分为两类:one-stage,two-stage,最近一些层开始从不同的stage收集feature map,把这些层称为neck。通常neck包括几个bottom-up路径和几个top-down路径(fpn,pan,bifpn,nas-fpn)

综上包含:
在这里插入图片描述

2.2无痛涨点(bag of freebies)翻译为:免费赠送的:

这类训练方法能够目标检测器在不增加推理成本的前提下获得好的精度,将这类只改变训练策略,或者只增加训练成本的方法称为:bag of freebies。

最长采用的是数据增强,目的是为了增加输入图片的可变性,所以目标检测器能够具有更好的鲁棒性。例如光度扭曲和几何扭曲。包括亮度,对比度,饱和度,随机缩放,裁剪,翻转,旋转。以上是传统的,一些学者致力于目标遮挡,例如随机擦除,cutout随机选择一张图中的方形区域,然后填充随机或者0的互补值,hide-and-seek,grid mask随机或者选择一张图中几个区域,然后把他们全部替换为0.如果相似的概念用在feature map上就是dropout,dropconnect,dropblock。此外还有一起用几张图,如mixup使用两张图用不同的系数比例进行乘法和重叠,然后调整重叠区域的标签。cutmix将裁剪后的图像覆盖到其他图像上,根据混合区域的size调整标签。此外还有transfer gan能够减少cnn学到的纹理偏见。

不同于上面,一些方法为了解决数据集中语义分布的偏差,一个重要的问题是:不同类之间data imbalance,这个问题在two-stage中通常用难负样本挖掘,或者在线难样本挖掘,但不适用于one-stage,因此focal loss被用于解决这个问题。one-hot hard representation问题,label smoothing被提出将hard label转化成soft label来训练。

最后是bbox的回归函数,之前是用mse(均方差)来处理bbox的几个坐标(xywh),但是这样是将各个坐标当做独立的值,但是**事实上没有考虑到对象的完整性,**于是就有了iouloss,giou loss, diou loss ,ciou loss。

2.3 bag of special

对于只增加一点推理成本,但是能极大改善目标检测精度的插件或者后处理方法,我们称为bag of special。插件是用于增强确定的属性,例如扩大感受野,注意力机制,或者增强特征集成能力。后处理是一种删选模型预测结果的方法

一般的增强感受野的方法有SPP,ASPP,RFB

注意力模块主要分为channel wise attention 和point wise attention。这两类的代表是:Squeeze-and-Excitation(SE)和Spatial Attention Module (SAM)

特征集成:早期用的是跳跃连接(skip connection),hyper-column.随着多尺度预测方法fpn的提出,许多集成了 特征金字塔的轻量化模型被提出,例如SFAM,ASFF,BiFPN。

激活函数:一个好的激活函数能够让梯度更有效的传播,通知也会使用额外的计算成本,激活函数有:RELU,LRELU,PRELU,RELU6,SELU,SWISH,hard-swish,mish。

后处理:一般使用NMS,nms优化的方法和优化目标函数的方法是一致的,nms方法有:greedy NMS,soft NMS ,DIOU NMS

3,方法

最基本的是提高神经网络在生产系统运行速度优化并行计算,而不是降低计算量理论指标(bflop),我们提出两个实时神经网络的观点:

对于gpu在卷积层使用小的组(1-8):CSPResNeXt50 / CSPDarknet53

对于vpu,使用组卷积,但是避免使用Squeeze-and-excitement (SE) blocks,具体包括EfficientNet-lite / MixNet / GhostNet / MobileNetV3

3.1体系结构选择

目标是寻找输入像素和卷积层数量,参数数量,layer output优化平衡

另一个目标是选择额外的block来增加感受野和参数集成(为了不同的检测层从不同的backbone level)

对分类最优的模型通常不是对检测最优的,检测器需要的是:

更高的分辨率输入;

更多层(更大的感受野覆盖增大的输入size)

更多参数是为了检测一个图片中的不同size的多个目标。

不同的感受野的影响:直到目标size,能够看到整个目标;直到网络size,能够看到目标周围的背景;超出网络规模,增大图像点与最后激活的连接数量。

最后选择 CSPDarknet53 backbone, SPP additionalmodule, PANet path-aggregation neck,。

3.2选择bof和bos,为了改善检测训练,cnn通常使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vECXlrrc-1633691944716)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e3968de9-661b-4ab4-96da-a446e5ad4619/Untitled.png)]

因为分析的原因,排除prelu,selu(difficult),rellu6,选择dropblock作为正则化方法,不考虑syncbn

3.3增加的改善

为了能在一个gpu上训练,我们设计了改善:

新的数据增强方法:Mosaic, Self-Adversarial Training (SAT)

在应用遗传算法的时候选择最优的超参数

修改了一些存在的方法:SAM, modified PAN, and Cross mini-Batch Normalization(CmBN)

3.4yolov4的细节:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sBCWAepR-1633691944717)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e4966f40-8031-4808-ac3b-5b8ebc4564f0/Untitled.png)]

对于spp:

原本的spp:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WgwBGn9b-1633691944719)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c44458e3-38b2-463f-a05b-f0220fd9e34e/Untitled.png)]

本文的spp:

SPP网络用在YOLOv4中的目的是增加网络的感受野。实现是对layer107进行 5 × 5 、 9 × 9 13 × 13 的最大池化,分别得到layer 108,layer 110和layer 112,完成池化后,将layer 107,layer 108,layer 110和layer 112进行concatenete,连接成一个特征图layer 114并通过 1 × 1 降维到512个通道。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-64YdmeCT-1633691944721)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/54bcbf33-5559-452d-95e3-2b275b80f9e1/Untitled.png)]

对pan做了如下更改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sWkG7vvr-1633691944722)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2b789769-c477-4c6f-8d31-994640354cfb/Untitled.png)]

对sam(spatial attention module )(空间注意力机制)做了如下更改:

在这里插入图片描述

**CutMix:**对一对图片做操作,随机生成一个裁剪框Box,裁剪掉A图的相应位置,然后用B图片相应位置的ROI放到A图中被裁剪的区域形成新的样本,ground truth标签会根据patch的面积按比例进行调整,比如0.6像狗,0.4像猫,计算损失时同样采用加权求和的方式进行求解。

Cutout是直接去除图像的一个区域,这迫使模型在进行分类时不能对特定的特征过于自信。然而,图像的一部分充满了无用的信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zMjdCNa-1633691944723)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/352056c8-7326-400e-a546-72524494c723/Untitled.png)]

Mosaic是一种将4张训练图像合并成一张进行训练的数据增强方法(而不是CutMix中的2张)。这增强了对正常背景(context)之外的对象的检测,丰富检测物体的背景。此外,每个小批包含一个大的变化图像(4倍),因此,减少了估计均值和方差的时需要大mini-batch的要求,降低了训练成本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BRuCA9xf-1633691944724)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/03d685c3-4287-445e-98b8-55a04ea37133/Untitled.png)]

dropblock正则化:DropBlock方法的引入是为了克服Dropout随机丢弃特征的主要缺点,Dropout被证明是全连接网络的有效策略,但在特征空间相关的卷积层中效果不佳。DropBlock技术在称为块的相邻相关区域中丢弃特征。

类标签平滑

4实验

测试了不同的训练改善策略在imagenet上的分类精度,在coco上的测试精度。

4.1实验建立:

一些超参数的设置。只试验了一个gpu来训练,对于一些优化多gpu的策略,没有使用。

4.2不同特征在分类训练上的影响:

在这里插入图片描述

4.3不同特征对检测训练的影响:

本文显著的增大了BOF的列表(能够增加检测精度,而不影响fps),包括:

S:消除函数的网格敏感,yolov3中用的是bx = sigmoid(tx)+cx; by = sigmoid(ty)+cy来表示目标坐标,极端的tx才可以让bx接近cx或者cx+1(目的)。本文通过给sigmoid乘一个超过1.0的因子,就可以更容易的达到接近cs,cs+1的目的。

M:mosaic数据增强,使用四张图片。

IT使用多个anchor为一个gtiou>iou阈值

GA:在前百分之十的时期为选择的优化超参数使用遗传算法

LS:class label smooth:using class label smoothing for sigmoid activation

CBN:cmbn-使用Cross mini-Batch Normalization

CA :余弦退火机制;改变学习率,首先,较大的学习率会以较慢的速度减小。然后在中途时,学习的减小速度会变快,最后学习率的减小速度又会变得很慢。

DM:动态化的mini batch size,因为用到了随机size,当是小像素的时候自动增加minibatchsize的时候

OA:使用优化的anchor

GIoU, CIoU, DIoU, MSE:使用不同的loss算法对于bbox回归。

此外还实验了很多bos包括PAN, RFB, SAM, Gaussian YOLO (G), andASFF,效果最好的是spp pan,sam

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值