IOUloss系列--经典IOUloss, GIOUloss, DIOUloss 整理笔记(持续更新)

IOUloss系列--经典IOUloss, GIOUloss, DIOUloss 整理笔记 (持续更新)

经典IOUloss

动机:很容易有如下想象,当计算proposal或者bbox与ground truth之间的l1或者l2距离的时候,会出现这样一种情况,两个或多个坐标不同的proposal或者bbox与ground truth的l1或者l2距离相同,为了获得精准的回归框,这种情况是我们所不期待的。回忆一下,无论是l1loss还是Smoothl1loss,都是利用proposal或者bbox独立的四个角点信息来做回归,此时,有这么一种假设:proposal或者bbox的四个点坐标相互独立,而在实际情况中,四点个坐标并非相互独立,而是具有一定的相关性。因此,如果把l1loss或者Smoothl1loss作为回归损失,这是缺少一定的合理性。
公式:IOUloss=-In(IOU),代码中IOUloss = 1 - IOU。
不足:IOU无法详细反应出两个框之间的位置信息。比如当IOU为0时,即proposal或者bbox与ground truth没有交集的时候,IOUloss=1,无法反应两个框之间的距离的远近;显然会有这样一种情况,两个proposal或者bbox与ground truth的IOU相同,但这两个proposal或者bbox却不重合,无法反应这两个框相交的具体情况。

GIOUloss

动机:考虑两个框之间的距离,解决经典IOUloss的不足。
公式
G I O U = I O U − C − ( A ⋃ B ) C GIOU = IOU- {C-(A\bigcup B) \above{1pt} C} GIOU=IOUCC(AB)
GIOU的计算公式中,A为proposal或者bbox,B为ground truth,C为框A和框B的最小包围框。
则GIOUloss的公式为GIOUloss = 1 - GIOU。
不足:当proposal或者bbox完全包裹着ground truth时,IOU和GIOU的值相同,此时GIOU会退化成IOU,即无法区分该情况下两个框的相对位置。

DIOUloss

动机:是否可以直接最小化proposal或者bbox与ground truth之间的归一化距离,已达到更快收敛速度。
公式:定义一个基本IOUloss的公式:
I O U l o s s = 1 − I O U + R ( p r e d , g t ) IOUloss = 1-IOU+R(pred, gt) IOUloss=1IOU+R(pred,gt)
式中,R(pred, gt) 为proposal或者bbox与ground truth的惩罚项。
DIOU的惩罚项如下:
I O U l o s s = ρ 2 ( b _ p r e d , b _ g t ) c 2 IOUloss = {\def\bar#1{#1^2} \bar{ρ}(b\_pred, b\_gt) \above{1pt} \def\bar#1{#1^2} \bar{c}} IOUloss=c2ρ2(b_pred,b_gt)
式中,b_pred和b_gt分别为proposal或者bbox和ground truth的中心点,ρ(·)表示欧式距离,c为proposal或者bbox与ground truth最小外接矩形的对角线距离。
从上述公式可以看出,DIOUloss的优化目标为两个框中心点的欧式距离。很容易发现,当两个框完全重合时,DIOUloss=GIOUloss=经典IOUloss;而当两个框不相交时,DIOUloss=GIOUloss,且当两个框之间的距离接近无穷时,DIOUloss=GIOUloss -> 2。
不足:存在放大预测框错误的情况。比如,两个边长为w且不相交的正方形框,它们中心点距离为2w,容易计算出c为(根号10)w,该情况的DIOU为0.4;当把预测框的边长扩大到2w,且保持两个框中心点距离仍然是2w,容易计算出此时的c为(根号16.25)w,该情况的DIOU为0.246。实际上,第二种情况比第一种情况差,但第二种情况的损失比第一种情况的小,这放大了该情况下预测框的错误,因此会导致小目标样本检测低精度的问题。

猜你喜欢

转载自blog.csdn.net/qq_43114108/article/details/127137224