PIoU Loss论文阅读
(一)Title
前言:作者改变前人在进行OBB回归时,使用水平anchor+angle 以及 distance Loss的范式,而是采用直接最大化IoU作为回归目标,为了计算的方便,作者这里使用Pixels是否在bounding box 内来计算IoU,作者称之为Pixels-IoU。从Method来看,需要对在bounding box内的点进行遍历,来计算两个bounding box的交集和并集。
(二)Summary
使用oriented bounding box(OBB)-带有方向的bounding box进行目标检测可以通过减少与背景区域的重叠来更好地定位目标。
现有的OBB方法大多建立在水平bounding box检测器上,通过引入一个由distance loss来优化的附加角度维度。
这样存在的问题是,由于distance loss只能最小化OBB的角度误差,它与IoU之间的关联并不是很密切,尤其是对于高宽长比的目标不敏感。
作者在文中提出了一种新的损失:Pixels-IoU (PIoU) Loss,同时利用上了角度和IoU进行精确的OBB回归。
PIoU损失是从IoU像素形式的变体,简单且适用于水平和带方向边界框。
性能表现:
我们评估了基于锚和无锚框架的PIoU损失。实验结果表明,PIoU损失可以显著提高OBB探测器的性能,特别是在高纵横比和复杂背景的物体上。
文章的主要贡献点:
- 提出了一种新的损失函数PIoU损失,以提高高长宽比以及复杂环境下的性能
- 提出了一个新的OBB数据集:Retail50K
- PIoU Loss在anchor free或者anchor based方法上都能够提升性能。
(三)Research Object
作者并不希望对angle进行distance regression,而是选择直接计算IoU Loss进行目标回归,在旋转框IoU的计算上作者采用像素IoU进行近似。
(四)Problem Statement
目前大多数检测OBB的框架是在水平anchor上增加一个angle预测分支,利用distance loss来优化angle,由于angle distance Loss和IoU之间的关系并不相关,因此,使用distance loss进行回归时,可能会出现我们对应的损失值是相同的,但是在IoU上的值却不同,因此,作者这里利用IoU来替代回归损失,直接训练IoU Loss使得网络能够更好地学习到高IoU的预测。
但是,旋转框IoU计算很复杂,两个bounding box的交集可能不超过7边形。因此,作者提出计算Pixels来代替真实的IoU值。在anchor-based方法以及anchor-free的方法上对PIoU进行了验证。
(五)Method
5.1 Pixels-IoU(PIoU) Loss
一个理想的Loss function应该有效地引导网络最大化IoU,从而使b的误差最小化,IoU的计算应该是使用相交的面积进行计算,不过,图像上的点都是像素点,这里PIoU使用的就是像素点来计算的IoU。
Notations
- 带方向的bounding box b = ( c x , c y , w , h , θ ) \mathbf{b} = (c_x,c_y,w,h,\theta) b=(cx,cy,w,h,θ)
- b ′ \mathbf{b^{'}} b′ Ground Truth Bounding box
推导PIoU的过程
给定下图,判断 p i , j \boldsymbol{p}_{i, j} pi,j是否在OBB b \boldsymbol{b} b中,OBB的中心点为 c \boldsymbol{c} c:
点 p i , j \boldsymbol{p}_{i, j} pi,j沿着 h \boldsymbol{h} h轴做垂线,和 h \boldsymbol{h} h轴相交点为 t i , j \boldsymbol{t}_{i, j} ti,j,此时 c \boldsymbol{c} c, p i , j \boldsymbol{p}_{i, j} pi,j以及 t i , j \boldsymbol{t}_{i, j} ti,j构成了直角三角形,其中各个边的长度如上图所示,为 d i , j w d_{i, j}^{w} di,jw, d i , j h d_{i, j}^{h} di,jh以及 d i , j d_{i, j} di,j,此时,我们可以利用下面的公式判断点 p i , j \boldsymbol{p}_{i, j} pi,j是否在bounding box b \boldsymbol{b} b中:
δ ( p i , j ∣ b ) = { 1 , d i , j w ≤ w 2 , d i , j h ≤ h 2 0 , otherwise \delta\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right)=\left\{\begin{array}{ll} 1, & d_{i, j}^{w} \leq \frac{w}{2}, d_{i, j}^{h} \leq \frac{h}{2} \\ 0, & \text { otherwise } \end{array}\right. δ(pi,j∣b)={ 1,0,di,jw≤2w,di,jh≤2h otherwise
从上式的关系中,我们可以看出需要计算三角形3个边的长度:我们现在可以利用上的有:bounding box的label ( c x , c y , w , h , θ ) (c_x,c_y,w,h,\theta) (cx,cy,w,h,θ)以及点 p i , j \boldsymbol{p}_{i, j} pi,j的坐标 ( i , j ) (i,j) (i,j):根据这些信息,可以计算出3条边的长度分别为:
d i j = d ( i , j ) = ( c x − i ) 2 + ( c y − j ) 2 d i j w = ∣ d i j cos β ∣ d i j h = ∣ d i j sin β ∣ β = {