【论文】Oriented R-CNN for Object Detection

【前言】首先推荐几个相关网址:

  • 整理了一系列的倾斜目标检测算法:GitHub - yangxue0827/RotationDetection: This is a tensorflow-based rotation detection benchmark, also called AlphaRotate.
  • 遥感目标相关的算法总结:https://github.com/SJTU-Thinklab-Det/DOTA-DOAI
  • 本文paper地址:https://arxiv.org/abs/2108.05699
  • 本文code地址:GitHub - jbwang1997/OBBDetection: OBBDetection is an oriented object detection library, which is based on MMdetection.

一句话总结: oriented-RPN用于生成高质量的带方向的候选框,头部用于优化oriented RoIs并对其进行识别,实现了SOTA的性能。

 一、引言

1. 基于候选框的倾斜目标检测算法

  • 主要步骤:①生成倾斜候选框;②对候选框进行精确定位和分类。
  • 缺点:生成倾斜候选框过程的计算代价很大。

2. 生成倾斜候选框的方法之一:rotated RPN

  • 策略:在每个位置生成不同尺度、长宽比、方向的54个anchors。
  • 缺点:anchors过于冗余,造成了计算和存储资源的浪费。

3. 生成倾斜候选框的方法之一:RoI Transformer

  • 策略:通过RPN、RoI Alignment和回归等操作,将水平的RoIs转化为倾斜候选框。
  • 缺点:仍然存在计算代价大,效率低的问题。

【论文】Oriented R-CNN for Object Detection_第1张图片

 4. 解决思路

  • 限制该类算法效率的因素主要在候选框的生成阶段,那么是否可以设计一个简单的普通的oriented RPN用于生成高质量的倾斜候选框呢?
  • 本研究提出了oriented R-CNN的网络结构,用于高性能的倾斜目标检测。

【论文】Oriented R-CNN for Object Detection_第2张图片

 5. 主要方法

  • Oriented R-CNN的第一阶段采用了简单的oriented RPN结构。该结构是一个轻量级的全卷积网络,参数量很少,可以通过将RPN回归分支的输出参数由四个改为6个来实现,其设计得益于本研究提出的对倾斜目标的表示法,即中点偏移表示法。
  • Oriented R-CNN的第二阶段是一个检测头,用于提取来自rotated RoI alignment的倾斜候选框的特征,并进行分类和回归。

二、相关研究

1. 基于水平边界框的目标检测

  • 由于水平边界框通常包含多余的区域或目标,容易导致分类和定位结果的不一致,因此该类算法往往难以对目标进行精确检测。

2. 带方向的倾斜目标检测

  • 旋转的anchors,例如rotated RPN,缺点是计算量大。
  • RoI Transformer从水平的RoIs学习旋转的RoIs表示,缺点是网络庞大且复杂。
  • 基于Faster R-CNN的倾斜目标检测和gliding vertexes都采用水平RoIs进行分类和回归,仍然存在目标和特征的不一致问题。
  • 单阶段和anchor free的算法。

三、算法讲解

1. Oriented RPN

对于任意尺寸的输入影像,带方向的RPN可以通过轻量全卷积网络输出一系列倾斜的候选框。具体步骤如下:

  • 将FPN输出的五层特征图\left \{​{P_{2},P_{3},P_{4},P_{5},P_{6}} \right \}作为输入,并在每层添加一个相同的头部设计(3×3的卷积层和两个1×1的并联卷积层)。
  • 在特征图的所有层的每个空间位置(像元)上,分配三个不同长宽比({1:2, 1:1, 2:1}) 的水平锚框(anchors)。这些anchors在\left \{​{P_{2},P_{3},P_{4},P_{5},P_{6}} \right \}特征层上对应的像元面积分别为\left \{ 32^{2},64^{2},128^{2},256^{2},512^{2} \right \}。每个anchor由4维向量表示a=(a_{x}, a_{y}, a_{w}, a_{h}),其中(a_{x}, a_{y})为anchor的中心坐标,a_{w}a_{h}分别表示anchor的宽和高。
  • 两个1×1并联卷积层的其中一个为回归分支,输出候选框proposals相对于anchors的偏移量\delta =(\delta_{x}, \delta_{y}, \delta_{w}, \delta_{h}, \delta_{\alpha}, \delta_{\beta} )。我们在特征图的每个位置上都生成A个候选框(本研究中A=3),因此回归分支有6A个输出值。通过回归输出的解码,可以得到倾斜候选框,解码步骤如下:

        其中,(x,y)是预测候选框的中心坐标,wh是预测候选框的外接矩形框的宽和高,\Delta \alpha\Delta \beta分别是相对于外接矩形上边界和右边界中点的偏差值,最终可以根据(x,y,w,h,\Delta \alpha ,\Delta \beta )生成倾斜候选框。

  • 另一个1×1的并联卷积层用于对预测每个倾斜候选框的目标得分。
  • 本文对倾斜目标采用的是一种全新的简单的表示方法,即中点偏差表示法。

