文章目录
前言
目标检测作为计算机视觉的核心任务之一,其算法性能的优化始终是研究热点。YOLO系列模型凭借其高效的实时检测能力广受关注,但传统方法在密集目标检测、多尺度适应性及后处理冗余框抑制等方面仍存在局限。YOLO-v4作为该系列的重要升级版本,融合了多种前沿技术改进,从网络结构设计、特征融合机制到后处理策略均进行了系统性优化。通过引入DIOU-NMS解决重叠框误删问题,采用CSPNet与SPP增强特征表达能力,结合PAN实现双向多尺度特征融合,并利用Mish激活函数提升非线性建模能力。此外,注意力机制(CBAM)与网格敏感度消除策略进一步提升了模型精度与鲁棒性。YOLO-v4在保持实时性的基础上,显著提升了复杂场景下的检测性能,成为目标检测领域的重要里程碑。
一、yolo-v4非极大值抑制的改进
1、DIOU-NMS
NMS用于过滤掉冗余的检测框并保留最准确的框。在目标检测中,算法会输出多个检测框,但有些框可能是冗余的,这时候就需要进行后处理。
DIOU-NMS和原始的NMS不同,DIoU-NMS不仅考虑了IoU的值,还考虑了两个Box中心点之间的距离,使用了新的公式决定一个Box是否被删除:
其中,RDIoU是两个Box中心点之间的距离,用下面的公式表示:
其中M是表示置信度最高的候选框,Bi表示遍历各个框和高置信度的重合面积。
2、SOFT-NMS
传统的NMS存在一定的问题:如果一个物体在另一个物体重叠区域出现,即当两个目标框接近时,分数更低的框就会因为与之重叠面积过大而被删掉,从而导致对该物体的检测失败并降低了算法的平均检测
将当前检测框得分乘以一个权重函数,该函数会衰减与最高得分检测框M有重叠的相邻检测框的分数,越是与M框高度重叠的检测框,其得分衰减越严重,为此选择高斯函数为权重函数,从而修改其删除检测框的规则。(δ通常取0.3)。
Bag of Specials(BOS)
yolo-v4模型框架增加少许推断代价,但可以提高模型精度的方法,网络细节部分加入了很多改进,引入了各种让特征提取更好的办法,注意力机制,网络细节设计,特征金字塔等,
二、网络结构的改进
1、SPP—net网络
SPP-Net是何凯明《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》中提出的一种网络结构,可以不用考虑图像大小,输出图像固定长度,并且在图像变形情况下表现稳定。这种方法在速度上比R-CNN快24-102倍,并且在不同的数据集上面得到验证。在ImageNet 2014的比赛中,SPP-Net在检测中排名第二,分类中排名第三。
SPP Net的第一个贡献就是在最后一个卷积层后,接入了金字塔池化层,保证传到下一层全连接层的输入固定。在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素),输出则是一个固定维数的向量。SPP Net在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。
2、CSP—net网络
CSPNet是作者Chien-Yao Wang于2019年发表的论文《CSPNET: A NEW BACKBONE THAT CAN ENHANCE LEARNING CAPABILITY OF CNN》中提出的一种新的网络结构,它可以增强CNN的学习能力,并且在轻量化的同时保持准确性。
做法:1、每一个block按照特征图的channel维度拆分为2部分。
2、一份正常执行残差网络,另一份直接concat到block的输出
CSPNet主要是为了解决三个问题:
增强CNN的学习能力;降低内存成本;以及减少计算瓶颈。
它通过将梯度的变化从头到尾地集成到特征图中,从而减少了计算量的同时保证了准确率。在特征金字塔生成过程中采用跨通道池来压缩特征映射,可以减少内存使用。
同时,CSPNet方法可以减少模型计算量和提高运行速度,还能和多种网络结构结合在一起。
三、注意力机制(网络结构的改进)
CBAM(Convolutional Block Attention Module)是一种针对深度神经网络的注意力机制模块,用于提高模型在分类、检测和分割等任务中的表现。它结合了通道注意力和空间注意力,几乎可以嵌入任何CNN网络中,在稍微增加一点计算量和参数量的情况下,可以大大增强模型性能。
yolo-v4中的Spatial attention module
四、网络结构的改进—PAN
FPN(Feature Pyramid Networks)是一种用于目标检测和语义分割的深度学习模型,它能够有效地处理不同尺度的目标。
FPN使用图像金字塔的思想,通过对原始图像进行多尺度处理,构造出一个类似真实金字塔的特征金字塔。在特征金字塔的每一层,FPN都会提取出不同的特征,并进行相应的预测。这样,对于不同尺度的目标,FPN可以在不同的特征层上进行预测,从而获得更好的检测效果。
FPN的主要优点是它能够在不增加计算量和内存开销的情况下提高目标检测的精度。此外,FPN还可以通过横向连接和自上而下(top-down)的模型来进一步增强特征信息,提高目标检测的性能。
自顶而下的模式,将高层特征传下来,希望来个双向,PAN就是双向的
YOLOV4中并不是加法,而是拼接
四、网络结构的改进—激活函数
RELU有点过于绝对了,Mish更符合实际。
五、网络结构的改进—网格
eliminate grid sensitivity
如果坐标回归预测值都在0-1之间,但是在grid边界怎么表示,此时就需要非常大的值才可以达到边界,为了缓解这种情况可以在激活函数前面加上一个系数(大于1的),
六、整体网络架构
残差块(Residual Block)的主体部分。在一个残差块中,输入首先通过一个卷积层进行变换,然后将结果加到原始输入上。这种结构允许网络学习残差函数,即输入和输出之间的差异,而不是直接学习输出。这可以使网络更好地关注输入和输出之间的微小差异,提高了特征提取的能力。
v4是偏学术上的实现
v5增加了工程上的使用,将来开发可以模仿v5版本的代码
总结
YOLO-v4通过多维度创新实现了目标检测性能的全面提升。在算法层面,DIOU-NMS与Soft-NMS的引入有效缓解了密集目标的漏检问题;网络结构上,CSPNet降低了计算冗余,SPP与PAN的双向金字塔融合增强了多尺度特征表达能力;激活函数Mish与注意力机制CBAM的加入进一步优化了特征建模过程。此外,通过消除网格敏感性与改进后处理策略,模型在边界框回归精度和训练稳定性上取得了显著进步。实验表明,YOLO-v4在保持高实时性的同时,兼顾了检测精度与泛化能力,为后续版本(如YOLO-v5/v7)的工程优化奠定了理论基础。其技术路线不仅推动了目标检测算法的学术发展,也为工业级应用提供了高效可靠的解决方案。