Yolo系列算法-理论部分-YOLOv4

0. 写在前面

        YOLO系列博客,紧接上一篇Yolo系列算法-理论部分-YOLOv3-CSDN博客

1. YOLOv4-实战破局

        2020年,YOLO系列的作者发表声明,出于道德方面的考虑,退出CV界,Alexey Bochkovskiy团队接手,正式推出YOLOv4项目。

       YOLOv4使用深度学习中一些常用Tricks进行了大量的测试,最终选择:WRC、CSP、CmBN、SAT、 Mish activation、Mosaic data augmentation、DropBlock regularization 和 CIoU loss。

        YOLOv4将实用的训练技巧应用在传统的YOLO基础上,让其生机勃勃,重新焕发出生命,实现了检测速度和精度的最佳权衡。

  1.  使用 GTX 1080Ti 或 2080Ti 的GPU就能训练出高效而强大的目标检测网络,降低了使用GPU的门槛
  2. 在论文中也验证了大量先进的训练技巧对目标检测性能的影响;
  3. 改进当前先进的目标检测方法,使其适合在单GPU上训练,改进包括CBN、PAN、SAM等。
2. 网络结构

        最简洁的表示: 

YOLOv4 = CSPDarknet53(主干) + SPP附加模块(颈) + PANet路径聚合(颈) + YOLOv3(头部)

2.1 CSPDarknet53

        CSPNet(Cross Stage Partial Network),用来解决以往网络结构需要大量推理计算的问题,网络优化中有很多重复梯度信息,该网络能随意将梯度进行组合,同时减少计算量;通过将基本层的特征图分为两个部分,最后通过一个跨阶段的层次结构合并来实现

  1.   将原来的Darknet53与CSPNet进行结合,Darknet53的结构是由一系列的残差结构组成,CSPNet主要工作就是将原来的残差块堆叠拆分成两部分:主干部分继续堆叠原来的残差块,支路部分相当于一个残差边,经过少量的处理直接连接到最后。

        2. 使用Mish激活函数代替原来的Leaky ReLU。

2.2 SPP

        SPP最初的设计目的是使卷积神经网络不受固定输入尺寸的限制,在YOLOv4中,引入SPP是为了显著地增加感受野,分离出最重要的上下文特征,同时不降低运行速度,经典空间金字塔池化层,如下图所示。

                在YOLOv4中,分别利用四个不同尺度的最大池化对上层输出的feature map进行处理,最大池化的池化核大小分别是13×13、9×9、5×5、1×1。

2.3 PANet

        PANet是COCO2017年实例分割比赛冠军,目标检测比赛第二名,核心思路是充分利用特征融合。

  1. FPN:主要通过融合高低层特征提升目标检测的效果,尤其可以提高小尺寸的检测效果
  2. Bottom-up Path Augmentation:主要考虑网络浅层特征信息,主要是边缘形状等特征;
  3. Adaptive Feature Pooling:用来特征融合,用每一个ROI提取不同层的特征来做融合,对于提升模型效果有很大好处;
  4. Fully-connected Fusion:针对原有的支路FCN,引入一个前背景二分类全连接支路,通过融合这两条支路的输出得到更加精确的结果。
2.4 Head

        继承了YOLOv3的Head进行多尺度预测,提高了对不同size目标的检测性能,输出的张量shape分别是(19,19,255)、(38,38,255)、(76,76,255),因为COCO有80个类别,每个网格对应有3个Anchor boxes,所以每一个要预测的bounding box对应5个值,3×(80 + 5)=255。

3. Tricks 改进方法
3.1 Mosaic

        新的数据增强方法,将四张图片拼接在一起;拥有丰富检测目标背景的同时,在BN计算的时候一次性就能处理四张图片。

3.2 SAT

        一种自对抗训练数据增强方法,第一阶段,神经网络改变原始图像而不改变网络权值,以这种方式,神经网络对自身进行对抗性攻击,改变原始图像,以制造图像上没有所需对象的欺骗;在第二阶段用正常的方法训练神经网络去检测目标。

3.4 CmBN

        Cross mini-Batch Normalization,跨小批量标准化,收集一个batch内多个mini-batch内的统计数据。

3.5 SAM

        原始的算法是最大池化层和平均池化层分别作用于feature map,得到的feature map,再输入一个卷积层中,接着使用Sigmoid函数来创建空间注意力;

        YOLOv4将SAM进行了修改,直接使用一个卷积层作用于输入特征,再使用Sigmoid函数创建注意力,将空间注意力变成点注意力。

3.6 PANet

        将PAN网络进行了小修改,使用张量连接concat代替原来的连接。

4. 性能表现

        在COCO数据集上,与YOLOv3相比,在AP和FPS上分别提升10%和12%。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值