YOLO V4论文解读

2023-11-08

YOLO V4论文解读

YOLO V4论文地址

一、YOLOV3回顾

Backbone: darknet53
Anchors boxes
Batch normalization
Multi-scale
取消了pooling层,改用卷积核步长进行上采样
Logistics 代替了 softmax

二、YOLOV4中

作者将很多的新方法融合到一起,具体包括:
Weighted-Residual-Connections
Cross-Stage-Partial-connections
Cross mini- Batch Normalization
Self-adversrial-training
Mish activation
Mosaic data augmentation
DropBlock regularization
CloU loss

在这里插入图片描述
AP:代表的是精度
FPS:代表的是检测速度
YOLOV4的精度比YOLOV3提高了很多

Input:图像或者是经过处理的图像
BackBone:特征提取网络
Neek:FPN(yolov3)、PANet(yolov4)

三、Bag of freebies

改变培训策略,或者只会增加培训成本的方法,对测试不影响

数据扩充:

1、光度畸变:调整图像的亮度、对比度、色调、饱和度和噪声
2、几何畸变:加入随机缩放、剪切、翻转和反旋转

模拟对象遮挡:

1、	random erase, CutOut :可以随机的选择图像中的矩形区域,并且填充一个随机的或者是互补的零值
2、	hide-and-seek、grid mask:随机的或者是均匀的选择图像中的多个矩形区域,并将其全部替换成0 

feature map: (在特征图上做增强)
DropOut/DropConnect和DropBlock

结合多幅图像进行数据扩充:

MixUP、 CutMix Style Transfer GAN

CutMix (Mosaic data augmentation)

解决类别不平衡:

hard negative example mining (只适用两阶段)
gnline hard example mining (只适用两阶段)
focal loss

label smoothing

bbox:

1、	loU_ loss
2、	GloU_ loss
3、DIoU_ loss
4、CIoU_ loss(yolov4采用的)

Yolov4-use:

1、CutMix and Mosaic data augmentation. 
2、DropBlock regularization. 
3、Class label smoothing
4、CloU-loss. 
5、CmBN
6、Self-Adversarial Training
7、Eliminate grid sensitivity
8、Using multiple anchors for a single ground truth
9、Cosine annealing scheduler
10、Optimal hyperparameters(通过遗传算法找到最优的参数)
11、Random training shapes。

四、Bag of specials

只会增加少量推理成本单却能显著提高对象检测精度的plugin moduled 和 post-processing methods

1、 enhance receptive field(扩充接受阈): SPP, ASPP, RFB

2、 attention module:

1、	Squeeze-and-Excitation (SE):可以改善resnet50在分类任务上提高1%精度,但是会增加GPU推理时间10%。
2、	Spatial Attention Module (SAM):可以改善resnet50在分类任务上提高0.5%精度,并且不增加GPU推理时间。(yolov4采用)

3、feature integration:(特征集成)

早期使用skip connection、hyper-column。 随着FPN等多尺度方法的流行,提出了许多融合不同特征金字塔的轻量级模型。SFAM、 ASFF、 BiFPN。SFAM的主要思想是利用SE模块对多尺度拼接的特征图进行信道级配重权。ASFF使用softmax作为点向水平重加权,然后添加不同尺度的特征映射。BiFPN提出了多输入加权剩余连接来执行按比例加权的水平重加权,然后加入不同比例的特征映射。

4、activation function:

1、ReLU解决了tanh和sigmoid的梯度消失问题。
2、LReLU,PReLU, ReLU6, SELU, Swish ,hard-Swish ,Mish 其中Swish和Mish都是连续可微的函数。

5、post-processing method:

1、Nms: c*p
2、soft-nms:解决对象的遮挡问题
3、DIoU nms:将中心点分布信息添加到BBox筛选过程中

YOLOv4 - use:

1、Mish activation
2、CSP
3、MiWRC(简单的理解就是残差连接)
4、SPP-block.
5、SAM
6、PAN
7、DIoU-NMS

五、Selection of architecture (网络结构的选择)

在ILSVRC2012XImageNet)数据集上的分类任务,CSPResNext50要比CSPDarknet53好得多。然而,在COCO数据集. 上的检测任务,CSPDarknet53比CSPResNext50更好。
CSP是一种网络结构,可以移植在各种网络上

backbone: CSPDarknet53
additional module: SPP
neck: PANet
head: YOLOv3 (anchor based)

六、Additional improvements

为了使检测器更适合于单GPU.上的训练,做了如下补充设计和改进:
1、 引入了一种新的数据增强方法Mosaic和自对抗训练(SAT)
2、在应用遗传算法的同时选择最优超参数
3、修改了一些现有的方法,如: SAM, PAN, CmBN

七、细节

1、 Mosaic data augmentation(马赛克数据增强)

在这里插入图片描述
对于Mixup可以这样理解:
在COCO数据集上,总共有80个类别,如果有一个物体,那么这个类别就制1, 其他部位全部制0.但是对于这个Mixup,在猫上和狗上类别分别制0.5,其他部位全部制0.
CutOut:遮挡
CutMix:狗的面积占百分之六十,所以狗的标签概率是0.6,猫的面积占了百分之四十,所以猫的标签概率是0.4.另外78个类别是0.
在这里插入图片描述
马赛克数据增强:每张图片做四个类别,每个类别根据图像所占的面积大小进行分配标签概率

