损失函数(IoU、GIoU、DIoU、CIoU)

一:IoU

1:笔记原页

损失函数(IoU、GIoU、DIoU、CIoU)_第1张图片

损失函数(IoU、GIoU、DIoU、CIoU)_第2张图片

IoU Loss = 1-IoU

2:IOU优缺点
目标检测中常常用iou来衡量proposal或anchor和gt之间的重合度,也就是他们之间的交并比,是目标检测中重要的评价尺度,鲜明的特点就是对尺度scale不敏感。然而没有方向信息,无法指导神经网络应该如何调整:

    · 如果两个框没有交集,则IOU=0,不能反映两者距离的大小,并且loss=0,没有梯度回传,神         经网络无法学习;
     ·IoU无法精确的反映两者的重合度大小

     ·不能反映两个物体如何重叠

3:IoU Loss特性:

具有非负性、尺度不变性(即不受两个物体尺度大小的影响)、同一性、对称性、三角不等性等特点,因此对bounding box的回归任务比较友好。

但是当预测框与真实框不相交时,此时IoU为0,并且不会反应两个目标之间的距离,在这种无重叠目标的情况下,如果IoU用作于损失函数,梯度为0,无法优化,网络将无法进行训练。

二:GIoU

论文:https://arxiv.org/abs/1902.09630

github代码:https://github.com/generalized-iou

1:定义

先计算两个框的最小闭包区域面积,再计算闭包区域中都不属于两个框的区域占闭包区域面积的比重,再计算IOU,最后用IOU减去这个比重就能得到GIOU。

2:笔记原页

损失函数(IoU、GIoU、DIoU、CIoU)_第3张图片

损失函数(IoU、GIoU、DIoU、CIoU)_第4张图片

GIoU Loss是为了解决IoU当B与G不相交时,Loss为0的问题

3:特点

也是一种距离度量,满足损失函数要求
对scale不敏感
GIOU的下界,在两个框重合的情况下,IOU=GIOU
IOU取值[0,1],而GIOU取值[-1, 1],两者重合时为1,两者不重合,并且距离无线远的时候取值-1,因此是一个非常好的距离度量指标(因为两个框没有重合且距离无线远时,闭包区域中都不属于两个框的区域和最小闭包区域可看做相等,因此比值为1,iou减去这个比值就是-1

GIoU能够更好地反应相交情况(如下图)。

损失函数(IoU、GIoU、DIoU、CIoU)_第5张图片

4:最小区域C的计算

就是读取AB中最小的Xmin,Ymin坐标,最大的Xmax,Ymax坐标,围成的区域就是要求的集合C

三:DIoU Loss

论文:https://arxiv.org/abs/1911.08287?context=cs.CV

GIoU Loss虽然解决了IoU Loss中Loss为0的问题,但是依然存在一些不足。

首先,因为GIoU主要是在收敛Ac-U这个值,这么收敛会导致网络优先选择扩大bounding box的面积来覆盖ground truth,而不是去移动bounding box的位置去覆盖ground truth。

其次,如下图所示,当B覆盖G或者被G覆盖时,只要B与G的面积不变,不管B与G的位置在哪里,IoU Loss与GIoU Loss都是一个定值。

损失函数(IoU、GIoU、DIoU、CIoU)_第6张图片

损失函数(IoU、GIoU、DIoU、CIoU)_第7张图片

损失函数(IoU、GIoU、DIoU、CIoU)_第8张图片

损失函数(IoU、GIoU、DIoU、CIoU)_第9张图片

损失函数(IoU、GIoU、DIoU、CIoU)_第10张图片

相比GIoU,DIoU限制的不是最小外接矩与B与G并集面积的差值,而是直接限制了最小外接矩的面积和B与G中心点的位置,这会使得网络更倾向于移动bounding box的位置来减少Loss。同时也加入了IoU元素来使bounding box与ground truth的覆盖面积更加接近。

同样的DIoU也有着与GIoU相同的一些特性和取值范围。


四:CIoU Loss

 

损失函数(IoU、GIoU、DIoU、CIoU)_第11张图片

损失函数(IoU、GIoU、DIoU、CIoU)_第12张图片

损失函数(IoU、GIoU、DIoU、CIoU)_第13张图片

参考链接:参考1  参考2 参考3 参考4 参考5

纯属笔记用,方便自己的查阅和复习。

小白学习中。

如有侵权,请联系我删除,感谢各位大佬的博客。

你可能感兴趣的:(学习笔记,机器学习,深度学习)