[YOLO专题-7]:YOLO V4 - 网络结构、原理、改进的全新、全面、通俗、结构化讲解

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122233821


目录

前言:

第1章  YOLO V4应运而生

1.1 YOLO V3的不足

1.2 YOLO V4的出现

1.3 YOLO V4的改进与优点

1.4 YOLO总体的网络结构

1.5 YOLO V4的总体网络架构

第2章 YOLO V4网络的图片输入

2.1 输入图片的尺寸

2.2 图片的标签改进

2.3 输入图片的预处理(数据增强)

第3章 YOLO V4前向特征提取网络

3.1  激活函数的优化

3.2 增加了SPP网络

第4章 YOLO V4的前向输出网络

4.1 YOLO V4前向输出网络

4.2 YOLO V4图片网格的切分

4.3 YOLO  V4的Bounding Box

4.4 YOLO  V4的先验框Anchor​

4.5 YOLO  V4的每个Box包含的结构化信息

4.6 YOLO  V4的每个域的含义

第5章 前向输出(预测阶段)后处理:NMS非极大值抑制处理

第6章 YOLO V4反向Loss计算与网络优化训练

6.1 Loss函数的设计(核心、核心、核心)

6.2 优化算法

第7章 YOLO V4的不足与待改进

参考视频:



前言:

本文重点讲解YOLO V4对YOLO V3的改进,而不是介绍整个V4网络的所有算法细节。

解读本文时,请先参考YOLO V3版本的解读。

YOLO V4的基础是YOLO V3, YOLO V3的基础是YOLO V2, YOLO V2的基础是YOLO  V1.

YOLO V3版本详解:

[YOLO专题-6]:YOLO V3 - 网络结构、原理、改进的全新、全面、通俗、结构化讲解_文火冰糖(王文兵)的博客-CSDN博客

YOLO V2版本详解:

[YOLO专题-5]:YOLO V2 - 网络结构、原理、改进的全新、全面、通俗、结构化讲解_文火冰糖(王文兵)的博客-CSDN博客

YOLO V1详解:

[YOLO专题-4]:YOLO V1 - 网络结构、原理、基本思想的全新、全面、通俗、结构化讲解_文火冰糖(王文兵)的博客-CSDN博客

第1章  YOLO V4应运而生

1.1 YOLO V3的不足

  • YOLO V3很好的解决了小目标的检测和多目标的检测,然后对速度和mAP没有做大多的改进。
  • YOLO V3网络比较复杂,对GPU的训练环境要求比较高,一般单机无法训练。

1.2 YOLO V4的出现

(1) YOLO V4出现的时间

备注:

由于YOLO V3被应用到军事杀人,受到了作者对的抵制,YOLO V3之后,作者宣称放弃对YOLO后续版本的更新。因此YOLO V4的发布是业内其他人来完成的,但受到了原作者的认可。

(2)YOLO V4在整个目标检测中的位置

​  

1.3 YOLO V4的改进与优点

(1)YOLO V4的目标

  • 精度和速度的进一步提升
  • 同时降低对硬件环境的依赖,在单GPU就能够进行训练。 

(2)YOLO V4的改进点

很显然,YOLO V4精度高于YOLO V3

1.4 YOLO总体的网络结构

(1) YOLO的核心算法体现在:

  • 结构化的输出定义
  • 损失函数的设计

(2)与目标检测配套的地方体现在:

  • 输入图片的标签:定位目标的手工定位信息 + 目标的分类类型
  • 输出图片:原始图片 + 添加的额外信息(目标预测定位信息 + 目标类型 + 可能性大小)

1.5 YOLO V4的总体网络架构

  •  改进了激活函数:sigmoid激活函数 =》mish激活函数
  • 增加了SPP网络, 用来适配任意尺寸的输入图片。
  • 数据预处理增强,提升了网络的泛化能力,提了精度和召回率

第2章 YOLO V4网络的图片输入

2.1 输入图片的尺寸

  • 同YOLO V3, 无改进

2.2 图片的标签改进

  • 同YOLO V3, 无改进

2.3 输入图片的预处理(数据增强)

数据增强是指在不改变已有网络结构不改变已有数据集的情况下,对输入图像进行各种变换、增强处理,数据增强方法主要针对训练阶段。

数据增强的好处是:增加了训练后的网络的泛化能力

数据增强的缺点是:网络训练的时间变长。

牺牲网络训练的时间换取网络的泛化能力和适应能力的提升,还是值得的。

YOLO V4的数据增强如下:

 (1)随机马赛克遮挡

(2)随机删除或隐藏

 (3)合并多张图像到一张图像

 

 合并的目的:在单GPU上,变相地提升了Batch size。

(4)进入整体噪音 

(5)随机dropout一个区域(类似遮挡)

 (6)标签平衡:抗过拟合

在输入样本已有标签(如标签为1)基础上,乘以一个系数,如0.95,则参与训练的标签就变成了:0.95,而不是实际的标签1,这种方法,可以有效的防止过拟合,提升泛化能力,提升预测精度和召回率。

第3章 YOLO V4前向特征提取网络

3.1  激活函数的优化

(1)YOLO V1/V2/3的激活函数:ReLU

 ReLu的优点:是网络训练的效率高。

 ReLu的缺点:把负数值全部映射成了0,不给当事人悔过自新的机会。

(2)YOLO V4的改进:

Mish激活函数在特征值为负数时,并没有全部映射成0,直接放弃该数值,而是映射成一个很小的负数的数值,给当事人,悔过自新的机会,或许经过后期的训练,可以转到“正”象限。

Mish提升了最终的网络训练效果,但代价了增加了前向预测的计算量。

3.2 增加了SPP网络

  • 增加SPP网络后,输入图片的大小可以是任意尺度。
  • 增加SPP网络后,能够支持不同尺度的图片的训练,防止过拟合,增加网络的泛化能力。

