YoloV4———— 简单理解+回顾

YoloV4是Alexey Bochkovskiy在小马哥的yolo系列基础上的新的续作,主要是利用了许多trick在速度和效果上进行了提升。

截止2020,目标检测网络主要是以下这些类型:

Bag of freebies

这种提升效果的方法原理是利用线下训练过程,使用更好的训练方式,在不提升推理时间的前提下,提高检测精度,最常见的就是

图像细节增强

数据增强(例如,光学畸变和几何畸变是两种常用的数据增强方法;利用光学畸变,调整图像的亮度、对比度、色调、饱和度和噪声。对于几何畸变,添加随机缩放,裁剪,翻转和旋转。

另一种常见方法为数据遮挡,即将图片中部分位置像素置为0,例如随机擦除和剪切,在特征图中使用DropOut、DropConnect、DropConnect

多图片训练,即将多个图片作为输入图片,例如MixUp、CutMix,将两张不同缩放系数的图片相乘并相加,新样本的标签也是进行线性组合得到。

mixup也可以增加数据集的多样性,从而降低模型的方差,提高模型的鲁棒性。

总之,mixup是一种非常实用的数据增强技术,它可以用于各种机器学习任务中,可以有效地防止过拟合,并且可以提高模型的泛化能力。在实际应用中,mixup可以帮助我们更好地利用有限的数据集,并且提高模型的性能

相关链接:【pytorch】使用mixup技术扩充数据集进行训练_pytorch mixup-CSDN博客

CutMix:裁剪部分矩形区域,用于训练

相关链接:高阶数据增强:Cutmix 原理讲解&零基础程序实现-CSDN博客

利用GAN网络进行数据增强:使用 GAN 进行数据增强和生成-CSDN博客

由于CNN学习的是图片的纹理特征,因此利用GAN网络融合纹理特征,实现数据增强

语义分布偏置

即某一类class对象较多,数据集分布不平衡,解决方法:

难例挖掘:将hard sample 补充到数据集里,重新丢进网络当中,就好像给网络准备一个错题集,哪里不会点哪里。抑制简单负例,增加困难负例(一半是目标一半不是)(仅适用于两阶段检测算法)分为以下两种:

hard negative example mining:只注重在难负例,

Online Hard Example Mining:只要是loss高的例子,不论正负

对于单阶段的检测算法,更适用于focal loss

focal loss:用于解决数据集中各类别不平衡,提高精度

相关链接:Focal Loss的理解以及在多分类任务上的使用(Pytorch)-CSDN博客

label smoothing:标签平滑将hard label 变为 soft label使网络优化更加平滑。

增加类间距离,减少类内距离,提高泛化性

相关链接:标签平滑(Label Smoothing)详解-CSDN博客

公式:

label smoothing结合了均匀分布,用更新的标签向量  来替换传统的ont-hot编码的 标签向量:

其中K为多分类的类别总个数,αα是一个较小的超参数(一般取0.1),即

这样,标签平滑后的分布就相当于往真实分布中加入了噪声,避免模型对于正确标签过于自信,使得预测正负样本的输出值差别不那么大,从而避免过拟合,提高模型的泛化能力。

Bounding Box (BBox) regression

传统的方法是使用MSE(1、对于每个观测值,计算模型的预测值。2、对于每个观测值,计算预测值与实际观测值之间的差异,并将其平方。3、对所有差异值进行求和,并除以观测值的总数,得到平均差异值,即 MSE。MSE 的优点是对差异值进行平方操作,因此较大误差值对拟合度的影响会更大,这有助于更加敏感地捕捉模型的预测误差。需要注意的是,MSE 受异常值的影响较大,因为异常值的平方差异会被放大。在使用 MSE 进行模型评估时,需要注意异常值的处理和模型的鲁棒性。)对BBOX进行回归,对于anchor-based 的检测方法,是估计BBOX偏移,每个点之间是相互联系的,因此提出了IOU.(相关链接:深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现-CSDN博客)由于IoU是一种尺度不变(两个框按照任意比例同时缩放,求出的IOU值不变)的表示,因此它可以解决传统方法计算l1或l2损失(【深度学习基础知识 - 01】L1和L2损失函数的区别-CSDN博客

  • L1损失函数又称为MAE(mean abs error),即平均绝对误差,也就是预测值和真实值之间差值的绝对值。
  • L2损失函数又称为MSE(mean square error),即平均平方误差,也就是预测值和真实值之间差值的平方。
  • L1的问题在于它的梯度在极值点会发生跃变,并且很小的差异也会带来很大的梯度,不利于学习,因此在使用时通常会设定学习率衰减策略。而L2作为损失函数的时候本身由于其函数的特性,自身就会对梯度进行缩放,因此有的任务在使用L2时甚至不会调整学习率,不过随着现在的行业认知,学习率衰减策略在很多场景中依然是获得更优模型的手段。   

  • L1和L2图像:

  •                     
    原文链接:https://blog.csdn.net/yanyuxiangtoday/article/details/119788949)时的问题。 

GIOU loss:未完待续。。。。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值