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%。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 22:12:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 22:12:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 22:12:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 22:12:06       20 阅读

热门阅读

  1. 2024.3.9每日一题

    2024-03-15 22:12:06       18 阅读
  2. mysql binlog自动删除与手动删除

    2024-03-15 22:12:06       19 阅读
  3. 老卫带你学---leetcode刷题(189. 轮转数组)

    2024-03-15 22:12:06       20 阅读
  4. 【算法-特征选择】reliefF算法实现

    2024-03-15 22:12:06       21 阅读
  5. 百科 | 光伏电站如何开展运维工作?

    2024-03-15 22:12:06       23 阅读
  6. BUG解决-Modelsim打开许可证件不可用

    2024-03-15 22:12:06       18 阅读
  7. go反射实战

    2024-03-15 22:12:06       17 阅读
  8. Python中的pip工具

    2024-03-15 22:12:06       19 阅读
  9. 为什么会出现粘包这个问题

    2024-03-15 22:12:06       18 阅读
  10. 26: 翻转数的和(python)

    2024-03-15 22:12:06       23 阅读