zoukankan      html  css  js  c++  java
  • 目标检测回归损失函数简介SmoothL1/IoU/GIoU/DIoU/CIoU Loss

    目标检测任务的损失函数由 Classificition Loss 和 Bounding Box Regeression Loss 两部分构成。本文介绍目标检测任务中近几年来Bounding Box Regression Loss Function的演进过程,其演进路线是Smooth L1 Loss[公式] IoU Loss[公式] GIoU Loss [公式] DIoU Loss [公式] CIoU Loss,本文按照此路线进行讲解。

    IOU

    介绍

    IoU 的全称为交并比(Intersection over Union),通过这个名称我们大概可以猜到 IoU 的计算方法。IoU 计算的是 “预测的边框” 和 “真实的边框” 的交集和并集的比值。计算过程如下:

    IOU的优点:

    IOU可以作为距离,loss=1-IOU。但是当两个物体不相交时无回传梯度。
    IOU对尺度变化具有不变性,即不受两个物体尺度大小的影响。
    以A,B两个box重合的情况为例,若boxes1=[[0,0,10,10],[0,0,5,5]],boxes2=[[0,0,10,10],[0,0,5,5]],此时IOU=[1,1]
    IOU的缺点:
    无法衡量两框是相邻还是甚远
    如下图2所示,两种情况下IOU均为0,(a)中两框距离较近,(b)中两框明显距离要远,但是仅从IOU数值上无法判断两者距离较近还是较远(两个物体不相交时无回传梯度)
    IOU不能反映两个物体如何重叠(相交方式)。


    如下图3所示,两种情况下的IOU均为0.1428,(a)中两框要比(b)中的相交更整齐一些,但是IOU并没有反映出这个特点。

    GIOU

    介绍

    GIOU是为克服IOU的缺点同时充分利用优点而提出的.(论文:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression)

    1.假设A为预测框B为真实框S是所有框的集合
    2.不管A与B是否相交,C是包含A与B的最小框(包含A与B的最小凸闭合框),C也属于S集合
    3.首先计算IoU,A与B的交并比
    4.再计算C框中没有A与B的面积,比上C框面积;
    5.IoU减去前面算出的比;得到GIoU
    6.Note:本文提出的例子中A、B均是矩形框,但是也可以为其他的。比如:A、B为椭圆形,那么此时C将是包含A、B的最小椭圆形;或者A、B均是3D box也可。

    论文作者给出几个GIoU的性质

    对尺度的不变性
    GIoU可认为是IoU的下界,小于等于IoU
    如boxes1=[0,0,10,10],boxes2=[0,0,10,10],此时IOU=1,GIOU=1,这种情况下A与B重合
    boxes1=[0,0,10,10],boxes2=[0,10,10,20],此时IOU=0,GIOU=0
    boxes1=[0,0,10,10],boxes2=[5,5,15,15],此时IOU=0.1428,GIOU=-0.07936
    -1<=GIoU<=1,当A=B时,GIoU=IoU=1;当A与B不相交而且离得很远时,GIoU(A,B)趋向于-1。
    如boxes1=[[10,10,15,15],[100,100,105,105]],boxes2=[5,5,10,10],计算的GIOU为[-0.5,-0.995],即A与B不相交,随着两者距离增加,GIOU值将趋向于-1,如下图6所示。
    因此选用loss=1-GIoU
    GIoU能够更好地反应相交情况。如上面图3所示,虽然两种情况下IOU一致,但是(a)中相交的更为整齐,因此GIOU要比(b)中大。

     GIoU最主要的作用

    (1)对于相交的框,IOU可以被反向传播,即它可以直接用作优化的目标函数。但是非相交的,梯度将会为0,无法优化。此时使用GIoU可以完全避免此问题。所以可以作为目标函数
    (2)可以分辨框的对齐方式

    DIOU

    介绍

    由于IOU Loss在候选框和真实框没有重叠的时候不提供任何移动梯度(LIoU=1-IOU始终为1),于是GIOU Loss引入了一个惩罚项(即图5中的(C-A并B)/C)。由于惩罚项的引入,在不重叠的情况下,预测框会向目标框移动。
    但是考虑如下图图7情况。

     当出现上图情况时,GIoU Loss完全降级成IoU Loss,因此引入DIoU Loss
    ,DIoU Loss是在IoU Loss基础上引入一个惩罚项,定义如下:

    计算公式
    上述损失函数中,b,bgt别代表了anchor框目标框的中心点,且p代表的是计算两个中心点间的欧式距离c代表的是能够同时覆盖anchor和目标框的最小矩形的对角线距离。因此DIoU中对anchor框和目标框之间的归一化距离进行了建模。直观的展示如下图所示。


    图8 距离计算展示

    DIoU的优点如下:
    1.与GIoU loss类似,DIoU loss在与目标框不重叠时,仍然可以为边界框提供移动方向。
    2.DIoU loss可以直接最小化两个目标框的距离,而GIOU loss优化的是两个目标框之间的面积,因此比GIoU loss收敛快得多。
    3.对于包含两个框在水平方向和垂直方向上这种情况,DIoU损失可以使回归非常快,而GIoU损失几乎退化为IoU损失

    CIOU

    介绍
    一个好的目标框回归损失应该考虑三个重要的几何因素:重叠面积、中心点距离、长宽比
    GIoU:为了归一化坐标尺度,利用IoU,并初步解决IoU为零的情况。
    DIoU:DIoU损失同时考虑了边界框的重叠面积和中心点距离。
    然而,anchor框和目标框之间的长宽比的一致性也是极其重要的。基于此,论文作者提出了Complete-IoU Loss。
    CIOU Loss又引入一个box长宽比的惩罚项,该Loss考虑了box的长宽比,定义如下:

    CIOU Loss计算

    上述损失函数中,CIoU比DIoU多出了α和v这两个参数。其中α是用于平衡比例的参数。v用来衡量anchor框和目标框之间的比例一致性。
    惩罚项说明
    从α参数的定义可以看出,损失函数会更加倾向于往重叠区域增多方向优化,尤其是IoU为零的时候。

    DIOU CIOU结果分析

    图9 DIOU CIOU和GIOU结果对比分析

    总结

    DIoU要比GIou更加符合目标框回归的机制,将目标与anchor之间的距离,重叠率以及尺度都考虑进去,使得目标框回归变得更加稳定,不会像IoU和GIoU一样出现训练过程中发散等问题

  • 相关阅读:
    socket 第一课
    _getitem__ __setitem__ __delitem__ __len__
    单继承&多继承 注意点
    面对对象 类&对象
    异常检测
    模块导入
    序列化模块注意点 json&pickle
    re模块
    filter和map
    Maven入门
  • 原文地址:https://www.cnblogs.com/Catherinezhilin/p/15472965.html
Copyright © 2011-2022 走看看