Oriented R-CNN

Oriented R-CNN

Introduction

论文题目 :Oriented R-CNN for Object Detection

论文地址https://arxiv.org/pdf/2101.11952v4.pdf

论文出处 :2021’ICCV

代码实现https://github.com/jbwang1997/OBBDetection

Idea

Oriented R-CNN是一个Two-Stage的检测器。

在the first stage上,作者进行了主要创新:提出了oriented Region Proposal Network(简称oriented RPN),该网络能 已近乎0成本的方式直接生成高质量的旋转建议框(oriented proposal) ,使得检测速度在单张2080ti上达到了15.1FPS;在the second stage上,作者沿用了ROI Transformer中的RROI Align提取旋转不变特征,并用于后续分类和回归。

Detail

之前的Two-Stage检测器主要存在以下问题:

  1. 生成旋转建议框的计算成本很高
  2. 采用水平ROI进行分类和定向边界框回归,这样对象和特征之间的错位导致分类置信度与定位精度的不一致

Oriented R-CNN

具体细分为Oriented RPN和Oriented R-CNN Head两个部分。

Oriented RPN

其实Oriented RPN是很自然并且很直观的一个idea,但它实现的关键就在于如何直接表示oriented proposal。

在原本的RPN基础上,作者添加了两个1x1的conv layer构成了Oriented RPN。

第一个conv layer是一个回归分支,通过6A的channel输出proposal相对于anchor的偏移量:

δ=(δx,δy,δw,δh,δα,δβ)\delta = (\delta_{x},\delta_{y},\delta_{w},\delta_{h},\delta_{\alpha},\delta_{\beta})

{Δα=δαw,Δβ=δβhw=aweδw,h=aheδhx=δxaw+ax,y=δyah+ay\left\{\begin{array}{l}\Delta \alpha=\delta_\alpha \cdot w, \quad \Delta \beta=\delta_\beta \cdot h \\ w=a_w \cdot e^{\delta_w}, \quad h=a_h \cdot e^{\delta_h} \\ x=\delta_x \cdot a_w+a_x, \quad y=\delta_y \cdot a_h+a_y\end{array}\right.

然后通过上述公式Decoding得到:

(x,y,w,h,α,β)(x,y,w,h,\triangle\alpha,\triangle\beta)

其中α,β\triangle\alpha,\triangle\beta是平行四边形proposal顶点相对于外部矩形上侧和右侧中点的偏移量

然后通过上述公式求得proposal四个顶点:

(v1,v2,v3,v4)(v1,v2,v3,v4)

其中v1,v2,v3,v4v1,v2,v3,v4是平行四边形proposal四个顶点的坐标向量

作者将上述这个表示法称为midpoint offset representation。

第二个conv layer是一个对oriented proposal分类准确度的评分分支,不重要,具体没有展开讲解。

Oriented R-CNN Head

得到了上述的平行四边形oriented proposals(v1,v2,v3,v4)(v1,v2,v3,v4)后,需要转换为矩形才能用于RROI Align。

作者的做法是 延长该平行四边形两条对角线中较短的一边,以此构成矩形框

通过数学方法将(v1,v2,v3,v4)(v1,v2,v3,v4)转为(x,y,w,h,θ)(x,y,w,h,\theta),而后将该矩形框映射到Feature map上,再进入到后续RROI Align模块。

RROI Align部分,直接沿用了ROI Transformer中的成果,使用深度特征对齐提取旋转不变特征,并用于后续分类和回归。

Experiments

作者使用ResNet-50-FPN, ResNet-101-FPN作为Backbone,在DOTA和HSRC2016数据集上,用单张2080ti做训练和测试,达到了SOTA。


本博客所有文章均采用 CC BY-NC-SA 4.0 协议 ,禁止商用,转载请注明出处!