前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >YOLO V4论文解读

YOLO V4论文解读

作者头像
Albert_xiong
发布2021-06-21 17:57:19
8530
发布2021-06-21 17:57:19
举报
文章被收录于专栏:Mybatis学习

YOLO V4论文解读

YOLO V4论文地址

一、YOLOV3回顾

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

二、YOLOV4中

代码语言:javascript
复制
作者将很多的新方法融合到一起,具体包括:
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

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

数据扩充:

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

模拟对象遮挡:

代码语言:javascript
复制
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:

代码语言:javascript
复制
1、	loU_ loss
2、	GloU_ loss
3、DIoU_ loss
4、CIoU_ loss(yolov4采用的)

Yolov4-use:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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:

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

5、post-processing method:

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

YOLOv4 - use:

代码语言:javascript
复制
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

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

代码语言:javascript
复制
[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

公式:

代码语言:javascript
复制
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的代码具体实现。。。真的好难,加油!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • YOLO V4论文解读
  • 一、YOLOV3回顾
  • 二、YOLOV4中
  • 三、Bag of freebies
    • 数据扩充:
      • 模拟对象遮挡:
        • 结合多幅图像进行数据扩充:
          • 解决类别不平衡:
            • label smoothing
              • bbox:
                • Yolov4-use:
                • 四、Bag of specials
                  • 1、 enhance receptive field(扩充接受阈): SPP, ASPP, RFB
                    • 2、 attention module:
                      • 3、feature integration:(特征集成)
                        • 4、activation function:
                          • 5、post-processing method:
                            • YOLOv4 - use:
                            • 五、Selection of architecture (网络结构的选择)
                            • 六、Additional improvements
                            • 七、细节
                              • 1、 Mosaic data augmentation(马赛克数据增强)
                                • 2、 DropBlock regularization
                                  • 3、 Class label smoothing
                                    • 4、 CIou-Loss
                                      • 5、 DIou-soft NMS
                                        • 6、 CmBN
                                          • 7、 Self-Adversarial Training(自对抗训练)
                                            • 8、 Elminate grid sensitivity(网格消除敏感)
                                              • 9、 Cosine annealing scheduler (模拟余弦退火)
                                                • 10、 Using multiple anchors for a single ground truth
                                                  • 11、 Random training shapes (随机多尺度的训练)
                                                    • 12、 Mish activation
                                                      • 13、 CSP
                                                        • 14、 SPP
                                                          • 15、 SAM-block
                                                            • 16、 PAN
                                                            相关产品与服务
                                                            GPU 云服务器
                                                            GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
                                                            领券
                                                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档