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

本文介绍了PIoU Loss,一种用于旋转对象检测的损失函数,尤其适用于长宽比大的目标。相较于传统损失函数,PIoU Loss能更准确地反映检测性能,提高检测准确性。文章提出了简单的算法流程,并展示了其在旋转框检测中的优势,同时提供了Retail-50k数据集以促进研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考代码:piou

1. 概述

导读:旋转矩形框的引入可以更好贴合目标的轮廓,一般是在水平矩形框的基础上添加一个旋转变量,之后通过诸如smooth L1损失函数进行约束,但是这样的约束方式并不能很好反应实际检测结果与GT的重合关系(IoU),特别是在一些长宽比例比较大的时候。对此文章从像素点的角度进行统计,从而计算出预测框与GT的交叠面积,文章将其称之为PIoU(pixels-IoU)。由于文章的PIoU是逐点进行计算的,因此其可以使用在水平框和旋转矩形框的场景上,其对于旋转框的定位具有较好的优化作用,特别是长款比例比较大的情况下。此外,文章还提供了一个数据集Retail-50k用以丰富旋转目标检测的场景下。

在之前的旋转框检测算法中使用smooth L1的损失函数进行预测分量的监督,却不能很好反应实际的检测性能,特别是在目标的长宽比例比较大的情况下。
在这里插入图片描述
上图的a图展示的就是使用传统的smooth L1损失函数,可以看到两种不同长宽的框其损失值是一样的,但是实际的检测性能是不一样的,因而在这样的场景下使用这样的损失函数是不合时宜的。对此文章直接从检测性能的度量指标入手,定义了一个新的损失函数PIoU,从上图的b图可以看到,在相同的场景下其可以产生更加准确的性能评估结果,从而引导整个网络生成性能更好的检测结果。

文章的方法对于水平框也是具有适应性的:
在这里插入图片描述

2. 方法设计

2.1 文章pipline

文章的整体结构是比较简单的,相比之前的旋转框检测算法其就是在损失函数上进行了改进,其pipeline见下图所示:
在这里插入图片描述

2.2 PIoU Loss

在这里插入图片描述
文章中对于旋转框的损失计算直接使用的是IoU,那么怎么高效地去计算旋转框之间的IoU这就是一个问题了,对此文章直接使用过“数像素点”的形式实现的。那么要进行“数像素点”那么就需要判断结果中的点是否在GT内部,若是在GT内部就算作是交叠了。对此文章使用的是点投影的方式进行表达,定义GT框的中心点为 ( c x , c y ) (c_x,c_y) (cx,cy),那么其在旋转框w和h方向上(一般使用长边作为w)的投影距离为 d i , j w d_{i,j}^w di,jw d i , j h d_{i,j}^h di,jh,那么像素点 p i , j p_{i,j} pi,j是否在GT框内部的判断标准为:
δ ( p i , j ∣ b ) = { 1 , d i , j w ≤ w w , d i , j h ≤ h 2 0 , otherwise \delta(p_{i,j}|b) = \begin{cases} 1, & \text{$d_{i,j}^w\le\frac{w}{w},d_{i,j}^h\le\frac{h}{2}$} \\ 0, & \text{otherwise} \end{cases} δ(pi,jb)={ 1,0,di,jwww,di,jh2hotherwise
此外,要计算上述公式的中结果还需要得到几个分量,可以参考图3的a图所示。这里使用的距离都是欧式距离,定义像素点 p i , j p_{i,j} pi,j到GT中心点 ( c x , c y ) (c_x,c_y) (cx,cy)的距离为:
d i , j = d ( i , j ) = ( c x − i ) 2 + ( c y − j ) 2 d_{i,j}=d(i,j)=\sqrt{(c_x-i)^2+(c_y-j)^2} di,j=d(i,j)=(cxi)2+(cy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值