转载自文章
一. 损失函数
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)交并比损失上加上了宽高比的判据,从而更好在三种几何参数:重叠面积、中心点距离、长宽比上拟合目标框