GIoU Loss阅读笔记
(一)Title
前言:博主查找改进IoU Loss的论文,没有找到2020年的相关论文,仅仅找到3篇论文,分别对应着IoU Loss,GIoU Loss,DIoU/CIoU
- UnitBox: An Advanced Object Detection Network(IoU Loss,2016)
- Generalized Intersection over Union: A Metric and ALoss for Bounding Box Regression (GIOU Loss; CVPR2019)
- Distance-IoU Loss:Faster and Better Learning for Bounding Box Regression(DIOU Loss & CIoU Loss ; CVPR2019)
本篇文章主要基于GIoU Loss。作者在文中指出利用bounding box属性(长宽等)以及L1,L2等距离损失函数进行回归,度量IoU之间并没有一个很强的相关性
(二)Summary
Intersection over Union(IoU)是目标检测benchmarks中最常用的评估指标。然而,借助常用的距离损失函数 s m o o t h l 1 , l 1 smoothl1,l1 smoothl1,l1以及 M S E MSE MSEbounding box的参数,和度量(IoU)最大化之间存在着一定的差异
从上图中可以看出,尽管distance loss的值是相同的,但IoU之间仍然存在着较大的差异,不过同时也可以看出,作者使用的GIoU和真实IoU之间存在很小的差异。
接着作者提出:The optimal objective for a metric is the metric itself。
可是使用IoU作为回归目标,若两个bounding box之间没有交集,也就是IoU的值为0,此时是无法利用IoU来进行优化的。
因此,作者在本文中引入既作为新损失又作为新度量的generalized IoU (GIoU) 来解决IoU存在的问题。
本文的主要贡献:
- 作者将IoU进行扩展,得到Generalized IoU,作为两个任意形状之间的度量
- 并且作者提出的GIoU可以作为两个轴对齐(axis-aligned)矩形的损失函数
- 将GIoU引入到当前的目标检测框架Faster R-CNN,Mask R-CNN以及YOLO v3中,能够实现性能上的提升
(三)Research Object
本文主要研究目标是将IoU扩展到overlap为0的情况下也可以进行优化,同时指出GIoU既可以用作损失函数,又可以用作一种度量,并通过实验证明了相比于传统的使用distance function回归bounding box参数以及IoU Loss上存在的优势。
(四)Problem Statement
由于目标检查任务使用的度量为IoU,而目前大多数的工作是使用bounding box的属性(x,y,w,h)结合distance loss function(Smooth L1,L2,L1)来进行的回归,作者指出使用上述的回归方式和真正的IoU之间并没有存在着较强的 相关性,因此,作者借助The optimal objective for a metric is the metric itself的思想将IoU作为目标函数。
不过作者指出使用IoU作为目标函数,存在着bounding boxes不相交时无法进行优化的问题,因此,作者将IoU的概念进行扩展到bounding box不重叠的情况下,
作者指出,在进行扩展时需要满足的3个条件:
- 首先要和IoU具有相同的定义,也就是需要将被比较的两个boxes的形状属性(宽,高以及位置)等编码到区域属性(region property)上
- 需要保留IoU的尺度不变性
- 在bounding box重叠情况下,保持和IoU之间的强相关性
因此,本文的目的在于,如何引入一个和IoU具有强相关性的损失函数,并且不会存在IoU在bounding box不重叠时无法进行优化的问题?。
(五)Method
5.1 GIoU
对于两个任意的convex shapes
A
,
B
⊆
S
∈
R
n
A, B \subseteq \mathbb{S} \in \mathbb{R}^{n}
A,B⊆S∈Rn,首先找到包含
A
A
A和
B
B
B的两个最小凸集
C
⊆
S
∈
R
n
C \subseteq \mathbb{S} \in \mathbb{R}^{n}
C⊆S∈Rn
关于C的说明说下:当比较两个特定类型的几何形状时,C可以来自同一个类型,也就是说对于两个任意椭球,C可以是包围它们的最小椭球
我们计算 C C C(不包括A和B)占据的体积(面积)除以C占据的总体积(面积)之间的比率。然后从IoU值中减去该比率来获得GIoU。如上图所示。
并且GIoU满足之前所提到的度量的所有性质,并且GIoU是IoU的一个下界:
∀ A , B ⊆ S , GIoU ( A , B ) ≤ IoU ( A , B ) \forall A, B \subseteq \mathbb{S}, \operatorname{GIoU}(A, B) \leq \operatorname{IoU}(A, B) ∀A,B⊆S,GIoU(A,B)≤IoU(A,B),并且当A和B的形状和位置非常接近时,GIoU的值将无限逼近IoU的值, lim A → B GIoU ( A , B ) = IoU ( A , B ) \lim _{A \rightarrow B} \operatorname{GIoU}(A, B)=\operatorname{IoU}(A, B) limA→BGIoU(A,B)=IoU(A,B)
我们知道 ∀ A , B ⊆ S , 0 ≤ IoU ( A , B ) ≤ 1 \forall A, B \subseteq \mathbb{S},0 \leq \operatorname{IoU}(A, B) \leq 1 ∀A,B⊆S,0≤IoU(A,B)≤1,而 ∀ A , B ⊆ S , − 1 ≤ GIoU ( A , B ) ≤ 1 \forall A, B \subseteq \mathbb{S},-1 \leq \operatorname{GIoU}(A, B) \leq 1 ∀A,B⊆S,−1≤GIoU(A,B)≤1,
当 ∣ A ∩ B ∣ = ∣ A ∪ B ∣ |A \cap B| = |A \cup B| ∣A∩B∣=∣A∪B∣时, GIoU ( A , B ) = IoU ( A , B ) = 1 \operatorname{GIoU}(A, B) = \operatorname{IoU}(A, B)=1 GIoU(A,B)=IoU(A,B)=1
当 lim ∣ A ∪ B ∣ ∣ C ∣ → 0 GIoU ( A , B ) = − 1 \lim _{\frac{|A \cup B|}{|C|} \rightarrow 0} \operatorname{GIoU}(A, B)=-1 lim∣C∣∣A∪B∣→0GIoU(A,B)=−1,也就是说 ∣ A ∪ B ∣ |A \cup B| ∣A∪B∣在 ∣ C ∣ |C| ∣C∣中占非常小的一部分时。
GIoU可以用于损失和度量函数
(六)Experiments
6.1 YOLOv3
使用YOLOv3作者发布的YOLO v3版本实现,backbone为Darknet608,使用MSE损失进行训练,同时使用相同的训练策略,作者进行的调整,主要是将bounding box回归和使用IoU和GIoU损失进行替换,这部分在源码上的改动是非常少的
在PASCAL VOC 2007上的表现结果
使用GIoU Loss能进一步提升AP的表现。
在MS COCO上的表现结果
COCO 2014验证集上的表现
提交到测试服务器上的表现结果
在类别损失和average IoU上的表现
可以看出在精度上取得了较好的效果,不过存在着类别loss收敛问题,作者认为这主要是由于分类和IoU损失权重参数没有进行很好的设置导致的。
6.2 Faster R-CNN and Mask R-CNN
训练策略
- 使用Facebook最新的关于Faster RCNN和Mask R-CNN的实现
- backbone使用ResNet-50
- 在IoU损失和分类损失以及segmentation损失权衡之中,作者将 L I o U \mathcal{L}_{I o U} LIoU和 L G I o U \mathcal{L}_{G I o U} LGIoU分别乘上10倍
实验结果
使用GIoU Loss的提升相比于IoU Loss要有改进,同时,可以在下图中观察出来
其他的几个表现结果
和YOLOv3的结果相比,在Faster R-CNN以及mask R-CNN中的提升要小不少,作者分析原因是
- 首先,Faster R-CNN和mask R-CNN 上的检测anchores比YOLO v3 更密集,导致 L G I o U \mathcal{L}_{GIoU} LGIoU作为对非重叠边界框的扩展,比 L I o U \mathcal{L}_{IoU} LIoU具有优势的情况不太常见。
- 在PASCAL VOC中,bounding boxes的参数进行了naively tuned,导致了在COCO上的结果是次优的。
(七)Conclusion
作者提出的GIoU,既可以作为Loss函数,解决了IoU在没有overlap时存在的无法优化的问题,同时也可以作为一个度量用在目标检测任务中。作者的feature work是在旋转框中引入GIoU。
(八)Notes
8.1 提升深度学习在应用中的性能的方法
- 修改backbone
- 修改局部特征提取的方法
The dominant trend for improving performance of applications utilizing deep neural networks is to propose either a better architecture backbone or a better strategy to extract reliable local features.
然而,存在着另一个常常被忽略的提升方法是:使用IoU作为损失。
8.2 关于IoU的介绍
Iou,又称为Jaccard指数:是比较两个任意形状之间相似性的最常用指标。
I
o
U
=
∣
A
∩
B
∣
∣
A
∪
B
∣
I o U=\frac{|A \cap B|}{|A \cup B|}
IoU=∣A∪B∣∣A∩B∣
其中
A
,
B
⊆
S
∈
R
n
A, B \subseteq \mathbb{S} \in \mathbb{R}^{n}
A,B⊆S∈Rn
将IoU用作很多2D/3D计算机视觉任务中的原因在于
- IoU可以看成是衡量两个任意形状之间的距离度量,损失函数可以记作 L I o U = 1 − I o U \mathcal{L}_{I o U}=1-I o U LIoU=1−IoU,而且损失函数 L I o U \mathcal{L}_{I o U} LIoU满足一个度量(metric)的所有属性:非负性,indentity of indiscernibles(当且仅当两个任意形状的objects形状完全相同时,值为0),对称性以及三角不等式
- IoU具有尺度不变性(invariant to the scale)
然而IoU存在着的问题是:
当 ∣ A ∩ B ∣ = 0 |A \cap B| = 0 ∣A∩B∣=0时,IoU没有办法reflect两个shapes之间是彼此靠近还是彼此距离很远
IoU在比较时编码了目标的属性(包括长,宽以及位置信息),基于面积计算出一个归一化的数值,在segmentation,object detection,tracking中都依赖这个度量指标。
IoU用于确定一组预测中的true positive和false positive率,并且必须要选定一个阈值。
8.3 使用xywh以及distance Loss进行回归存在的问题:
- 和IoU之间并没有存在较强的相关性,也就是distance loss对应的局部最小值未必就是IoU度量下一个一个局部极大值
- 使用xywh以及distance loss进行回归时,xy是定义在位置空间(location space)上,而wh则是定义尺度空间上的(size space)
8.4 将IoU引入Loss中的一些研究工作
- 用approximate function或者surrogate loss来优化IoU
- 直接或者间接结合IoU来更好地执行bounding box回归,然而在bounding box非重叠情况下,往往采用近似方式或者是IoU的值取0
8.5 如何将GIoU用作损失函数
首先指出GIoU存在的一个问题是找到两个任意形状之间的交集以及最小闭包是不存在解析解的
很幸运的是,对于2D的目标检测,作者可以证明GIoU的计算可以被简化,原因在于两个aligned axis的交集和最小闭包都是矩形,因此可以通过最大/最小顶点坐标来得到GIoU的交集和最小闭包
在反向求导中,max,min以及piece-wise linear functions比如ReLU都是可行的,从上图中可以看出,每一个部分都是可导的,并在即使在bounding box没有交集的时候,仍然存在着梯度。
上面的图是10K个随机生成的2维矩阵之间的IoU和GIoU的对应图,可以看出在高IoU值时,GIoU与IoU有很强的相关性,同时在box低重叠情况下, I o U ≤ 0.2 和 G I o U ≤ 0.2 IoU ≤ 0.2和GIoU ≤ 0.2 IoU≤0.2和GIoU≤0.2时,GIoU的变化显然要更加显著一些,在这些情况下,与IoU相比,GIoU在任何可能的状态下都可能具有更陡的梯度,因此即使是使用IoU作为度量,使用GIoU作为损失函数,是比IoU更加好的一个选择
Loss的稳定性问题
Ground Truth box
B
g
B^{g}
Bg的面积是大于0的,也就是
A
g
>
0
A^g >0
Ag>0,
对于任何一个预测框 B p = ( x 1 p , y 1 p , x 2 p , y 2 p ) B^{p}=\left(x_{1}^{p}, y_{1}^{p}, x_{2}^{p}, y_{2}^{p}\right) Bp=(x1p,y1p,x2p,y2p)来说,算法2中的1和4保证了预测矩形的面积 A p A^p Ap以及他们的交集 I \mathcal{I} I是非负的,也就是 A p ≥ 0 and I ≥ 0 , ∀ B p ∈ R 4 A^{p} \geq 0 \text { and } \mathcal{I} \geq 0 ,\forall B^{p} \in \mathbb{R}^{4} Ap≥0 and I≥0,∀Bp∈R4成立,由于两个box的面积都是大于0的,因此,两个box的并集 U > 0 \mathcal{U}>0 U>0,因此IoU的分母一直为正的,并且 I ≤ U \mathcal{I} \leq \mathcal{U} I≤U,也就是说IoU对应的损失值 L I o U \mathcal{L}_{IoU} LIoU总是有界的, 0 ≤ L I o U ≤ 1 ∀ B p ∈ R 4 0 \leq \mathcal{L}_{I o U} \leq 1 \forall B^{p} \in \mathbb{R}^{4} 0≤LIoU≤1∀Bp∈R4
而GIoU相比于IoU而言,仅仅似乎多了一项 A c − U A c \frac{A^{c}-\mathcal{U}}{A^{c}} AcAc−U,接下来需要说明这一项也是有界的
由于 A c A^c Ac是 B g B^g Bg和 B p B^p Bp最小闭包的面积,因此,一定存在着 A c ≥ A g > 0 A^c \ge A^g \gt 0 Ac≥Ag>0,因此分母的值总是正的,同时易知 A c ≥ U A^c \ge \mathcal{U} Ac≥U,故可以得到 0 ≤ L G I O U ≤ 2 , ∀ B p ∈ R 4 0 \leq \mathcal{L}_{G I O U} \leq 2, \forall B^{p} \in \mathbb{R}^{4} 0≤LGIOU≤2,∀Bp∈R4
考虑当IoU为0时,定性分析 L G I o U L_{GIoU} LGIoU损失的变化情况:此时 L G I o U = 1 − G I o U = 1 + A 2 − U A c − I o U \mathcal{L}_{G I o U}=1-G I o U=1+\frac{A^{2}-U}{A^{c}}-I o U LGIoU=1−GIoU=1+AcA2−U−IoU,由于 I o U = 0 IoU=0 IoU=0,因此我们可知两个box之间的交集大小 I \mathcal{I} I同样为0,因此,此时的 L G I o U = 2 − U A c \mathcal{L}_{G I o U}= 2-\frac{\mathcal{U}}{A^{c}} LGIoU=2−AcU,而此时的 0 ≤ U A c ≤ 1 0 \leq \frac{\mathcal{U}}{A^{c}} \leq 1 0≤AcU≤1,这里由于两个box不相交,因此, U = A g + A p \mathcal{U} = A^g+A^p U=Ag+Ap,而对于网络来说,只能改变的是预测框的输出,为了使得损失减小,可以令 A p A^p Ap面积不断增大,这样会使得 A p A^p Ap在 A c A^c Ac中的比例接近1,从而使得 B p B^p Bp的预测框沿着某个方向进行移动,导致出现overlap的情况。