IoU、GIoU、DIOU、CIOU损失函数
1.IOU损失函数
IOU损失表示预测框A和真实框B之间交并比的差值,反映预测检测框的检测效果。
但是,作为损失函数会出现以下问题:
- 如果两个框没有相交,根据定义,IoU=0,不能度量IoU为零距离远近的程度。同时因为loss=0,没有梯度回传,无法进行学习训练。
- IoU无法精确的反映两者的重合度大小。如下图所示,三种情况IoU都相等,但看得出来他们的重合度是不一样的,左边的图回归的效果最好,右边的最差。
图1 三种不同的IOU重叠方式
2.GIOU损失
GIOU是为了缓解IOU损失在检测框不重叠时出现的梯度问题而提出来的,在原来的IOU损失的基础上加上一个惩罚项。
其中,A是预测框,B是真实框,C是A和B的最小包围框,A、B、C的关系具体如下图所示。
图2 A、B、C含义
惩罚项的意思是下图右边黄色区域的比值。
图3 惩罚项示意图
- 当两个box没有重叠,并且距离比较远的时候,找到的矩形会比较大,空区域的面积也会比较大,极限情况下,空区域的面积除以矩形面积,结果为1。此时IoU为0。 。
- 假设两个box大小相同,正好左右相邻,此时,空区域面积为0,IoU为0。 。
- 假设两个box完全重合,此时,空区域为0,IoU为1。。
可以看出,从0到2,越小越好。但是,作为损失函数会出现以下问题:
下图中,绿色框为真实框,黑色框为先验Anchor,蓝色为预测框。预测框是以先验框为基础进行位置移动和大小缩放。GIOU首先尝试增大预测框的大小,使得它能够与真实框有所重叠(如下图中间所示),然后进行上述公式中 的计算。会消耗大量的时间在预测框尝试与真实框接触上,影响损失的收敛速度。
图4 GIOU回归过程
3.DIOU损失
为了加快收敛速度,DIOU在IOU损失的基础上加一个惩罚项,用来最小化两个检测框中心点之间的标准化距离。
其中,A为预测框,B为真实框;为预测框中心点坐标,为真实框中心点坐标。是欧式距离计算;c为A、B最小包围框的对角线长度。
图5 DIOU回归过程
与GIoU loss类似,DIoU loss在预测框与目标框不重叠时,仍然可以为边界框提供优化移动方向。由于DIoU loss可以直接最小化两个目标框的距离,因此比GIoU loss收敛要快。此外,DIoU还可以替换普通的IoU评价策略,应用于NMS中,使得NMS得到的结果更加合理和有效。
4.CIOU损失
CIOU在DIOU的基础上将长宽比吸纳进来。CIOU损失包括重叠面积、中心点距离和长宽比三项。
其中,和分别表示真实框的宽和高;w和h分别表示预测框的宽和高。
若真实框和预测框的宽高相似,那么为0,该惩罚项就不起作用了。所以很直观地,这个惩罚项作用就是控制预测框的宽高能够尽可能快速地与真实框的宽高接近。