YOLOV4学习小总结

前言

论文:https://arxiv.org/abs/2004.10934

YOLOV4就是筛选了一些从YOLOV3发布至今,被用在各式各样检测器上,能够提高检测精度的tricks,并以YOLOV3为基础进行改进的目标检测模型。
YOLOV3
YOLO V4在保证速度的同时,大幅提高模型的检测精度。

下图是YOLOV4总体网络结构。
在这里插入图片描述
下面就来看看YOLOV4各个改进点吧!

1. backbone

YOLOV4的backbone从YOLOV3的DarkNet53 -> CSPDarkNet53,如下图。
在这里插入图片描述
其中:

1. 激活函数

使用了Mish激活函数,公式: y = x × t a n h ( l n ( 1 + e x ) ) y=x \times tanh(ln(1+e^x)) y=x×tanh(ln(1+ex)),函数图像如下:
在这里插入图片描述
下图是论文中作者使用Mish激活函数的准确率。
在这里插入图片描述

2. CSPNet部分
CSPNet部分就是由一个大残差块和多个小残差块组成,如下图,左边是普通的残差块,右边是CSPNet中的残差块结构。Part1是一个大的残差边,其实也就是卷积+标准化+激活函数,然后直接与Part2部分经过一系列残差卷积之后进行堆叠。
在这里插入图片描述

2. neck

1. SSP结构
在这里插入图片描述
作用:

  1. 特征提取
  2. 防止过拟合
  3. 允许在各种size和scale下训练网络

2. PANet
在这里插入图片描述
作用:

  1. 对浅层网络进行特征提取
  2. 对浅层网络的信号做特征融合

3. head

head部分,其实就是3x3卷积+1x1卷积,和YOLOV3没有区别。
作用:

  1. 3x3卷积用于特征整合
  2. 1x1卷积用于通道数调整,也就是得到预测结果
    在这里插入图片描述

4. 数据增强

1. CutMix
两个图片,一个图片剪切后放到另外一个图片上。
2. Mosaic
合并4张图片,跨越上下文,相当于小目标的数据增加了。
3. Self-Adversarial training
将生成的对抗样本加入到训练集中去,做一个数据增强,让模型在训练的时候就先学习一遍对抗样本。

5. 训练技巧

1. 标签平滑
防止过拟合
2. DropBlock正则化
用于全连接层,以一定概率随机将输出神经元置0,BP阶段不更新对应神经元。
3. 学习率余弦退火衰减
有利于跳出局部最优解。

6. 训练损失

使用CIOU,CIOU考虑了与Anchor box之间的三个因素分别为:重叠面积、中心点距离、宽高比。惩罚项作用是控制预测框的宽高能够尽可能快速地与真实框的宽高接近。

loss公式如下:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42025868/article/details/123780770