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

Posted studyer_domi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss相关的知识,希望对你有一定的参考价值。

学习笔记,内容有借鉴,可以参考原文:

目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss - 知乎

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

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

缺点:

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

IoU Loss

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

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

 

 

 GIoU Loss

缺点:

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

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

DIoU Loss

GIoU Loss不足

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

启发点:

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

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

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

Distance-IoU Loss

 

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

CIoU Loss

Complete-IoU Loss

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

 

 

以上是关于目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss的主要内容,如果未能解决你的问题,请参考以下文章

目标检测回归损失函数 IOUGIOUDIOUCIOUEIOUFocal EIOUalpha IOU损失函数分析

目标检测中回归损失函数(L1Loss,L2Loss,Smooth L1Loss,IOU,GIOU,DIOU,CIOU,EIOU,αIOU ,SIOU)

使用自定义目标/损失函数的随机森林回归器(Python/Sklearn)

08-02 机器学习算法原理

史诗级干货长文线性回归算法

统计学习方法[6]——逻辑回归模型