【论文】Oriented R-CNN for Object Detection_第3张图片

(1)中点偏差表示法

  • 采用六参数表示倾斜边界框O=(x,y,w,h,\Delta \alpha ,\Delta \beta )。通过六参数,可以获得每个候选框的四顶点坐标集 v=(v1, v2, v3, v4)

        其中,\Delta \alphav1相对于水平边界框上部中点(x, y-h/2)的偏差值,\Delta \betav2相对于水平边界框右边中点(x+2/w, y)的偏差值。根据对称性,-\Delta \alpha-\Delta \beta分别是v3v4相对于下边和坐标中点的偏差值。

  • 倾斜边界框的四顶点坐标可以表示为:

【论文】Oriented R-CNN for Object Detection_第4张图片

  •  之后,就可以通过预测外接矩形的参数值(x, y, w, h),实现对每个倾斜候选框的回归及中点偏差参数的(\Delta \alpha ,\Delta \beta )的推断。

【论文】Oriented R-CNN for Object Detection_第5张图片

(2)损失函数

在训练oriented RPN时对正负样本进行如下定义

  • 首先,需要对每个anchor分配一个二值标签p^{*} \in \left \{ 0,1 \right \},其中0为正1为负。
  • 正样本的判定:anchor满足以下任意一种情况时,i) anchor与任意一个地面真实边界框的IoU大于0.7;ii) anchor与某一个地面真实边界框有最大IoU,并且此IoU值大于0.3。
  • 负样本的判定:anchor与任意真实边界框的IoU都小于0.3。
  • 既不是正样本也不是负样本的anchors,被判定为无效样本。

【注意】上述的地面真实框(gt bboxes)指的都是倾斜目标的外接矩形框

损失函数的定义:

        其中,i是anchors的序号,N(默认N=256)是小批次样本的总数,p_{i}^{*}是第i个anchor的地面真实标签,p_{i}是oriented RPN分类分支输出的前景概率值,t_{i}^{*}是地面真实边框相对于第i个anchor的偏移量,采用来自oriented RPN回归分支的参数化六维向量表示t_{i}^{*} = \left (t_{x}^{*},t_{y}^{*},t_{w}^{*},t_{h}^{*},t_{\alpha}^{*},t_{\beta }^{*} \right )F_{cls}为交叉熵损失, F_{reg}smooth L1损失。

采用仿射变换进行边界框的回归,公式如下:

【论文】Oriented R-CNN for Object Detection_第6张图片

         其中,(x_{g}, y_{g}), w_{g}, h_{g}分别为外接矩形的中心坐标、长和宽,\Delta \alpha_{g}\Delta \beta _{g}分别为上顶点和右顶点与对应边的偏移量。

2. Oriented R-CNN Head

  • Oriented R-CNN head的输入为特征图\left \{​{P_{2},P_{3},P_{4},P_{5},P_{6}} \right \}和一系列倾斜候选框。
  • 对于每个候选框,采用rotated RoIAlign从对应的特征图中提取一个固定尺寸的特征向量。
  • 每个特征向量被输入两个全连接层,之后再通过两个并联的全连接层:一个用于分类,输出K+1个类别概率,另一个对K个目标类别的候选框进行回归,输出偏移量。 

