目标检测系列:论文阅读——Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression

这也是2019CVPR的一篇论文,斯坦福大学的,针对IoU进行了改善,提出generalized IoU(GIoU)。

IoU是目标检测等任务中必不可少的一部分,通过计算预测box和标签box之间的IoU对目标进行分类,并且通过IoU阈值进行筛选后边框回归,以修正目标位置和形状。泛化一点,IoU可以衡量任意两个区域的形状相似度,对于区域A和B,IoU=\left |\frac{A\cap B}{A\cup B} \right |

有公式可知,对于任何具体情况,IoU都和区域的大小无关(invariant to the scale of the problem)。其值介于0-1之间,IoU=1表示两个区域形状完全相同,即完全重合;IoU=0表示两个区域完全无重合。在这个程度上,IoU可以理解为一个编码的过程:将形状信息编码为区域信息,通过区域重合性来表示形状相似性。

目前IoU存在的问题:边框回归中,结果通常是边框的两个角点坐标或者是中心点坐标加宽高,通常用L_1L_2 norm计算loss,但L_1L_2 norm的值与IoU并不总是一致的(优化L_1L_2 norm的loss时并不一定优化了IoU,导致边框回归并未向真值靠拢),如下图所示:

在这里插入图片描述

图(a)中使用的是L_2 norm,预测的是左下角和右上角两个点的坐标。当其中一个点(左下角)位置确定后,在L_2 norm的值保持不变时,另一个点(右上角)的位置轨迹为一个圆(虚线所示),只要右上角点在圆上,L_2 norm就一样,但是三个图很明显交并比不同,说明以L_2 norm的值作为loss优化时,由于其和IoU的不一致很可能导致边框回归的结果不理想。

图(b)使用的是L_1 norm,预测的是中心点坐标和宽高。尽管L_1 norm的值是相同的,box的IoU仍然不同。这种情况下,如果考虑边框的旋转会更加复杂,参数变多。因此往往会对box的预测有一些限定,比如提出的anchor概念,就是把box的形状大小离散化,简化了问题,但上面不一致的问题仍然存在。

同时IoU还有一个问题,如下图所示:这三种情况下IoU的值是一样的,但明显回归效果不同,此时IoU并未真正表示边框回归的效果。

在这里插入图片描述

本文提出的generalized IoU,针对两个axis-aligned rectangles/n-orthotopes,可以在训练中反向传播,因此可以直接作为优化目标(应该就不再需要上面的L_1/L_2 norm了),解决了不一致的问题。原始的IoU不能直接作为优化目标的原因是: IoU=0的两个边框,无论它们具体的差距有多大,都无法体现出来。因此只要不重合,形状是否相近是无法通过IoU表现的,此时IoU是无法优化的,因为没有梯度。而generalized IoU即GIoU在保持了IoU关键特性的同时,解决了不重合边框的问题(还有上图IoU表达能力有限的问题)。GIoU算法如下:

很简单,只是在原始IoU上减去一项,这项中有一个object C,是包围A和B的最小box;黄色标注的部分就是C中没有A和B的部分(空白区),用C进行normalize就会得到和IoU一样的性质:invariant to the scale of the problem;IoU减去的这一项表示的意义其实和IoU接近,如果A和B重合度高,这一项就很小,得到的GIoU仍然是大的,它主要的意义是解决了不重合A和B存在的梯度消失问题:此种情况下IoU是相同的,但这一项的值不同,就会得到不同的GIoU值,可以继续优化目标函数。

1)IoU作为优化目标时可以将其视为一种距离(distance),那么目标函数中对应的loss就应该为L_{IoU}=1-IoU;同理,GIoU作为优化目标时有L_{GIoU}=1-GIoU

2)由于减去的第二项是invariant to the scale of the problem的,GIoU同样保持了这个性质;

3)GIoU是一个比IoU更低的界限,因为减去了一项(这一项介于0-1之间),并且有\lim_{A\rightarrow B}GIoU(A,B)=IoU(A,B)

4)IoU是介于0-1的,但GIoU的取值区间是对称的,介于-1到1。GIoU=1表示的意义和IoU相同:A和B完全重合;GIoU=-1时,有\frac{\left |A\cup B \right |}{\left |C \right |}\rightarrow 0,表示A和B完全不重合且相距十分远,因此GIoU是可以表示不重合box间的差距的;

5)IoU只关注了A和B的重合区域,而GIoU还关注了两者不重合的区域,因此有更强的编码/表达能力,更能体现A和B的相似性。

IoU与GIoU的关系如下图:

在IoU>0时,尤其是IoU比较高时,两者是很接近的;当IoU=0时,GIoU并不为0,而是有很长的拖尾。

如果GIoU衡量的是任意形状的两个objects,是很难计算的,但在目标检测任务中,由于边框都是矩形,交集A\cap B和C也都是矩形,并且预测的结果是角点坐标,很容易通过求最大最小值得到。利用IoU和GIoU作为边框回归loss的算法如下:

该算法对应的是预测box的两个角点的情况:

1. 首先找到预测结果中的左下和右上点;

2. 计算真值box面积;

3. 计算预测box面积;

4. 根据两者面积计算交集面积;

5. 根据角点坐标找到最小包围box的角点;

6. 计算包围box面积;

7. 计算IoU;

8. 计算GIoU;

9. 计算两者对应的loss。

本文在YOLO v3,Faster R-CNN,Mask R-CNN等one-stage和two-stage的检测网络上做了实验,效果如下:

其中在one-stage的YOLO v3上的效果比较显著,因为one-stage中没有anchor吧,而two-stage中anchor很密集,能更好地找到效果好的box,GIoU能起到的作用就很小了。

其实去年也有两篇关于IoU的论文,一个是cascade R-CNN吧,好像是级联的结构加上不断提升的IoU阈值,以解决样本不均衡问题;另一个IoU Net是加了个分支网络,预测IoU,然后作为监督信息,以解决分类置信度和IoU之间的不一致问题吧。

这篇论文的网站:https://giou.stanford.edu/,做得好好哦,而且代码也开源了。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值