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 - 知乎

GitHub 加速计划 / yo / yolov5
529
37
下载
yolov5 - Ultralytics YOLOv8的前身,是一个用于目标检测、图像分割和图像分类任务的先进模型。
最近提交(Master分支:9 天前 )
e62a31b6 Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> 20 天前
882c35fc Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> 1 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