(1)Rotated RoIAlign

  • 用于从每个倾斜候选框中提取旋转不变的特征

【论文】Oriented R-CNN for Object Detection_第7张图片

  •  由oriented RPN生成的倾斜候选框通常是平行四边形的,由四个顶点v=(v1, v2, v3, v4)表示。为了计算的方便,需要将平行四边形调整为矩形,采用的方式就是将短对角线延长至与长对角线的长度一致。
  • 之后,就可以获得倾斜矩形的(x,y,w,h,\theta ),如图5中的红框,其中\theta \in \left [ -\pi /2, \pi /2 \right ],为水平轴与矩形长边的夹角。
  • 使用步长s将倾斜矩形(x,y,w,h,\theta )映射到特征图F上,获得(x_{r}, y_{r}, w_{r}, h_{r}, \theta )表示的旋转RoI,操作如下:

  •  随后,每个旋转RoI被分为了m\times m个格网(此处m默认为7),从而得到了维度为m\times m\times C的固定尺寸的特征图F^{'}
  • 在第c个通道,第(i,j)(0 \leq i, j\leq m-1 )个格网值的计算公式如下:

         其中,F_c是第c通道的特征图,n是格网内的样本数,area(i,j)是格网(i,j)内的坐标集合,R(\cdot )是与RoI Transformer相同的旋转变换。

 

3. 实现细节

(1)端对端的方式进行训练,同时对oriented RPN和oriented R-CNN head进行优化。

(2)推理阶段,在特征金字塔的每一层保留2000个候选框,并IoU阈值为0.8的水平NMS操作。

(3)对每个特征层进行NMS后,合并所有的候选框,并基于分类置信度选取前1000个作为第二阶段的输入。

(4)在第二个阶段,对分类置信度高于0.05的预测的倾斜边界框进行poly NMS操作,其IoU阈值为0.1。

四、实验部分

1. 数据集

(1)DOTA:15个类别

(2)HRSC2016:倾斜的舰船检测

2. 参数设置

(1)硬件:单卡2080Ti, batch size为2

(2)框架:mmdetection

(3)backbone:ResNet50和ResNet101

(4)数据增广:水平和垂直翻转

(5)优化器:SGD,momentum 为0.9 ,weight decay 为 0.0001

(6)输入数据尺寸:DOTA1024×1024,并采取了多尺寸训练,HRSC2016的短边重采样设置为800,长边小于1333

(7)迭代次数:DOTA训练了12epoches,HRSC2016训练了36epoches

(8)初始学习率:0.005,在[2/3, 11/12]的迭代次数后除以10

3. Oriented RPN的评价

(1)采用ResNet-50-FPN为backbone,在DOTA验证集上进行了测试,分别为每张影像选择前300、前1000、前2000个候选框后计算recall,结果如下:

【论文】Oriented R-CNN for Object Detection_第8张图片

 (2)结论:oriented RPN可以很好地对任意尺寸、长宽比、方向的目标进行定位。

4. 与SOTA的比较

(1)基于DOTA数据集,与19种倾斜目标检测算法进行了比较;基于HRSC2016数据集,与10种方法进行了比较。

(2)在DOTA数据集上,oriented R-CNN超过了所有其他的算法,利用R-50-FPN 和 R-101-FPN作为backbone分别获得了75.87% 和 76.28% 的mAP,采用多尺度训练和测试后,结合R-50-FPN可以获得80.87%的mAP。

(3)在HRSC2016数据集上,利用R-50-FPN 和 R-101-FPN作为backbone都获得了最优的mAP。

【论文】Oriented R-CNN for Object Detection_第9张图片

5. 精度和效率

(1)使用同样的设置对比了不同方法的速度和精度。

(2)与其他算法相比,oriented R-CNN的精度更高,同时检测效率接近单阶段检测器。

【论文】Oriented R-CNN for Object Detection_第10张图片

你可能感兴趣的:(文献阅读,目标检测,计算机视觉,深度学习)