目标检测算法常用Loss
文章目录
- 目标检测算法常用Loss
- 1. 差值平方损失
- 2. IoU Loss
- 3. GIoU Loss
- 4. DIoU Loss
- 5. CIoU Loss
- 6. 说明和补充
- 6.1说明
- 6.2 补充
1. 差值平方损失
在YOLOv3及YOLOv1,v2版本均采用的均值平方损失,也称为L2损失。L2损失在目标检测问题上不能很好的表现出ground truth 和预测框之间的位置,重合等关键信息。所以衍生出一系列关于IoU的损失。
2. IoU Loss
如下图三种不同的情况,明显第三个预测框与ground_truth贴合程度更好,但是经过计算三种预测框的L2loss的值相同。这也反映了L2Loss存在的问题。为了解决这一问题,首先提出了IoU Loss,其表达式可以为或者。采用IoU loss 相比与L2 loss 能够很好的反映重合程度,且具有尺度不变性。
3. GIoU Loss
Generalized IoU
。IoU loss不可以解决一个问题,当两个框不重合时以公式为例,其Loss值为1。但我们发现当两个不重合时,无论两个框距离多远其loss值均为1,不会发生改变,这显然是不合理的。 所以提出了GIoU这个概念去弥补IoU的不足,同时用GIoU loss 去弥补IoU loss的缺陷。
GIoU的公式如下:
其中**表示实际框和预测框的最小外接矩形面积,下图中蓝色方框的面积。表示实际框与预测框的交集。可以计算当两个框重合时GIoU的值为1,当两个框无穷远**时GIoU的值为-1。这样定义的GIou就可以解决IoU在两框不重合时无法将位置关系引入评价指标。由此GIoU的Loss公式为,其范围。
GIoU缺陷:当实际框与预测框水平或竖直重合或两个框为包含关系时,GIoU将会退化为IoU,如下图。
4. DIoU Loss
DIoU和下面要提到的CIoU是在同一篇论文中提出来的,论文作者发现,GIoU loss 和IoU loss除了上述缺点外,还存在收敛慢和回归不准确两个问题。其中回归不准确可以通过下图进行理解,下图中的三种情况IoU和GIoU的值都是相同的,但明显相比之下第三种情况更加理想。按照这种想法,第三种情况应该loss值更小。DIoU(Distance-IoU)
的提出,便可以解决这一问题。
DIoU Loss 的计算公式如下:
如下图:其中表示两个框中心点之间的欧氏距离,反映在下图中即为d。表示两个框最小外接矩形的对角线的长度。当连个框重合时DIoU的值为1,当两个框无限远时d,c均趋近于无穷,所以DIoU的最小值为-1。由此DIoU loss 可以定义为其取值范围为。
5. CIoU Loss
一个优秀的回归定位损失我们认为应该考虑到以下三个参数:重叠面积,中心点距离, 长宽比。前两个参数我们在DIoU Loss 中已经考虑到了。所以CIoU Loss的功能就是将长框比这一参数也引入我们的损失函数中。
CIoU的函数表达如下,引入了长宽比例:
CIoU Loss 表达式.
6. 说明和补充
6.1说明
本文内容主要参考至B站up视频,再次感谢up的分享。
但其中有一点在IoU loss缺陷那里UP的PPT里写的是IoU loss在两框不相交后loss为0,我根据IoU loss的两个计算公式计算结果都不是零,所以我感觉IoU loss的缺陷应该是不重合后无论两框相聚多远Loss值都不改变。这一点在文章中有体现。
6.2 补充
UP在视频讲解中提到实际中我们具体要用哪一种Loss还需要我们自己去测试,我在我数据集上测试也存在CIoU loss 的效果相较于DIoU会稍差一些。所以大家在使用时可以根据自己调参的情况去选择Loss的计算方式。
其次现在有些文章在计算mAP时,不采用IoU在一定范围认为是找到框,而是将IoU替换为GIoU。有可能GIoU去作为评价指标也会更合理一些。