SPP-net并非知道YOLO V4才引入,实际上YOLO V3有一个专门支持SPP网络的版本,称为YOLO V3-SPP. 在本系列中,我们把SPP放到了YOLO V4中进行阐述。

第4章 YOLO V4的前向输出网络

4.1 YOLO V4前向输出网络

(1)YOLO V3的图像金字塔结构

 (2)YOLO  V4的路径聚合网络

路径聚合网络能够把图像金字塔获得的不同层的特征,进行了进一步的聚合与融合,得到新的特征,而这些新的特征作为后续分类和定位的特征信息,如下图所示:

YOLO V4新特征的聚合,采用的不是累计和,而是采用的拼接融合,如下图所示:

拼接融合与累计融合相比:

  • 拼接融合比累计融合,获得的最终特征的数量更多,需要的内存更大。

4.2 YOLO V4图片网格的切分

同YOLO V3, 无改进

4.3 YOLO  V4的Bounding Box

同YOLO V3, 无改进

4.4 YOLO  V4的先验框Anchor​

同YOLO V3, 无改进

4.5 YOLO  V4的每个Box包含的结构化信息

​同YOLO V3, 无改进

4.6 YOLO  V4的每个域的含义

​同YOLO V3, 无改进

第5章 前向输出(预测阶段)后处理:NMS非极大值抑制处理

(1)IoU在NMS处理上的不足

NMS非极大值抑制处理作为后期处理,主要的作用是:用来剔除选中某一个物体的多余的框,同时又要防止错误的剔除真实物体的框,防止物体没有被识别出来。

YOLO V1/V2/V3的NMS使用IoU来判断,识别为同一个类型物体的两个框,是否为重复识别,即是否为同一个物体,如果IoU很大,说明这 两个框在面积上高度相等,隐含表示,这两个框高度重合,同时,有因为是同一种类型的物体,因此,很有可能是两个框,重复识别了相同的物体,此时需要丢弃置信度小的框。

详见:

https://blog.csdn.net/HiWangWenBing/article/details/122156426

上述方法的缺点:用IoU的大小来判定两个框是否高度重合,而在实际中,两个框是否高度重合,除了面积相等,还包括中心点距离是否比较近?还包括形状(长宽比)是否相似。

(2)YOLO V4的优化1: DIOU-NMS

在YOLO V4,采用了DIOU来判断两个框是否重复检测了同一个物体:

(3)YOLO V4的优化2: Soft-NMS

在YOLO V1/V2/V3中,如果发现一个框与另一框重复识别了同一个物体,会直接丢弃置信度小的框,并且永远丢弃。

YOLO V4对此进行了优化,不是直接丢弃置高度重合(IoU大)且置信度低一点的框,而是先降低该框的置信度,如下图所示:

上图两个“马”,他们的中心点落在同一个网格中,红框与绿框高度重合,但实际上他们是不同的物体,因此不能直接剔除,而是先保留下来,降低它的置信度。Soft-NMS提升了YOLO的召回率。

疑问:

同一个网格,出现类别相同、方框高度重合的多个物体怎么办?

第6章 YOLO V4反向Loss计算与网络优化训练

6.1 Loss函数的设计(核心、核心、核心)

(1)YOLO V3 IoU loss与其缺点

YOLO V1, V2, V3都使用了交并比IOU来计算预测框与标签框的距离。

然后,简单的IoU有两个问题:

问题1:当两个框不相交时,IoU恒等于0。如果使用IoU作为loss,则出现梯度消失的情形,如果使用I-IoU作为loss,则无法体现上图中情形A和情形B的区别。

问题2:当两个框相交时,如上图中右下角的三张图,情形1、情形2、情形3是不一样的,但他们“交并比”是相同的,则就意味着,如果使用1-IoU作为loss,无法区分上述三种情形,也就意味着,训练算法无法使用一个统一的标准,使得网络达到最优,只能达到“差不多”最优的结果。

(2)YOLO V4的优化-1: GIoU

 GIoU在IoU的基础上,引入了一个新的方框C,以及其对应的loss-C:

C是能够包含A和B框的最小矩形,通过两个现有方框的坐标(x11,y11, x12, y12)、(x21, y21,x22,y22),很容易获得新的C框的坐标。

loss-C能够反映交并比为0的两个框之间的距离的差别:

 上述两种情形,交并比IoU=0, 1 - IuU = 1,则原有的IoU loss相同,都等于1.

然后,加上Loss-C后,这两个情形,其Loss是不一样的,很显然,情形B的loss远大于情形A的loss。

GIoU的优点:成功的解决了,IoU等于0时的各种情形。

GIoU的缺点:没有解决IoU不等于0时,其数值相同,但实际情形却大不相同的问题,如下图所示,所有情形的loss-GIoU = 0.75.

(3)YOLO V4的优化-2: DIoU

DIoU的优点:成功解决上优化-1要解决的问题,同时也解决了优化-1没有解决的问题.

DIoU的缺点:DIOU与IoU一样,考虑了方框的面积,也考虑了方框中心点距离,但没有考虑方框的形状,即长宽比的差别,如下图所示:

(4)YOLO V4的优化-3: CIoU

CIoU同时考虑了两个框之间相似性的所有属性:

  • 面积差(IoU考虑的因素)
  • 中心点距离差 (对角线距离考虑的因素)
  • 形状差(长宽比,CIoU新增的罂粟)

 YOLO V4最终采用了CIoU,作为求两个方框距离的loss算法。

6.2 优化算法

​同YOLO V3, 无改进

第7章 YOLO V4的不足与待改进


参考视频:


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122233821

Guess you like

Origin blog.csdn.net/HiWangWenBing/article/details/122233821