YOLOv4 是一种先进的目标检测算法,属于 YOLO(You Only Look Once)系列的第四代版本。它在保持了 YOLO 系列算法速度优势的同时,显著提升了检测精度。
数据增强
Bag of freebies 指的是那些不增加模型复杂度,也不增加推理的计算量,通过改进模型和数据的预处理,来提高模型的准确度。
Bag of freebies(BOF)只增加训练成本,但是能显著提高精度,并不影响推理速度
数据增强:调整亮度、对比度、色调、随机缩放、剪切、翻转、旋转
网络正则化的方法:Dropout、Dropblock等
类别不平衡,损失函数设计
CutMix 数据增强
原理:将一张图像的部分区域裁剪下来,并粘贴到另一张图像上,同时调整标签。
与 Mosaic 的区别:CutMix 只融合两张图像,且裁剪区域通常更大。
作用:增强模型对遮挡目标的鲁棒性
方法很简单,参考CutMix然后四张图像拼接成一张进行训练
数据增强—常规几何变换
随机缩放、旋转、平移:改变目标的大小和位置,增加检测难度。使用仿射变换实现,保持目标的几何关系。
水平 / 垂直翻转:增强模型对目标方向的不变性。
数据增强—颜色空间变换
亮度、对比度、饱和度、色调调整:随机调整图像的颜色属性,模拟不同光照条件。
高斯噪声、椒盐噪声:增加图像的噪声鲁棒性。
DropBlock
DropBlock是谷歌在2018年提出的一种用于卷积神经网络(CNN)的正则化方法。这是一种用于解决过拟合问题的技术,在训练神经网络时非常有用。过拟合问题是指在训练集上表现很好,但在测试集上表现不佳的问题。
相比于传统的Dropout技术,DropBlock不是随机屏蔽掉一部分特征(注意是对特征图进行屏蔽),而是随机屏蔽掉多个部分连续的区域。这种方法有助于减少神经网络中的冗余连接,从而提高模型的泛化能力。
标签平滑
神经网络最大的缺点:自觉不错(过拟合),让它别太自信
例如原来标签为(0,1):[0,1]x(1-0.1)+ 0.1/2 =[0.05,0.95]
损失函数的改进
损失函数的改进GIOU
损失函数DIOU
损失函数的改进CIOU
非极大值抑制的改进
传统的NMS存在一定的问题:如果一个物体在另一个物体重叠区域出现,即当两个目标框接近时,分数更低的框就会因为与之重叠面积过大而被删掉,从而导致对该物体的检测失败并降低了算法的平均检测率。
将当前检测框得分乘以一个权重函数,该函数会衰减与最高得分检测框M有重叠的相邻检测框的分数,越是与M框高度重叠的检测框,其得分衰减越严重,为此选择高斯函数为权重函数,从而修改其删除检测框的规则。(δ通常取0.3)。