PIoU Loss: Towards Accurate Oriented Object Detection in Complex Environments论文笔记

该论文提出了一种名为Pixels-IoU(PIoU)的损失函数,用于改进旋转边界框(OBB)的目标检测。PIoU损失直接优化IoU,解决了传统角度距离损失与IoU相关性不强的问题,尤其适用于高纵横比目标。实验在基于锚点和无锚点的框架上展示了PIoU损失的优越性,并在Retail50K数据集上取得了显著效果,证明了其在复杂环境下的鲁棒性。
摘要由CSDN通过智能技术生成

(一)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,jb)={1,0,di,jw2w,di,jh2h 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 ⁡ β ∣ β = { θ + arccos ⁡ c x − i d i j , c y − j ≥ 0 θ − arccos ⁡ c x − i d i j , c y − j < 0 \begin{aligned} d_{i j} &=d(i, j)=\sqrt{\left(c_{x}-i\right)^{2}+\left(c_{y}-j\right)^{2}} \\ d_{i j}^{w} &=\left|d_{i j} \cos \beta\right| \\ d_{i j}^{h} &=\left|d_{i j} \sin \beta\right| \\ \beta &=\left\{\begin{array}{ll} \theta+\arccos \frac{c_{x}-i}{d_{i j}}, & c_{y}-j \geq 0 \\ \theta-\arccos \frac{c_{x}-i}{d_{i j}}, & c_{y}-j<0 \end{array}\right. \end{aligned} dijdijwdijhβ=d(i,j)=(cxi)2+(cyj)2 =dijcosβ=dijsinβ={θ+arccosdijcxi,θarccosdijcxi,cyj0cyj<0
到目前这里的疑问是:这里的 θ \theta θ的定义是什么?以及 θ \theta θ的取值范围是什么?从上面计算 β \beta βd的情况来看, θ \theta θ貌似是 h \boldsymbol{h} h轴和x轴方向夹角,逆时针为正(不过这仅仅是博主个人理解,详细的需要查看代码)
作者在这里指出,当计算PIoU时,仅仅需要计算的是包含bounding box b \boldsymbol{b} b以及Ground Truth b ′ \boldsymbol{b^{'}} b的最小水平框 B b , b ′ B_{b, b^{\prime}} Bb,b中的点就行了,但是这种情况下对于计算丝毫不想交的有劣势,对应的面积会很大,不过可以做一个预处理看包含bounding box b \boldsymbol{b} b的最小水平框,以及包含Ground Truth b ′ \boldsymbol{b^{'}} b最小水平框的两个是否存在交集。
接着得到了 S b ∩ b ′ S_{b \cap b^{\prime}} Sbb S b ∪ b ′ S_{b \cup b^{\prime}} Sbb的计算方法:
S b ∩ b ′ = ∑ p i , j ∈ B b , b ′ δ ( p i , j ∣ b ) δ ( p i , j ∣ b ′ ) S b ∪ b ′ = ∑ p i , j ∈ B b , b ′ δ ( p i , j ∣ b ) + δ ( p i , j ∣ b ′ ) − δ ( p i , j ∣ b ) δ ( p i , j ∣ b ′ ) \begin{array}{c} S_{b \cap b^{\prime}}=\sum_{p_{i, j} \in B_{b, b^{\prime}}} \delta\left(p_{i, j} \mid b\right) \delta\left(p_{i, j} \mid b^{\prime}\right) \\ S_{b \cup b^{\prime}}=\sum_{p_{i, j} \in B_{b, b^{\prime}}} \delta\left(p_{i, j} \mid b\right)+\delta\left(p_{i, j} \mid b^{\prime}\right)-\delta\left(p_{i, j} \mid b\right) \delta\left(p_{i, j} \mid b^{\prime}\right) \end{array} Sbb=pi,jBb,bδ(pi,jb)δ(pi,jb)Sbb=pi,jBb,bδ(pi,jb)+δ(pi,jb)δ(pi,jb)δ(pi,jb)
但是上面的 δ \delta δ函数是不可导的,作者这里使用核函数来替换 δ \delta δ函数
δ ( p i , j ∣ b ) ≈ F ( p i , j ∣ b ) = K ( d i , j w , w ) K ( d i , j h , h ) \delta\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right) \approx F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right)=K\left(d_{i, j}^{w}, w\right) K\left(d_{i, j}^{h}, h\right) δ(pi,jb)F(pi,jb)=K(di,jw,w)K(di,jh,h)
其中核函数 K ( d , s ) K(d, s) K(d,s)的表达形式如下所示:
K ( d , s ) = 1 − 1 1 + e − k ( d − s ) K(d, s)=1-\frac{1}{1+e^{-k(d-s)}} K(d,s)=11+ek(ds)1
其中 F ( p i , j ∣ b ) F\left(\boldsymbol{p}_{i, j} \mid \boldsymbol{b}\right) F(pi,jb)满足当 p i , j p_{i,j} pi,j b \boldsymbol b b中时,取值接近于1,当不在 b \boldsymbol b b中时,取值接近0.因此将原来式子中的 δ \delta δ F F F函数替换得到:
S b ∩ b ′ ≈ ∑ p i , j ∈ B b , b ′ F ( p i , j ∣ b ) F ( p i , j ∣ b ′ ) S b ∪ b ′ ≈ ∑ p i , j ∈ B b , b ′ F ( p i , j ∣ b ) + F ( p i , j ∣ b ′ ) − F ( p i , j ∣ b ) F ( p i , j ∣ b ′ ) \begin{array}{c} S_{b \cap b^{\prime}} \approx \sum_{p_{i, j} \in B_{b, b^{\prime}}} F\left(p_{i, j} \mid b\right) F\left(p_{i, j} \mid b^{\prime}\right) \\ S_{b \cup b^{\prime}} \approx \sum_{p_{i, j} \in B_{b, b^{\prime}}} F\left(p_{i, j} \mid b\right)+F\left(p_{i, j} \mid b^{\prime}\right)-F\left(p_{i, j} \mid b\right) F\left(p_{i, j} \mid b^{\prime}\right) \end{array} Sbbpi,jBb,bF(pi,jb)F(pi,jb)Sbbpi,jBb,bF(pi,jb)+F(pi,jb)F(pi,jb)F(pi,jb)
接着我们可以利用交集和并集之间的关系,计算 S b ∪ b ′ \mathrm{S}_{b \cup b^{\prime}} Sbb,从而减小一定的计算量
S b ∪ b ′ = w × h + w ′ × h ′ − S b ∩ b ′ S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}=w \times h+w^{\prime} \times h^{\prime}-S_{\boldsymbol{b} \cap \boldsymbol{b}^{\prime}} Sbb=w×h+w×hSbb
其中 ( w , h ) (w,h) (w,h) ( w ′ , h ′ ) (w^{'},h^{'}) (w,h)分别是OBB b \boldsymbol {b} b和OBB b ‘ \boldsymbol {b^{‘}} b的长宽值,因此,作者提出的PIoU的计算可以表示为:
P I O U ( b , b ′ ) = S b ∩ b ′ S b ∪ b ′ P I O U\left(\boldsymbol{b}, \boldsymbol{b}^{\prime}\right)=\frac{S_{\boldsymbol{b} \cap \boldsymbol{b}^{\prime}}}{S_{\boldsymbol{b} \cup \boldsymbol{b}^{\prime}}} PIOU(b,b)=SbbSbb
这里作者将positive anchor定义为和Ground Truth之间IoU超过0.5框,将集合M计作所有positive anchor以及其对应的Ground Truth anchor的二元组 ( b , b ‘ ) (\boldsymbol{b},\boldsymbol {b^{‘}}) (b,b),计算M中所有对的PIoU,求和取平均,取负号得到了最终的pious损失:
L piou = − ∑ ( b , b ′ ) ∈ M ln ⁡ P I o U ( b , b ′ ) ∣ M ∣ L_{\text {piou}}=\frac{-\sum_{\left(\boldsymbol{b}, \boldsymbol{b}^{\prime}\right) \in M} \ln P I o U\left(\boldsymbol{b}, \boldsymbol{b}^{\prime}\right)}{|M|} Lpiou=M(b,b)MlnPIoU(b,b)

作者指出,这里使用的PIoU同样可以对不相交的bounding box使用,因为 K ( d , s ) = 1 − 1 1 + e − k ( d − s ) K(d, s)=1-\frac{1}{1+e^{-k(d-s)}} K(d,s)=11+ek(ds)1始终为一正值,此时依然会有梯度反传。除此之外,PIoU同样在非旋转框上使用,只需要将 θ = 0 \theta = 0 θ=0即可。

(六)Experiment

6.1 实验细节

Anchor-based 方法使用RefineDet,Anchor-free的方法使用CenterNet,硬件条件i7-6850K CPU,64GB installed memory,1080Ti GPU显卡,batchsize训练为8,测试时为1
Anchor-based OBB检测器
这里将回归损失完全用IoU Loss来代替,同时保留原来的分类损失,使用ResNet以及VGG作为backbone,带方向的anchor通过旋转水平anchor k π / 6 k \pi / 6 kπ/6,其中 0 ≤ k < 6 0 \leq k<6 0k<6,这里的anchor指的是预设anchor吗?
实验设置:

  • input image resize到512*512
  • 2个GPU,每一个GPU上使用8张图,
  • SGD,momentum 0.9,weight decay 0.0005,一共训练了120个epoch,初始学习率为0.0001,在60个epoch以及90个epoch分别缩小了10倍,

Anchor-free 旋转框目标检测

  • 增加了一个角度分支,使用L1 Loss作为baseline,
  • 修改回归损失为PIoU loss,使用DLA以及ResNet作为backbone模型,
  • 训练阶段,输入图像倍resized到512*512,采用mini-batch训练,两块GPU,每一块GPU上16张图片,
  • 采用ADAM进行训练,学习率0.0005,总共训练120个epoch,其中学习率在60个epoch以及90个epoch分别下降了10倍。

6.2 Ablation Study

对核函数中的超参数k进行Ablation Study
在这里插入图片描述
对损失函数的Ablation 实验
在这里插入图片描述

我觉得这里的区别会不会是HPIOU Loss的 S b ∪ b ′ = w × h + w ′ × h ′ − S b ∩ b ′ S_{b \cup b^{\prime}}=w \times h+w^{\prime} \times h^{\prime}-S_{b \cap b^{\prime}} Sbb=w×h+w×hSbb,而PIoU Loss是利用 S b ∪ b ′ ≈ ∑ p i , j ∈ B b , b ′ F ( p i , j ∣ b ) + F ( p i , j ∣ b ′ ) − F ( p i , j ∣ b ) F ( p i , j ∣ b ′ ) S_{b \cup b^{\prime}} \approx \sum_{p_{i, j} \in B_{b, b^{\prime}}} F\left(p_{i, j} \mid b\right)+F\left(p_{i, j} \mid b^{\prime}\right)-F\left(p_{i, j} \mid b\right) F\left(p_{i, j} \mid b^{\prime}\right) Sbbpi,jBb,bF(pi,jb)+F(pi,jb)F(pi,jb)F(pi,jb)得到的。

在水平bounding box回归损失函数上的实验
在这里插入图片描述
PIoU Loss在水平框上同样具有较高的AP值

6.3 Benchmark

在这里插入图片描述
PIoU损失下实现了显著的改进,并且零售50K中PIoU损失的改善比DOTA中的改善更明显,这意味着所提出的PIoU损失对于具有高纵横比和复杂环境的对象非常有用

在HRSC2016数据集上的表现
在这里插入图片描述
在DOTA数据集上的表现
在这里插入图片描述
Smooth L1和 PIoU在3个数据集结果的可视化表现
在这里插入图片描述

(七)Conclusion

作者在本文中提出使用PIoU Loss代替传统的回归损失(包括,w,h以及角度回归),并通过在anchor-based 以及anchor-free的框架上实现了上述的PIoU Loss。

(八)Notes

8.1 现有的OBB角度回归做法以及我们的做法

现有的OBB方法

现有的基于OBB的方法大多建立在基于锚的框架上,通过引入一个额外的角度维度,表示为参数元组 ( c x , c y , w , h , θ ) (c_x,c_y,w,h,\theta) (cxcywhθ),OBB主要用于航空图像简单旋转目标检测,但是检测性能有限,其中一个原因就是这些方法中的距离损失Smooth L1,主要集中在最小化角度误差,而不是全局IoU
当长宽比非常大时,即使我们的角度差异很小,但是IoU上的差异还是非常大的,IoU上的差异受到长宽比的影响较大。从下图中可以看出,直接使用距离损失很容易造成IoU和损失函数之间相关性很差的问题,再加上classification score和IoU之间相关性很差的问题,效果就会更加糟糕。这里使用PIoU Loss解决distance loss和IoU之间相关性很差的问题
在这里插入图片描述
作者这里提出的PIoU Loss可以直接反映IoU相关性,可是,因为相交的OBB的形状可能是小于8变形的任意形状,在计算上要比BB复杂的多,PioU Loss是连续可导函数,并且联合关联了OBB的五个参数

作者OBB方法
变换损失函数,使用IoU损失,由于IoU的计算对于旋转框来说十分复杂,因此,作者采用了利用像素是否在bounding box中才近似IoU,使用核函数代替 δ \delta δ函数。具体的实现过程,可以参考(五)小节中关于PIoU的推导。

8.2 Retail50K 数据集介绍

OBB检测器已经被积极地研究了很多年,大多数数据集只关注航空图像,如下图中的a,b所示,而少数基于现有数据集(MSOCO,PASCAL VOC,ImageNet )进行注释。
在这里插入图片描述
Retail50K和现有一些OBB数据集之间的情况展示

在这里插入图片描述

作者通过Retail50K研究OBB在复杂场景下的表现。

Retail50K中的图片是从中国和美国的20家超市商店收集的。数十名志愿者使用他们的个人手机摄像头获取数据。为了增加数据的多样性,在多个城市从不同的志愿者那里收集了图像。图像质量和视图设置不进行要求,因此收集的图像代表不同的比例、视角、照明条件、噪声水平和其他可变性来源。我们还记录了原始图像的(meta data)元数据,如拍摄时间、志愿者姓名、商店名称和MD5 校验和,以过滤掉重复的图像。
在RetailNet中仅仅有一个类别,在标注之前,图像被统一地调整到600×800。作者使用一半数据作为训练数据,1/6数据作为验证集,1/3数据作为测试集。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值