学习笔记,内容有借鉴

Smooth L1 Loss-> IoU Loss ->GIoU Loss -> DIoU Loss ->CIoU Loss

这个属于优化模型的一种方法

目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_IoU

缺点:

  • 上面的三种Loss用于计算目标检测的Bounding Box Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box Loss,这种做法的假设是4个点是相互独立的,实际是有一定相关性的
  • 实际评价框检测的指标是使用IOU,这两者是不等价的,多个检测框可能有相同大小的 Loss,但IOU可能差异很大,为了解决这个问题就引入了IOU LOSS。

IoU Loss

旷世科技提出来的,Yolo V3使用的损失函数

目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_IoU_02

图(a)中的三组框具有相同的L2 Loss,但其IoU差异很大;图(b)中的三组框具有相同的L1 Loss,但IoU 同样差异很大,说明L1,L2这些Loss用于回归任务时,不能等价于最后用于评测检测的IoU.


目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_目标检测_03

 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_回归损失函数_04

 GIoU Loss

缺点:

  • 当预测框和目标框不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况。
  • 假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其IoU值是相同时,IoU值不能反映两个框是如何相交的。

目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_SmoothL1_05

如上图所示,三种不同相对位置的框拥有相同的IoU=0.33值,但是拥有不同的GIoU=0.33,0.24,-0.1。当框的对齐方向更好一些时GIoU的值会更高一些。

目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_IoU_06

DIoU Loss

GIoU Loss不足

目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_SmoothL1_07

当目标框完全包裹预测框的时候,IoU和GIoU的值都一样,此时GIoU退化为IoU, 无法区分其相对位置关系;此时作者提出的DIoU因为加入了中心点归一化距离,所以可以更好地优化此类问题。

启发点:

基于IoU和GIoU存在的问题,作者提出了两个问题:

  • 第一:直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。
  • 第二:如何使回归在与目标框有重叠甚至包含时更准确、更快。

好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。基于问题一,作者提出了DIoU Loss,相对于GIoU Loss收敛速度更快,该Loss考虑了重叠面积和中心点距离,但没有考虑到长宽比;针对问题二,作者提出了CIoU Loss,其收敛的精度更高,以上三个因素都考虑到了。

Distance-IoU Loss

  • 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_GIoU_08


目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_SmoothL1_09

上图中绿色框为目标框,黑色框为预测框,灰色框为两者的最小外界矩形框,d表示目标框和真实框的中心点距离,c表示最小外界矩形框的距离。

CIoU Loss

Complete-IoU Loss

  • 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_SmoothL1_10

 各种Loss给人感觉是不停的打补丁,

目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss_GIoU_11