当前先进的双阶段有向目标检测方法需要通过耗时的过程来产生有向候选框。这极大的制约了有向目标检测的速度,从而成为先进有向目标检测的计算瓶颈。本文提出了一种简单、有效的有向目标检测方法,称为Oriented R-CNN。在DOTA上达到了75.87%的mAP,在HRSC2016上达到了96.50%的mAP。基于RTX2080ti,图片大小1024*1024的分辨率,fps为15.1
方法 | 流程 | 优缺点 | 应用 |
---|---|---|---|
A | a 产生候选框 b 从候选框中提炼信息,并对候选框进行分类 | 缺:在产生候选框的时候计算耗时大 | Fast/Faster RCNN [10 11 32] |
proposals生成方法
方法 | 方法概述 | 优缺点 |
---|---|---|
图a(Oriented RPN[26]) | 每一个像素点设置54个anchors(3 scales×3 ratios×6 angles) | 优:增加了recall 并且在对象稀疏时效果较好 缺点:产生的anchors太多了,太耗费时间 |
图b (RoI transformer[7]) | 从 horizontal RoI中学习有方向的propocals | 优点:不用产生太多的anchors 缺点:训练参数多,且同样很耗时 |
图c(oriented RPN)本文 | 只用了一个轻量的FCN,网络输出6个值来表示一个proposal | 优点:参数较少,减少了过拟合的风险,并且训练很快 |
Oriented R-CNN在backbone产生featuremap后主要分为两个阶段,第一个阶段是Orieated RPN(上图c)该阶段的回归branch中增加了两个回归参数。并且,本文提出了midpoint offset (中心点偏移)的方法来表示proposal。第二阶段是Orieated R-CNN detection head,利用rotated RoI alignment从每个proposal中提取固定大小的特征向量来进行分类和回归。
mAP
数据集 | backbone | mAP |
---|---|---|
DOTA | ResNet-50-FPN | 75.87% |
HRSC2016 | ResNet-50-FPN | 96.50% |
速度
图片分辨率 | GPU | speed |
---|---|---|
1024*1024 | RTX2080t | 15.1fps |
图片输入之后,经过backbone生成特征图,将特征图送入oriented RPN中,生成一系列的高质量的oriented proposals,再将这些proposals和特征图一块送入第二阶段的oriented R-CNN Head中,对每个proposal进行变形(固定大小的特征向量)后送入FC层,最后经过两个分支输出分类结果和位置回归结果。
在每个像素点选择3个不同长宽比的anchors,{1:2,1:1,2:1},因为每层level的feature map的大小不同,所以不需要再设不同scale的anchor。
按照这个公式解码输出向量δ = (δ x ,δ y ,δ w ,δ h ,δ α ,δ β ),此时的 (x,y,w,h,∆α,∆β).就表示一个proposal。其中(x,y)表示框的中心点,w,h分别是预测框的外接矩形的宽和长,∆α,∆β是相对于中心点的偏移量,如图所示。下面在midpoint offset represention中介绍一下如何根据(x,y,w,h,∆α,∆β)表达一个oriented object
根据上文中提到的(x,y,w,h,∆α,∆β),如何确定出一个目标呢?将预测框的四个点设为v1,v2,v3,v4如上图所示。以顺时针方向排列的。计算公式如下
每一个点的位置都是确定的,这样也消除了顶点排列组合数目多,不容易确定的问题。
每个anchor都设置一个binary label记为p,用来标记是正样本(1)还是负样本(0)。
在oriented RPN阶段,为了减少proposal的数量,已减小计算量。本文在每个level的特征图上选择了2000个proposals,并进行NMS。
Oriented RPN输出一系列的oriented proposals,这些oriented proposals和feature map {P2,P3,P4,P5}共同作为输入,输到Oriented R-CNN Head中。利用Rotated RoIAligin提取固定大小的特征向量,输入到后面的两个FC中,分别进行分类和回归。
通过proposal可以计算出预测框的四个点v1-v4,然后要想办法将这个框映射到每一level的特征图上。
首先选择短对角线,如上图的v2-v4,将其延长到和长对角线相同的长度,然后得到一个矩形框(红色的),然后将这个框映射到特征图上(上图中的中间部分)。然后再利用SPPnet中的思想,通过不停地池化,将映射在特征图上的红框变成固定大小m*m的特征向量。
这样每个proposal就能得到一个固定大小的特征向量,便于后面送入FC中进行分类和回归。
目标检测入门选手,如有不对的地方,欢迎批评指正。
参考:
https://mp.weixin.qq.com/s/5KNKSMIbZ10sqDQYEFNdeg