目标检测--IoU,GIoU,DIoU和CIoU三种目标检测loss
https://zhuanlan.zhihu.com/p/94799295
https://zhuanlan.zhihu.com/p/366744055
https://zhuanlan.zhihu.com/p/359982543
Iou
GIou
DIou
CIou
IoU:使用最广泛的检测框loss。
GIoU:2019年CVPR Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
DIoU和CIoU:2020年AAAI Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression
下面我们直接一句话总结一下这四种算法的优缺点:
-
IoU算法是使用最广泛的算法,大部分的检测算法都是使用的这个算法。
-
GIoU考虑到,当检测框和真实框没有出现重叠的时候IoU的loss都是一样的,因此GIoU就加入了C检测框(C检测框是包含了检测框和真实框的最小矩形框),这样就可以解决检测框和真实框没有重叠的问题。但是当检测框和真实框之间出现包含的现象的时候GIoU就和IoU loss是同样的效果了。
-
DIoU考虑到GIoU的缺点,也是增加了C检测框,将真实框和预测框都包含了进来,但是DIoU计算的不是框之间的交并,而是计算的每个检测框之间的欧氏距离,这样就可以解决GIoU包含出现的问题。
-
CIoU就是在DIoU的基础上增加了检测框尺度的loss,增加了长和宽的loss,这样预测框就会更加的符合真实框。
这些只是我看的重点,详细的还需要大家去阅读论文看一下效果。
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的缺点同时充分利用优点而提出的
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最主要的作用:
(1)对于相交的框,IOU可以被反向传播,即它可以直接用作优化的目标函数。但是非相交的,梯度将会为0,无法优化。此时使用GIoU可以完全避免此问题。所以可以作为目标函数
(2)可以分辨框的对齐方式