详解yolov8的损失函数、Anchor-Free、样本分配策略、与yolov5的对比

转载自文章

一. 损失函数

1. 对象损失

v5中使用BCE来判断“该区域是否有对象”。在输出中根据此处输出来过滤无对象区域

v8中取消了这一损失,改为用分类损失中,“该区域是否有此类对象”的one-hot编码形式来判断。

个人理解:v5“判断对象有无”的形式,虽然能加速结果处理掩码的速度,但处理多分类问题时,该判据的可信度可能会随着类别数的增加、特征信息的互相影响而降低。同时另一方面,此损失的功能也被分类损失部分覆盖。
v8在此方向的改进不仅提升了模型权重的利用率,还通过存在状态与分类状态的强关联,使得标签能更好指导模型对类别区分能力的学习

2. 分类损失

BCE

v5/v8均使用BCE(二元交叉熵)作为分类损失,每类别判断“是否为此类”,并输出置信度。

简单来说,BCE就是把两个信息——是此类、不是此类的熵都算出来,并加起来一起算,让这个损失函数在上述两种情况下算出的损失都不会为0
也可以说是为了在Yi = 0(即"不是此类"时)依然能对分类的对错与否进行表达

v5中,由于有对象损失的存在,在反算时只对BCE分类输出的“置信度分数”做取最大值,得到置信度最大的类别,后直接输出。
v8中,由于去掉了对象损失,在输出中也去掉了“对象置信度”,直接输出各个类别的“置信度分数”,再对其求最大值,将其作为此anchor框的“置信度”。

3. 回归损失

CIOU

IOU(Intersection over Union、交集-并集比例)是一种描述框之间的重合度的方式。在回归任务中,可通过“目标框”与“预测框”的比值来衡量框的回归程度

v5使用的CIOU loss用以令锚框更加接近标签值的损失,在(IOU)交并比损失上加上了宽高比的判据,从而更好在三种几何参数:重叠面积、中心点距离、长宽比上拟合目标框

YOLOv8是基于YOLOv5的改进版,其损失函数也是在YOLOv5的基础上进行了调整和改进。下面我会详细介绍YOLOv8损失函数。 在YOLOv8中,整个网络的损失函数由三个部分组成: 1. Objectness Loss(目标置信度损失) 2. Classification Loss(分类损失) 3. Localization Loss(定位损失) 下面分别对这三部分进行介绍。 1. Objectness Loss Objectness Loss主要是用来判断每个anchor box是否包含目标物体的损失函数。在YOLOv8中,Objectness Loss采用的是二元交叉熵损失函数。 对于每个anchor box,我们需要计算其包含目标物体的概率值和不包含目标物体的概率值。如果该anchor box真实包含目标物体,则其目标概率值应为1,否则应为0;而其非目标概率值则相反。 实际上,为了更好地控制模型的训练,YOLOv8还引入了一些技巧,如动态Anchor策略、Objectness Threshold策略等。 2. Classification Loss Classification Loss主要是用来判断每个anchor box中目标物体的类别的损失函数。在YOLOv8中,Classification Loss采用的也是二元交叉熵损失函数。 对于每个anchor box,我们需要计算其包含目标物体的类别概率值和不包含目标物体的类别概率值。如果该anchor box真实包含目标物体且类别预测类别相同,则其目标概率值应为1,否则应为0;而其非目标概率值则相反。 3. Localization Loss Localization Loss主要是用来判断每个anchor box中目标物体的位置信息的损失函数。在YOLOv8中,Localization Loss采用的是平方误差损失函数。 对于每个anchor box,我们需要计算其包含目标物体的四个位置信息(即中心坐标和宽高),然后计算其真实位置信息之间的平方误差。 为了更好地控制模型的训练,YOLOv8还引入了一些技巧,如Focal Loss、IoU Loss等。 综上所述,YOLOv8损失函数是一个综合考虑目标检测的各个方面的综合损失函数,旨在最小化预测值真实值之间的差距,从而提高模型的准确性和鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值