【论文阅读】Oriented R-CNN for Object Detection

Oriented R-CNN:面向旋转目标检测的 R-CNN(ICCV2021)_凌青羽的博客-CSDN博客

本博客是直接翻译的结果,翻译过程难免会有不准确,可评论指出。

目录

摘要

引言

2. 相关工作

3.面向R-CNN

 3.1. 定向RPN

3.1.1中点偏移表示

3.1.2损失函数

 3.2. 面向R-CNN头

3.2.1旋转RoIAlign

3.3. 实现细节

4. 实验

4.1. 数据集

4.2.参数设置

4.3. 面向RPN的评价

4.4. 比较先进的

4.5. 速度和准确性

5. 结论


摘要

        目前最先进的两级探测器通过耗时的方案产生定向建议。这降低了探测器的速度,从而成为高级面向对象检测系统的计算瓶颈。本文提出了一种有效且简单的定向对象检测框架,即定 向R-CNN,它是一种通用的两级面向对象检测器,具有良好的准确性和效率。具体来说,在第一阶段,我们提出了一个定向区域提案网络(定向RPN),它直接以几乎无成本的方式生成高质量的定向提案。第二阶段是定向R-CNN头部,用于提炼定向感兴趣区域(areas of Interest, oriented RoIs)并进行识别。无需技巧,定向R-CNN与ResNet50在两个常用的面向对象检测数据集上实现了最先进的检测精度,包括DOTA (75.87% mAP)HRSC2016 (96.50% mAP),同时在单个RTX 2080Ti上具有15.1 FPS的速度与1024×1024的图像大小。我们希望我们的工作可以启发重新思考定向探测器的设计,并为定向物体检测提供基础。代码可通过 https: //github.com/jbwang1997/OBBDetection获取。

引言

        大多数现有的最先进的面向对象检测方法[7,37,41]依赖于提议驱动的框架,如Fast/Faster R-CNN[11,10,32]。它们涉及两个关键步骤:(i)产生面向对象的提案和(ii)改进提案并将其分类。然而,产生有针对性的建议的步骤在计算上是昂贵的。

        早期生成定向提案的方法之一是旋转区域提案网络(旋转RPN)[26],它在每个位置放置54个不同角度、比例和纵横比例(3个scales×3 ratios×6角度)的锚,如图1(a)所示。旋转锚的引入提高了有向对象稀疏分布时的查全率,表现出良好的性能。但是,过多的锚会导致大量的计算和内存占用。为了解决这个问题,RoI Transformer[7]通过复杂的过程从水平RoI中学习定向的建议,包括RPN、RoI对齐和回归(参见图1(b))。RoI Transformer方案提供了有前途的定向方案,大幅减少了旋转锚的数量,但也带来了昂贵的计算成本。目前,如何设计一种优雅高效的求解方法来生成面向对象的方案是突破当前面向对象检测器计算瓶颈的关键。

