0


YOLOV5损失函数

yolov5的损失函数包括:

classification loss 分类损失

localization loss 定位损失,预测框和真实框之间的误差

confidence loss 置信度损失,框的目标性

总损失函数为三者的和

classification loss + localization loss + confidence loss

也可以在三个损失前乘上不同的权重系数,已达到不同比重的结果。

在yolov5中的置信度损失和分类损失用的是二元交叉熵来做的,而定位损失是用的CIOU Loss来做的

类别预测(Class Prediction)

在传统的多分类任务中,一般使用的是softmax函数,将预测得分转换为综合为1的概率,就有点二极管那种感觉,不是动物,那就是人,再不行就是背景,就会导致有极强的排他性。

而在yolov3/v4/v5当中,在计算分类损失进行训练时,对每个标签使用二元交叉熵,去替换了softmax函数,降低了计算复杂度,以计算输入特定的标签的可能性,可以输出的标签是行人+儿童这种类型,输出的总分可以大于1。

边界框损失(localization loss)

IoU Loss

早先的对于边界框的损失使用的IoU损失去做的,去看真实框和预测框的交并比,来计算损失。但是会出现一个问题,就是当真实框和预测框不重叠时,IoU值将为0,并不会反应两个形状彼此之间的距离,会造成梯度为0并且无法优化。

GIoU Loss

后来在在CVPR2019时,出现了一个叫GIoU的损失他引入了一个最小包围框的概念。如图

将绿色框A和土黄色框B,完全包围起来,这个框我们称为C框

那么GIoU损失就为,两框的交并比IoU — (|C ÷ (A ∪ B)| ÷ |C|)

但是GIoU也有一些问题:

1.当检测框和真实框出现包含现象(一个完全套住了另一个,没有并集了)的时候GIoU退化成IoU

2.两个框相交时,在水平和垂直方向上收敛慢

DIoU Loss

这时候时又出现了一个DIoU Loss

这时候引入了两框中心点的距离d 对角线C 的概念

b和 bgt代表预测框的中心点和gt框的中心点。 ρ2() 代表的是欧式距离,c代表包含这两个框的最小矩形的对角线长度。这样的话,对于包含这种情况,中心点的距离也成为了一个评判标准,也能有一个优化的方向。从而解决了两个框相交时,在水平和垂直方向上收敛慢,这个问题。

原论文中作者给出了训练过程

第一排是 GIoU 第二排是DIoU,中心点的绿框是真实框,这图片可以清楚的看出,GIoU的收敛需要400次,而DIoU只需要120次,而且DIoU收敛的效果更好。原因就是DIoU考虑了两框中心点的距离,当两框中心点的距离为0或接近0时,可以判断是拟合的状态

CIoU Loss

CIoU 又加入了一个长宽比这个条件,比较两个框宽高比的吻合度

最后的αv就是相较于 GIoU增加的部分。

总结

DIoU相比于IoU和GIoU有更快的收敛速度。

CIoU考虑的范围更多,包括了重叠的面积,中心点距离,宽高比。这样的话对于框的回归会更充分,所以Yolov5当中默认的矩形框损失是CIoU Loss。

参考:

DIOU-loss - 知乎

标签: 人工智能 python

本文转载自: https://blog.csdn.net/qq_35326529/article/details/128208740
版权归原作者 反正也没人看我的昵称 所有, 如有侵权,请联系我们删除。

“YOLOV5损失函数”的评论:

还没有评论