深度学习:Yolo V4的改进
BOF
指的是那些不增加模型复杂度,也不增加推理的计算量,通过改进模型和数据的预处理,来提高模型的准确度。
数据增强:调整亮度,对比度,色调,随机缩放,剪切,翻转,旋转
数据增强—马赛克数据增强
参考cutmix方法将四张图像拼接成一张训练
random erase:用随机值或训练集的平均像素替换图像的区域
hide and seek:根据概率设置随机隐藏一些补丁
SAT
通过引入噪音来增加游戏难度
网络正则化的方法:dropout,dropbloack等
dropblock:DropBlock(注意是对特征图进行屏蔽)是随机屏蔽掉多个部分连续的区域。这种方法有助于减少神经网络中的冗余连接,从而提高模型的泛化能力
标签平滑
标签平滑的基本思想是减弱标签的确定性,从而降低过拟合的可能性。在传统的分类任务中,标签通常是0或1的形式。而标签平滑技术通过将标签值从0和1平滑到0和1之间的值,使得模型在训练过程中不会过于自信地对类别进行分类,从而增强模型的泛化能力。
损失函数的改进
IOU损失
缺点
GIOU损失
c可以把A,B包含在内
缺点
DIOU损失
其中分子为预测框与真实框的中心点欧氏距离d,分母为预测框与真实框的最小box对角线长度c
CIOU损失
三要素:重叠面积,中心点距离,长宽比
非极大值抑制的改进
diou-nms
diou-nms不仅考虑了检测框的置信度最高的,还考虑了检测框之间的中心点距离。这种方法通过计算预测框与真实框之间的距离、重叠面积以及尺度。
soft-nms
将当前检测框得分乘以一个权重函数,该函数会衰减与最高得分检测框M有重叠的相邻检测框的分数,越是与M框高度重叠的检测框,其得分衰减越严重,为此选择高斯函数为权重函数,从而修改其删除检测框的规则。(δ通常取0.3)。
网络结构的改进
spp-net网络
可以不用考虑图像大小,输出图像固定长度,并且在图像变形情况下表现稳定。
SPP Net就是在最后一个卷积层后,接入了金字塔池化层,保证传到下一层全连接层的输入固定。在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素),输出则是一个固定维数的向量。SPP Net在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。
CSP-net网络
可以增强CNN的学习能力,并且在轻量化的同时保持准确性。
1、每一个block按照特征图的channel维度拆分为2部分。
2、一份正常执行残差网络,另一份直接concat到block的输出
CSPNet主要是为了解决三个问题: 增强CNN的学习能力;降低内存成本;以及减少计算瓶颈。 它通过将梯度的变化从头到尾地集成到特征图中,从而减少了计算量的同时保证了准确率。在特征金字塔生成过程中采用跨通道池来压缩特征映射,可以减少内存使用。 同时,CSPNet方法可以减少模型计算量和提高运行速度,还能和多种网络结构结合在一起。
注意力机制
CBAM(Convolutional Block Attention Module)是一种针对深度神经网络的注意力机制模块,用于提高模型在分类、检测和分割等任务中的表现。它结合了通道注意力和空间注意力,几乎可以嵌入任何CNN网络中,在稍微增加一点计算量和参数量的情况下,可以大大增强模型性能。
-
通道注意力(Channel Attention):
- CBAM首先应用通道注意力机制,通过全局最大池化和全局平均池化操作从每个通道的特征图中提取全局特征。
- 这些全局特征随后通过一个全连接层,以学习每个通道的重要性权重,从而动态调整不同通道的特征响应。
-
空间注意力(Spatial Attention):
- 在通道注意力之后,CBAM应用空间注意力机制,利用特征图的通道最大值和平均值来突出关键空间区域。
- 通过一个小型的全连接神经网络或卷积神经网络学习每个空间位置的重要性权重,这个网络接收压缩后的特征映射作为输入,输出一个表示每个空间位置权重的热图。
PAN
FPN是一种用于目标检测和语义分割的深度学习模型,它能够有效地处理不同尺度的目标。通过对原始图像进行多尺度处理,构造出一个类似真实金字塔的特征金字塔。在特征金字塔的每一层,FPN都会提取出不同的特征,并进行相应的预测。
PAN:采用了自下而上的特征传播方式,构建方式是从低分辨率的特征图开始向上采样,同时从高分辨率的特征图开始向下采样,将它们连接起来形成一条路径。
PAN的改进
激活函数
mish
eliminate grid sensitivity
整体网络架构
残差块(Residual Block)的主体部分。在一个残差块中,输入首先通过一个卷积层进行变换,然后将结果加到原始输入上。这种结构允许网络学习残差函数,即输入和输出之间的差异,而不是直接学习输出。这可以使网络更好地关注输入和输出之间的微小差异,提高了特征提取的能力。