《YOLO 目标检测》—— YOLO v4 详细介绍
文章目录
- 一、整体网络结构
- 1. YOLO v4 网络结构图
- 2.对之前版本改进创新的概括
- 二、对改进创新部分的具体介绍
- 1. 输入端创新
- 2. Backbone主干网络创新
- CSPDarknet53
- Mish激活函数
- Dropblock正则化
- 3. 特征融合创新
- SPP模块
- PAN结构
- 4. Prediction输出层创新
- CIOU Loss
- DIoU_NMS(非极大值抑制)
- 三、性能与应用
- 1. 性能
- 2. 应用
YOLO v4(You Only Look Once version 4)是一种先进的目标检测系统,于2020年推出,是对之前版本YOLO的改进。YOLOv4基于深度卷积神经网络,能够高精度实时检测图像中的目标。以下是对YOLOv4的详细介绍:
一、整体网络结构
1. YOLO v4 网络结构图
2.对之前版本改进创新的概括
- 输入端的创新:数据增强
- 主干网络的改进:各种方法技巧结合起来,包括:CSPDarknet53、Mish 激活函数、Dropblock
- 特征融合创新:在主干网络和最后的输出层之间插入一些层,比如 SPP 模块、FPN+PAN 结构
- Prediction输出层创新:CIOU Loss(损失函数)、DIoU_NMS(新型的非极大值抑制)
二、对改进创新部分的具体介绍
1. 输入端创新
- Mosaic数据增强:采用了CutMix的方法,将4张图片进行随机缩放、随机裁剪、随机排布的方式进行拼接,增强了对正常背景之外的对象的检测,丰富了检测物体的背景信息。同时,减少了估计均值和方差时的计算量,降低了训练成本。
- 如下图:
2. Backbone主干网络创新
CSPDarknet53
- CSPDarknet53:借鉴了ResNet的残差结构,并运用了CSP(Cross Stage Partial)结构
- CSPNet是作者Chien-Yao Wang于2019年发表的论文《CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN》中提出的一种新的网络结构,它可以增强CNN的学习能力,并且在轻量化的同时保持准确性。
- 做法:CSPNet 将基础层的特征映射为两个分支,第二个分支正常执行残差网络,接着将两个分支的信息在通道方向进行 Concat 拼接,最后再通过 Transition 层进一步融合。如下图:
- CSPNet主要是为了解决三个问题:
增强CNN的学习能力;降低内存成本;以及减少计算瓶颈。 - 同时,CSPNet方法可以减少模型计算量和提高运行速度,还能和多种网络结构结合在一起。
Mish激活函数
- Mish激活函数:与ReLU相比,Mish函数在训练过程中能够使梯度更加平滑,避免了神经元的死亡问题,从而提高了模型的准确率。
- 下面是ReLU(左)和Mish(右)激活函数的图像
Dropblock正则化
- Dropblock正则化:在卷积层上引入了一种新的正则化方法,通过丢弃一块相邻区域中的特征来防止过拟合。
- 相比于传统的Dropout技术,DropBlock不是随机屏蔽掉一部分特征(注意是对特征图进行屏蔽),而是随机屏蔽掉多个部分连续的区域。
- 这种方法有助于减少神经网络中的冗余连接,从而提高模型的泛化能力
- 如下图:
3. 特征融合创新
SPP模块
- SPP-Net 全称 Spatial Pyramid Pooling Networks,是何恺明提出的,主要是用来解决不同尺寸的特征图如何进入全连接层的,在网络的最后一层 concat 所有特征图,后面能够继续接 CNN 模块
- SPP Net在最后一个卷积层后,接入了金字塔池化层,保证传到下一层全连接层的输入固定。在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素),输出则是一个固定维数的向量。SPP Net在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。
- SPP 模块使得神经网络能够处理任意大小的输入,从而大大提高了模型的灵活性和泛化能力。
- 如下图:
PAN结构
- PAN结构:在FPN(Feature Pyramid Networks)的基础上进行了改进,引入了自底向上的路径,使得底层的位置信息更容易传播到顶层。这种双向的信息传递方式增强了模型对不同尺度目标的检测能力。
- YOLOv3 中只有自顶向下的 FPN,对特征图进行特征融合,而 YOLOv4 中则是 FPN+PAN 的方式对特征进一步的融合。引入了自底向上的路径,使得底层信息更容易传到顶部。
- 下面是 YOLOv3 的 Neck 中的 FPN,如图所示:FPN 是自顶向下的,将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图
- YOLOv4 中如下:
- 注意:YOLO v4 的特征融和方式是 concat
- concat:将两个特征图在通道数方向叠加在一起,原特征图信息完全保留下来,再对原特征图增加一些我们认为是较好的特征图,丰富了特征图的多样性,是在空间上对原特征图的增强,这样在下一次卷积的过程中我们能得到更好的特征图。
4. Prediction输出层创新
CIOU Loss
- CIOU Loss:作为边界框回归的损失函数,CIOU Loss考虑了预测框与真实框之间的重叠面积、中心点距离和长宽比等因素,使得模型在训练过程中能够更快地收敛,提高检测的精度。
- CIOU Loss 经过多次的修改后才达到了可以考虑多方面因素的效果
- 下面是 CIOU Loss 的修改历程
- 首先是最初的IOU损失函数是以 1 - IOU 来计算的,但是这样当预选框和真实框没有相交时(IOU=0 无法梯度计算,相同的IOU却反应不出实际情况到底是哪一个预选框较好,如下图三种情况的IOU都相同
- 这时 GIOU Loss 的出现解决了以上的问题,公式如下:
- 引入了最小封闭状态C, C 是将真实框和预选框框在内的最小矩形框大小
- 后一部分计算是如下图红色区域与 C 的比值大小,红色区域越大则表示预选框的效果月差,损失值就越大
- 但是又有一种情况解决不了,如下图,到预选框在真实框的内部,通过GIOU Loss 的计算方式则三种的预选框的损失值都相等,又分辨不出哪一个预选框效果好
- 这是 DIOU Loss 的出现,又解决了上面的问题,公式如下
- 如下图,DIOU Loss 后一部分中分子计算预测框与真实框的中心点的欧氏距离d,分母是能覆盖预测框与真实框的最小框的对角线长度c,这样便优化了距离,速度更快,并解决GIOU Loss的问题
- 还有一种情况,如下图,红色预选框与橙色预选框的中心点位置相同,且面积也相同,则通过 DIOU Loss 的计算结果是相同的
- 但是从这两个与预选框的宽高比可以看出,红色的预选框与真实框更加接近,因此 CIOU Loss 的出现解决了这一问题
- CIOU Loss 的公式如下:
- 通过公式可以看出,后一项的加入,又对预选框与真实框的宽高比进行了计算
- 因此 CIOU Loss 考虑了三个几何因素:重叠面积、中心点距离、长宽比,三方面的考虑则可以更好的通过损失至的计算,反向传播后选出最佳的预选框
DIoU_NMS(非极大值抑制)
- DIoU_NMS:作为后处理方法,在去除冗余的检测框时不仅考虑了框的置信度还考虑了框之间的中心点距离,提高了检测的准确性。
- DIOU-NMS和原始的NMS不同,DIoU-NMS不仅考虑了IoU的值,还考虑了两个Box中心点之间的距离,使用了新的公式决定一个Box是否被删除,如下图解释
- DIOU-NMS和原始的NMS不同,DIoU-NMS不仅考虑了IoU的值,还考虑了两个Box中心点之间的距离,使用了新的公式决定一个Box是否被删除,如下图解释
下面是一个输入为640*640大小的图片,传输到 YOLO v4 模型的过程,结合上面的内容理解YOLO v4网络模型的结构
- 如下图
三、性能与应用
1. 性能
- 在COCO数据集上,YOLOv4的平均精度(AP)达到了43.5%,速度高达65fps。
- 高精度:能够准确地检测出各种不同类别的目标。
- 高速度:满足实际应用中的实时性要求。
- 易于训练:可以在单个GPU上进行训练,降低了训练的成本和难度。
2. 应用
- 智能安防:用于监控摄像头中的目标检测,实时监测人员、车辆等目标的行为。
- 自动驾驶:检测道路上的行人、车辆、交通标志等目标,为自动驾驶系统提供准确的环境信息。
- 工业检测:用于工业生产中的质量检测,例如检测产品的缺陷、尺寸等。
综上所述,YOLOv4是一种非常强大的目标检测算法,具有高精度、高速度和易于训练等优点。它在许多领域都有广泛的应用前景,包括智能安防、自动驾驶和工业检测等。