2、 DropBlock regularization

在这里插入图片描述
Dropout:(b)图中的“x”,代表的是扔掉的像素,就是没有激活的像素,但是网络还是会从dropout掉的激活单元附近学习到同样的信息的

Dropblock:如(c)图,把整块信息dropout掉,就不能学习到这片区域的信息了,可能学到边缘的信息。通过dropout掉一部分相邻的整片的区域(比如头和脚),网络就会去注重学习狗的别的部位的特征,来实现正确分类,从而表现出更好的泛化。

3、 Class label smoothing

让标签变得平滑一点,提升精度,更好的训练模型

[0, 0, 1]>  [0.01, 0.01, 0.98]

公式:[…]·(1-a) + a/n·[1,1…]
一般的时候, a设置为0.05 ,n是类别数

4、 CIou-Loss

在这里插入图片描述
当真实框和预测框没有交集的时候,也就是如下图:
在这里插入图片描述
Liou的值=1,是常数,所以常数的导数为0,所以梯度消失。为了解决梯度消失的问题,

在这里插入图片描述
引入了GIou-Loss,相当于加入了一个惩罚项

在这里插入图片描述
Diou:加入了两个框的中心点位置的约束,c是对角线的长度,分子是两个中心点的平方

在这里插入图片描述
Ciou:是在Diou的基础上乘上了α*v,效果有时候和Diou差不多
在这里插入图片描述
在这里插入图片描述
v:是用来度量长宽比的相似性的
α:权重函数
在这里插入图片描述

5、 DIou-soft NMS

在这里插入图片描述
M是置信度最高的框的四个坐标 ,Bi是其他的框
在原始的NMS中,IoU度量被用来抑制冗余检测盒,其中重叠区域是唯一的因素,
在有遮挡的情况下常常产生错误的抑制。DIoU-NMS
不仅考虑了检测区域的重叠,而且还考虑了检测区域间的中心点距离。
在这里插入图片描述

6、 CmBN

在这里插入图片描述
在这里插入图片描述
一般的时候,当这个batchsize比较小的时候,我们的精度是会降低的,训练的时候,精度越来越好,CBN就是在我们batchsize比较小的时候,达到比较高的精度
作者这样做的原因就是,为了使检测器更加的适合于单GPU上训练

7、 Self-Adversarial Training(自对抗训练)

就是把我们的对抗样本训练进去,相当于在做数据增强
对抗样本的定义:以图像样本为例,在原样本上加入一些轻微的扰动,使得在人眼分辨不出差别的情况下,诱导模型进行错误分类。

在这里插入图片描述

8、 Elminate grid sensitivity(网格消除敏感)

在这里插入图片描述
通过将sigmoid乘以一个超过1.0的因子来解决这个问题

9、 Cosine annealing scheduler (模拟余弦退火)

针对学习率的,改变学习率的一种方式

10、 Using multiple anchors for a single ground truth

11、 Random training shapes (随机多尺度的训练)

12、 Mish activation

公式:

Mish=x * tanh(ln(1+e^x))

理论上对负值的轻微允许允许更好的梯度流,而不是像ReLU中那样的硬零边界。
平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。

在这里插入图片描述

13、 CSP

CSPNet可以大大减少计算量,提高推理速度和准确性
在这里插入图片描述

14、 SPP

不管输入尺寸是怎么样的,SPP层可以产生固定大小的输出,用于多尺度的训练
在这里插入图片描述

15、 SAM-block

不仅在通道上加了注意力机制,在空间上也加了注意力机制

16、 PAN

PAN基于FPN和Mask RCNN模型之上提出了三点创新:
1、PANet改进了主干网络结构,加强了特征金字塔的结构,缩短了高低层特征融合的路径
2、提出了更灵活的RoI池化。之前FPN的RoI池化只从高层特征取值,现在则在各个尺度上的特征里操作;
3、预测mask的时候使用一个额外的fc支路来辅助全卷积分割支路的结果。
PANet在COCO 17实例分割竞赛中取得了第一名的成绩,在检测任务中取得了第二的成绩。

好了上面就是对YOLOv4的一些新的改进的解读,具体参考了b站的一位小伙伴,后面我将继续写下yolov4的代码具体实现。。。真的好难,加油!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YOLO V4论文解读 的相关文章

  • R语言内置颜色色板+生成代码

    R语言内置颜色参照色板 日常使用中 想用一些R语言内置颜色 网上始终没有找到相对齐全的内置色板 于是自己写了一个 R语言内置颜色总共657种 文中代码共生成560种颜色 去掉了部分Grey渐变色 代码如下 RColors 568 col l
  • spring文件上传大小限制,Springboot大于一1G文件上传

    前言 一 SpringMVC简介 1 1 SpringMVC引言 为了使Spring有可插入的MVC架构 SpringFrameWork在Spring基础上开发SpringMVC框架 从而在使用Spring进行WEB开发时可以选择使用Spr

随机推荐