BBAVectors:一种Anchor Free的旋转物体检测方法
共 3265字,需浏览 7分钟
·
2020-09-25 20:17
点击上方“AI算法与图像处理”,选择加"星标"或“置顶”
重磅干货,第一时间送达
来源:AI公园
WACV2021的一篇文章,将CenterNet的方案用到了旋转物体的检测中,设计了一种精巧的旋转框表达方式,免去了设计anchor麻烦,效果也非常好,而且代码也开源了。
文末有下载好的论文和代码链接。
摘要
这是一篇有方向的物体检测的文章。当前的有方向物体检测往往是两阶段的基于anchor的检测方法,但是这种方法会有正负anchor的不平衡的问题。这篇文章将基于水平关键点的物体检测的方法扩展了一下,用于有方向的物体检测。我们首先进行物体的中心点的检测,然后回归一个包围框的边缘感知向量(BBAVectors)来得到有方向的包围框。为了让这个向量的学习变得简单,我们还进一步将有方向的包围框分成了水平框和选择框两类。
1. 介绍
两阶段的基于anchor的旋转框检测有一些缺点:(1)anchor的设计非常的复杂,要去设计不同的比例,不同的尺寸。(2)正负样本会非常的不均衡,这会导致训练很慢,而且无法达到最优的效果。(3)第二个阶段的crop和regress策略在计算量上也比较大。除了基于anchor的方法之外,最近anchor free的物体检测方法得到了较大的发展,CenterNet的方法是先检测物体的中心点,然后直接回归出物体的宽和高,当然,我们可以直接再回归一个旋转角度θ来将CenterNet扩展到有方向的物体检测,但是,对于任意的旋转物体,宽和高实际上依赖于不同的旋转坐标系统,所以直接回归会有些难度。
本文中,我们扩展了CenterNet的方法,将其应用到有方向物体的检测中,但是,并不是直接回归w,h和θ,而是学习一个box boundary-aware vectors(BBAVectors),如图1(b),然后得到物体的有方向的包围框。在实际做的过程中,我们发现,在一些极端情况下,向量和象限的边界非常的靠近,如图1(c),这样区分向量的类型就比较困难。
总结一下,我们的贡献如下:
-
提出了一个描述OBB的方法,box boundary-aware vectors(BBAVectors),非常的简单有效。BBAVectors对于所有的物体都在同一个笛卡尔坐标系中。 -
我们将基于特征点检测的CenterNet扩展到了方向物体检测场景中。这是一个单阶段而且anchor free的方法。
2. 方法
2.1 结构
网络结构如图2,是一个U型的结构,我们使用了ResNet101的Conv1~5作为主干,然后再进行上采样,得到一个原始图像1/4大小的特征图。在上采样的过程中,会有下采样时候的层的跳跃连接拼接到一起。
2.2 热图
Heatmap是用来定位关键点的。这里,我们用来检测物体的中心点。热图有k个通道,分别对应了不同类别的物体。热图的每个像素点的值表示物体的置信度。
Groundtruth 假设c=(cx,cy)是旋转框的中心点,我们以c为中心,构建一个2D的高斯分布来作为热图的groundtruth,其中,高斯分布的方差是和物体的尺寸相关的一个自适应的值。
训练损失 在训练热图的时候,只有中心点c是正样本,其他的点,包括高斯分布范围中的点都是负样本。由于这个正负样本的极度不平衡,所以直接去学习中心点是比较困难的,所以,我们对高斯分布以内的点的损失做了一定程度的衰减,使用了一个focal loss的变体来训练这个热图。
其中,p_hat表示groundtruth,p表示预测值,N是物体的数量,α和β是超参数,这里α=2,β=4。
2.3 中心点的偏移
在预测阶段,从热图中提取峰值点作为物体的中心点,这个中心点c是一个整数,但是,原始图经过下采样之后,得到的中心点的坐标是一个浮点数,为了弥补这个量化的误差,我们还需要再预测一个偏移量O:
用L1 loss来进行优化:
其中,SmoothL1的表达式可以是:
2.4 包围框的参数
为了得到带方向的包围框,一个很自然的想法就是回归出宽,高,和角度θ,我们把这个base line称为Center+wh+θ,如图1(a)。这个方法有几个缺点:(1)小的角度的变化对于损失来说可能是微不足道的,但是对于IOU却会产生较大的影响。(2)OBB中的w,h是在各自独立的旋转坐标系统中定义的,角度θ是相对于y轴的,这样,网络很难去联合训练所有的物体。所以,我们提出了一种描述OBB的方法,叫做box boundary-aware vectors(BBAVectors),包括4个向量,t,r,b,l。在我们的设计中,这4个向量分布在笛卡尔坐标系的4个象限中,所有的旋转物体都共用一个坐标系,这样可以高效的利用共同的信息,并提升模型的泛化能力。我们有意的设计了4个向量,而不是2个,为的是当某些局部特征不是很明确的时候可以得到更多的交互信息。
此时,包围框的参数定义为:b = [t,r,b,l,w,h],其中w,h是外接水平包围框的宽和高,如图2所示。这样,每个包围框就有2x4+2=10个参数,我们还是用L1 loss来回归box的参数:
2.5 方向
我们发现,当物体框和xy轴对齐的时候,检测会失败,这个原因可能是象限的边界问题,这种类型的向量的差别很难区分。我们把这个问题叫做corner case,我们把OBBs分为两类,一类是水平的,一类是旋转的,当OBBs是水平的,w和h帮助我们得到准确的包围框。另外,外接矩形的参数也可以帮助我们去更好的描述OBB。
我们定义了一个旋转特征图α,我们这样定义:
然后通过交叉熵来优化:
3. 实验
我们在两个数据集上进行了验证,DOTA和HRSC2016。
3.1 和其他模型的对比
DOTA:
HRSC2016:
3.2 消融实验
我们对比了BBAVectors+r和BBAVectors+rh两种方法,一种是不区分水平和旋转物体,一种区分水平和旋转物体:
3.3 和baseline的对比
我们还对比了Center+wh+θ的baseline模型:
3.4 在DOTA数据上的结果可视化
关注并在后台回复“BBAV”即可获取论文
下载1:OpenCV黑魔法
在「AI算法与图像处理」公众号后台回复:OpenCV黑魔法,即可下载小编精心编写整理的计算机视觉趣味实战教程
下载2 CVPR2020
在「AI算法与图像处理」公众号后台回复:CVPR2020,即可下载1467篇CVPR 2020论文 个人微信(如果没有备注不拉群!) 请注明:地区+学校/企业+研究方向+昵称
觉得有趣就点亮在看吧