疑问:RoI Transformer[7]通过复杂的过程从水平RoI中学习定向的建议,包括RPN、RoI对齐和回归(参见图1(b))。(水平、定向属于多视角吗??

图1:生成面向对象提案的不同方案的比较。(a)旋转RPN密集放置不同尺度、比例和角度的旋转锚。(b) RoI Transformer+从水平RoI中学习面向的建议。它包括RPN、RoI校准和回归。(c)我们提出的面向对象的RPN以几乎无成本的方式产生高质量的建议。定向RPN的参数数约为RoI Transformer+的1/3000,旋转RPN的1/15。

        为了进一步推动这个极限:我们研究了为什么基于区域提议的定向探测器的效率到目前为止一直落后。我们观察到,阻碍提议驱动探测器速度的主要障碍来自提议生成阶段。一个自然而直观的问题是:我们能否设计一个通用而简单的面向区域提案网络(简称面向RPN),直接生成高质量的面向提案?基于这个问题,本文提出了一个简单的两阶段面向对象检测框架,称为面向R-CNN,它获得了最先进的检测精度,同时保持了与单阶段面向检测器相比的竞争效率。 

        具体来说,在定向R-CNN的第一阶段,给出了一个概念简单的定向RPN(见图1(c))。我们的定向RPN是一种轻量化的全卷积网络,其参数比旋转RPN和RoI transformer+少得多,从而降低了过拟合的风险。我们通过将RPN回归分支的输出参数数从4个改为6个来实现。天下没有免费的午餐。本文提出的面向对象表示方案,即中点偏移表示,使定向对象的RPN设计受益。对于图像中任意方向的对象,我们利用6个参数来表示它们。中点偏移表示继承了水平回归机制,并为定向预测的建议提供了有界约束。定向R-CNN的第二阶段是有向R-CNN检测头:通过旋转感兴趣区域对齐提取每个有向提案的特征,并进行分类和回归。

        在没有附加功能的情况下,我们评估我们的定向RCNN在两个流行的基准定向对象检测,即DOTA和HRSC2016。我们使用ResNet-50-FPN的方法在DOTA数据集上实现了75.87%的mAP,在HRSC2016数据集上实现了96.50%的mAP,在单个RTX 2080Ti上运行时帧率为15.1 FPS,图像尺寸为1024×1024。因此,无论从准确性还是效率上来说,面向对象的R-CNN都是一个实用的目标检测框架。我们希望我们的方法能够启发我们重新思考面向对象检测器和面向对象回归方案的设计,并为面向对象检测提供坚实的基础。为了将来的研究,我们的代码可在以下网址获得://github.com/jbwang1997/ OBBDetection。

 疑问:Without bells and whistles:在没有附加功能的情况下

2. 相关工作

        在过去的十年中,目标检测领域取得了显著的进展[23,33,2,42,31,24,45,13,20,29]。定向对象检测作为目标检测的一个扩展分支[7,37,26,12,5,28],由于其广泛的应用,受到了广泛的关注。

        一般基于水平边界框的目标检测方法(如Faster R-CNN)不能很好地定位图像中有方向的目标,因为水平边界框可能包含更多的背景区域或多个目标。这导致最终分类置信度和定位精度不一致。为了解决这个问题,人们投入了大量的精力。例如,Xia等人[36]构建了一个具有面向标注的大规模目标检测基准,命名为DOTA。现有的许多定向对象检测器[7,37,41,26,25,18]主要基于典型的基于提议的对象检测框架。定向对象的自然解决方案是设置旋转的锚点[26,25],如旋转的RPN[26],在每个位置放置不同角度、比例和长宽比的锚点。这些密集旋转的锚会导致大量的计算和内存占用。

        为了减少大量旋转的锚点,减少特征与目标之间的不匹配,Ding等[7]提出了从RPN产生的水平RoI中学习旋转的RoI的RoI transformer。这种方法大大提高了定向目标的检测精度。但是,由于在学习旋转RoI的过程中涉及到全连接层和RoI对齐操作,使得网络沉重而复杂。针对小、杂波、旋转目标检测的挑战,yang et.al[41]在Faster R-CNN通用目标检测框架上构建了一种定向目标的检测方法。Xu et.al[37]提出了一种新的面向对象表示方法,称为滑动顶点。它通过学习Faster R-CNN头部的回归分支上的四顶点滑动偏移量来实现定向目标检测。但这两种方法都采用水平roi进行分类,并采用有方向包围盒回归。他们仍然遭受着物体和特征之间的严重失调。

        此外,已有文献[12,28,39,27,43,16,40,47,15]探索了一阶或无锚的面向对象检测框架:输出对象类和有方向的包围框,无需生成区域建议和RoI对齐操作。例如,yang et.al[39]提出了一种改进的单阶段面向对象检测器,其中涉及到两个关键的改进,包括特征细化和逐步回归,以解决特征不对等问题。Ming et.al[27]基于视网膜网络RetinaNet[22]设计了一种新的面向单阶段目标检测的标签分配策略。它通过一种新的匹配策略动态地分配正锚或负锚。Han等人[12]提出了一种用于目标定向检测的单镜头对准网络(S^{2}ANet)S^{2}ANet旨在通过深度特征对齐来缓解分类评分与定位精度之间的不一致性。Pan等[28]在无锚目标检测方法CenterNet[46]的基础上设计了一种面向目标检测的动态细化网络(DRN)

        与上述方法相比,我们的工作属于基于提议的面向对象检测方法。重点设计了一个高效的面向对象的RPN,以突破面向对象方案生成的计算瓶颈。

3.面向R-CNN

        面向我们提出的目标检测方法,称为定向R-CNN,包括一个定向RPN和一个定向RCNN头(参见图2)。这是一个两阶段的探测器,在第一阶段生成面向高质量的提案以近乎免费的方式,第二阶段是面向RCNN建议分类和回归。我们的FPN主干遵循[21],它产生了五个层次的特征{P2, P3, P4, P5, P6}。为了简单起见,我们没有展示FPN的体系结构以及面向RPN的分类分支。接下来,我们详细描述了面向RPN和面向R-CNN头部。

图2:面向R-CNN的总体框架,它是基于FPN的两级检测器。第一阶段通过有向RPN生成有向提案,第二阶段是有向R-CNN头部对提案进行分类并细化其空间位置。为了更清楚地说明,我们没有显示面向RPN中的FPN以及分类分支。

(这图画的真好看。)

 3.1. 定向RPN

        给定任意尺寸的输入图像,定向RPN输出一组稀疏的有向建议。整个过程可以用轻量化的全卷积网络进行建模。具体来说,它以FPN(backbone)的五层功能{P_{2},P_{3},P_{4},P_{5},P_{6}}为输入,并在每一层功能上附加一个相同设计的头部(一个3×3卷积层和两个兄弟的1×1卷积层)。我们指定三个水平锚相位配给{1:2,1:1,2:1}到每个空间位置的所有水平的特征。锚点的像素面积为32^{2}64^{2}128^{2}256^{2}512^{2}。每个锚点用一个四维向量表示,其中(a_{x},a_{y})是锚点的中心坐标,a_{w}a_{h}表示锚点的宽度和高度。两个兄弟姐妹1×1卷积层之一是回归分支:输出相对于锚点的提议的偏移δ= (δx, δy, δw, δh, δα, δβ)。在feature map的每个位置,我们生成A个提议(A是每个位置的锚个数,在本文中等于3),因此回归分支有6A输出。通过对回归输出的解码,我们可以得到有方向的建议。解码过程描述如下:

        其中(x, y)为预测方案的中心坐标,包含了预测定向方案的外部矩形框的宽度和高度。∆α和∆β是相对于外部矩形顶部和右侧中点的偏移量。最后根据(x, y, w, h,∆α,∆β)提出有针对性的建议。

         另一个同胞卷积层估计每个面向提案的客观性得分。为了更清楚地说明,我们省略了图2中的评分分支。定向对象的RPN实际上是一个自然和直观的想法,但它的关键在于定向对象的表示中。在这种情况下,我们设计了一种新的、简单的定向对象表示方案,称为中点偏移表示

3.1.1中点偏移表示

我们提出了一种新的定向对象表示方案,称为中点偏移表示,如图3所示。黑点是水平框每边的中点,水平框是有方向包围框的外部矩形o。橙色的点代表有方向的包围盒的顶点。

图3:中点偏移表示的说明。(a)中点偏移表示示意图。(b)中点偏移表示的一个例子。

        具体来说,我们使用一个有方向的包围盒6个参数 (x, y, w, h,∆α,∆β)来表示由式(1)计算的对象。通过这6个参数,我们可以得到每个proposal的4个顶点的坐标集合v= (v1,v2,v3,v4)。这里,∆α是v1相对于水平框顶部的中点(x, y−h/2)的偏移量。根据对称性,−∆α表示v3相对于底部中点(x, y+h/2)的偏移量。∆β表示v2相对于右中点(x+w/2, y)的偏移量,−∆β表示v4相对于左中点(x+w/2, y)的偏移量,因此四个顶点的坐标可以表示为:

        采用这种表示方式,我们通过预测其外部矩形的参数(x, y, w, h)和推断其中点偏移的参数(∆α,∆β)来实现每个有向提案的回归。

3.1.2损失函数

        为训练定向RPN,正、负样本定义如下。首先,我们给每个锚赋一个二进制标签p∗∈{0,1}。这里,0和1表示锚属于正样本或负样本。具体而言,在以下两种情况之一下,我们认为锚为正样本:(i)锚与任何地面真值框的交并比 (IoU)重叠高于0.7,(ii)锚与地面真值框的IoU重叠最高且IoU高于0.3。当锚的iou小于0.3时,用ground-truth box将锚标记为负样本。不为正负的锚点被认为是无效样本,在训练过程中忽略。值得注意的是,上面提到的ground-truth boxes指的是有方向包围盒的外部矩形。接下来,我们定义损失函数l1如下:

这里,i 是锚的索引,N(默认情况下N=256)是迷你批处理(mini-batch)中的样本总数。P_{i}^{*}是第i个锚的地面真实标签。p_{i}是定向对象RPN分类分支的输出,表示该建议属于前景的概率。t_{i}^{*}是相对于第一个锚的地面真实盒的监督偏移量,它是一个参数化的6维向量(t_{x}^{*},t_{y}^{*},t_{w}^{*},t_{h}^{*},t_{a}^{*},t_{\beta }^{*})来自定向RPN的回归分支,表示预测建议相对于第i个锚点的偏移量。F_{cls}交叉熵损失。F_{reg}是SmoothL1loss。对于回归框回归(见图4),我们采用仿射变换,公式如下: 

式中(x_{g},y_{g})、w_{g}h_{g}分别为外部矩形的中心坐标、宽度、高度。\Delta \alpha _{g}\Delta \beta _{g}获得顶部和右侧顶点相对于顶部和左侧中点的偏移量。

 

 图4:盒子回归参数化的说明。黑色的点是顶部和右侧的中点,橙色的点是有方向的边界框的顶点。(a)锚。(b)真实。(c)预测的盒子。

 3.2. 面向R-CNN头

        有向R-CNN头部以特征映射{P_{2},P_{3},P_{4},P_{5},P_{6}}和一组定向建议作为输入。对于每个有方向的提议,我们使用旋转RoI对齐(以下简称为旋转RoIAlign)从其对应的特征图中提取固定大小的特征向量。每个特征向量输入两个全层(FC1和FC2,参见图2),紧随其后的是两个兄弟姐妹全层:一个输出的概率的提议是属于k + 1类(K object类+ 1背景类),另一个产生的偏移量为每个K object类的提议。

3.2.1旋转RoIAlign

        旋转RoIAlign是从每个有方向的提议中提取旋转不变特征的操作。现在,我们根据图5描述旋转RoIAlign的过程。有向RPN生成的有向提案通常是一个平行四边形(图5中的蓝色框),用参数v= (v1,v2,v3,v4)表示,其中v1,v2,v3,和v4是它的顶点坐标。为了便于计算,我们需要将每个平行四边形调整为一个有方向的矩形。具体来说,我们通过延长平行四边形的较短对角线(图5中从v2到v4line),使其与较长的对角线具有相同的长度来实现这一点。经过这个简单的操作,我们从平行四边形中得到了有向矩形(x, y, w, h, θ)(图5中的红框),其中θ∈[−π/2, π/2]是由水平轴与矩形较长边的交角来定义的。

图5:旋转RoIAlign的过程示意图。蓝框是有向RPN生成的平行四边形提案,最左边的红框是其对应的用于投影和旋转RoIAlign的矩形提案。 

        接下来我们将有方向的矩形(x, y, w, h, θ)投影到 feature map F上,步长为s,通过以下操作得到旋转后的RoI,定义为(x_{r},y_{r},w_{r},h_{r}, θ)。

 然后,将每个旋转后的RoI除以m×m 栅格(m默认为7),得到一个固定大小的特征mapF ',其维度为m×m×C。对于每个索引为(i, j)的网格(0≤i, j≤m−1)在第c通道(1≤c < c)中,其值计算如下:

 其中,F_{c}为第c通道的特征,n为每个网格内的样本数量,area(i, j)为索引为(i, j)的网格所包含的坐标集。R(·)为与[7]相同的旋转变换。

3.3. 实现细节

        通过联合优化定向R-CNN和定向R-CNN头部,对定向R-CNN进行端到端训练。在推理过程中,定向RPN生成的定向建议通常有较高的重叠。为了减少冗余,我们在第一阶段保留每个FPN水平2000个提案,然后是非最大抑制(NMS)。考虑到推理速度,采用IoU阈值为0.8的水平NMS。我们将所有级别的剩余提案进行合并,并根据分类得分选择前1000名的提案作为第二阶段的输入。在第二阶段,对分类概率大于0.05的预测方向包围盒进行每个对象类的策略NMS。 ploy NMS IoU阈值为0.1。

4. 实验

        为了评价我们提出的方法,我们在两个最常用的定向目标检测数据集上进行了大量的实验,即DOTA[36]和HRSC2016[25]。

4.1. 数据集

        DOTA是面向对象检测的大规模数据集。它包含2806个图像和188282个带有面向边界框注解的实例,包括以下15个对象类:桥梁(BR)、港口(HA)、船舶(SH)、飞机(PL)、直升机(HC)、小型车辆(SV)、大型车辆(L V)、棒球场(BD)、田径场(GTF)、网球场(TC)、篮球场(BC)、足球场(SBF)、环岛(RA)、游泳池(SP)、储罐(ST)。DOTA数据集的图像大小很大:从800×800到4000×4000像素。我们使用训练和验证集进行训练,其余的用于测试。通过将测试结果提交到DOTA的评估服务器,获得检测精度。
        HRSC2016是另一个广泛使用的面向任意方向船舶检测数据集。它包含1061张图片,大小从300×300到1500×900不等。训练集(436张图片)和验证集(181张图片)用于训练,其余用于测试。对于HRSC2016的检测精度,我们采用平均精度(mAP)作为评价标准,与PASCAL VOC 2007[8]和VOC 2012一致。

4.2.参数设置

        我们使用批量大小为2单个RTX 2080Ti进行培训。在单个RTX 2080Ti上测试了推理时间。实验结果在mmdetection平台[3]上得到。ResNet50[14]ResNet101[14]被用作我们的骨干。他们在ImageNet[6]上进行预训练。训练时采用水平翻转和垂直翻转作为数据增强。我们采用SGD算法对整体网络进行优化,动量为0.9,权值衰减为0.0001。

        在DOTA数据集上,我们将原始图像裁剪成1024×1024补丁patch。裁剪步幅设置为824,即相邻两个patch之间的像素重叠为200。在多尺度训练和测试方面,我们首先将原始图像按0.5、1.0和1.5三个尺度进行调整,将其裁剪成1024×1024 patch, stride为524。我们训练有12个epochs的R-CNN。初始学习率设置为0.005,并在历历8和11时除以10( and divided by 10 at epoch 8 and 11.感觉这里翻译有点问题)。合并镜像补丁时,设置 ploy NMS阈值为0.1。

        对于HRSC2016数据集,我们不改变图像的纵横比。图像的短边被调整为800,而长边小于或等于1333。在训练中,采用36个epochs。初始学习率设置为0.005,并在epoch 24和33时除以10

4.3. 面向RPN的评价

        我们从召回率的角度来评价定向RPN的性能。在DOTA验证集上报告了定向RPN的结果,并以ResNet-50-FPN为骨干。为了简化这个过程,我们只是根据从原始图像中裁剪的小块来计算召回率,而不合并它们。带groundtruth boxes的IoU阈值设置为0.5。我们分别从每个图像patch中选择top-300、top-1000和top-2000的建议来报告它们的召回值,分别表示为R300、R1000和R2000。结果如表1所示。可以看出,在使用2000个提案时,我们的面向RPN可以达到92.80%的召回率。当提案数量从2000个增加到1000个时,召回率略有下降(0.6%),但当提案数量从300个增加到1000个时,召回率急剧下降。因此,为了平衡推理速度和检测精度,我们选择1000个建议作为两个数据集测试时面向R-CNN头部的输入。在图6中,我们展示了一些由DOTA数据集上的面向对象RPN生成的建议示例。每个图像显示前200个建议。如图所示,我们提出的定向RPN可以很好地定位对象,无论其大小、高宽比、方向和密度。

 表1:DOTA验证集的召回结果。

 图6:在DOTA数据集上由面向的RPN生成的建议。每个图像显示前200个建议。

4.4. 比较先进的

        我们将我们的定向R-CNN方法与DOTA数据集的19种定向目标检测方法以及HRSC2016数据集的10种定向目标检测方法进行了比较。表2和表3分别报告了DOTA和HRSC2016数据集的详细对比结果。其中,R-50为ResNet-50, R-101为ResNet101, H-104为104层沙漏网络[38],DLA-34为34层深层聚合网络[46]。

表2:与DOTA数据集上最先进的方法的比较。†表示来自空中探测的结果(下同)。‡:多尺度培训和测试。

表3:HRSC2016数据集比较结果

在DOTA数据集上,我们的方法超越了所有的比较方法。以R-50-FPN和R-101-FPN为骨干,分别获得75.87%和76.28%的mAP。令人惊讶的是,使用R50-FPN骨干,我们甚至比所有的比较方法与R-101-FPN骨干。此外,采用多尺度训练和测试策略,该方法在R-50-FPN骨干下达到80.87%的mAP,与目前最先进的方法相比具有很强的竞争力。图7显示了DOTA数据集上的一些结果。 

图7:使用R-50-FPN骨干的定向R-CNN在DOTA数据集上的检测结果示例。当可视化这些结果时,置信阈值被设置为0.3。一种颜色代表一个对象类。 

对于HRSC2016数据集,我们列出了 在PASCAL VOC 2007和VOC 2012指标下采用不同的方法。在R-50-FPN和R-101-FPN中,我们的定向R-CNN都达到了最好的准确性。一些可视化结果如图8所示。

图8:HRSC2016数据集上使用R-50-FPN骨干的面向R-CNN检测结果示例。显示分数高于0.3的方向包围框。

4.5. 速度和准确性

        在相同的设置下,我们比较了不同方法的速度和准确性。对比结果见表4。所有方法均采用R-50-FPN为骨干。测试的硬件平台是单个批量大小为1的RTX 2080Ti。测试时,输入图像的大小为1024×1024。如表4所示,我们的方法检测精度(75.87% mAP)高于其他方法,但运行速度(15.1 FPS)相当。定向R-CNN的速度接近于一级检测器,但精度远高于一级检测器(见表4和图9)。

 表4:DOTA数据集上的速度与精度。 

 图9:DOTA测试集上的速度与精度。 

5. 结论

        本文提出了一种实用的两阶段检测器,即定向R-CNN,用于图像中任意方向的目标检测。我们在两个具有挑战性的目标检测基准上进行了广泛的实验。实验结果表明,该方法与目前先进的两级检测器相比具有相当的精度,同时与单级检测器相比具有相当的效率。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值