没有合适的资源?快使用搜索试试~ 我知道了~
定向R-CNN:一个通用的高效定向对象检测框架
3520×××用于目标检测的西北工业大学自动化学院,西安{xiexing,jbwang} @ mail.nwpu.edu.cn{ gcheng,yaoxiwen,jhan}@nwpu.edu.cn图1:用于生成定向提案的不同方案的比较。(a)旋转RPN密集地放置具有不同尺度、比率和角度的旋转锚点。(b)RoI Transformer+从水平RoI学习定向提案。它涉及RPN、RoI对齐和回归。(c)我们提出的面向RPN以几乎无成本的方式生成高质量的提案。定向RPN的参数数量约为RoI Transformer+的1/3000和旋转RPN的1/15摘要目前的最先进的两级检测器通过耗时的方案产生定向建议。这降低了检测器这项工作提出了一个有效和简单的定向对象检测框架,称为定向R-CNN,这是一个通用的两阶段定向检测器,具有良好的准确性和效率。具体来说,在第一阶段,我们提出了一个面向区域的建议网络(面向RPN),直接产生高质量的导向propos- als在一个几乎免费的方式。第二阶段是定向R-CNN头,用于细化定向感兴趣区域在没有技巧的情况下,带有ResNet 50的定向R-CNN在两个常用的定向对象检测数据集上实现了最先进的检测精度,包括DOTA(75.87% mAP)和HRSC 2016(96.50% mAP),同时在单个RTX 2080 Ti上具有15.1 FPS的速度和1024 1024的图像大小。我们希望我们的工作可以启发重新思考定向检测器的设计,并作为一个基线的定向对象检测。代码可从https://github.com/jbwang1997/OBBDetection网站。* 通讯作者。+表示AerialDetection上实现的RoI Trans- former的正式版本(下同)。1. 介绍大多数现有的面向对象检测方法[7,37,41]依赖于提 议 驱 动 的 框 架 , 如 Fast/Faster R-CNN [11 , 10 ,32]。它们涉及两个关键步骤:(i)生成定向提案和(ii)细化提案并将其分类为不同类别。尽管如此,产生定向提案的步骤在计算上是昂贵的。生成定向方案的早期方法之一是旋转区域方案网络(简称旋转RPN)[26],该方法在每个位置放置54个具有不同角度、比例和纵横比(3个比例3个比率6个角度)的锚点,如图1(a)所示。旋转锚点的引入提高了召回率,并在定向对象稀疏分布时表现出良好的性能。然而,大量的锚点会导致大量的计算和内存占用。为了解决这个问题,RoI Transformer [7]通过复杂的过程从水平RoI中学习定向建议,该过程涉及RPN、RoI对齐和回归(见图1(b))。RoI Trans-former方案提供了有希望的定向方案,并大大减少了旋转锚点的数量,但也带来了昂贵的计算成本。现在,如何设计一个优雅而有效的解决方案来生成定向建议是打破最先进的定向检测器中的计算瓶颈的关键。3521×要进一步推动信封:我们调查了为什么基于区域提议的定向检测器的效率到目前为止一直落后。 我们的观察结果是,阻碍提案驱动检测器速度的主要障碍来自提案生成阶段。一个自然而直观的问题是:我们能否设计一个通用的、简单的定向区域提案网络(简称定向RPN)直接生成高质量的定向提案?受这个问题的激励,本文提出了一个简单的两阶段定向对象检测框架,称为定向R-CNN,它获得了最先进的检测精度,同时保持与一阶段定向检测器相比具有竞争力的效率。具体地说,在定向R-CNN的第一阶段中,呈现了概念上简单的定向RPN(参见图1(c))。我们的定向RPN是一种轻量级的全卷积网络,它比旋转RPN和RoITransformer+具有更少的参数,从而降低了过拟合的风险。我们通过改变RPN回归分支的输出参数数目由4个变为6个来实现。 世上没有免费的午餐。 有向RPN的设计得益于我们提出的有向对象的表示方案,称为中点偏移表示。对于图像中的任意方向的对象,我们使用六个参数来表示它们。中点偏移表示继承了水平回归机制,并为预测有向建议提供了有界约束。定向R-CNN的第二级是定向R-CNN检测头:通过旋转的RoI对齐提取每个定向建议的特征,并进行分类和回归。在没有花里胡哨的情况下,我们在面向对象检测的两个流行基准上评估了我们的面向R-CNN,即DOTA和HRSC 2016。我们使用ResNet-50-FPN的方法超越了所有现有最先进检测器的准确性因此,定向R-CNN在准确性和效率方面都是实用的对象检测框架。我们希望我们的方法将启发重新思考面向对象检测器和面向对象回归方案的设计,以及作为一个坚实的基线面向对象检测。对于未来的研究,我们的代码可以在https://github.com/jbwang1997/OBBDetection上获得。2. 相关工作在过去的十年中,显著的进步[23,33,2,42,31、24、45、13、20、29]中所描述的方法。作为对象检测的扩展分支,定向对象检测[7,37,26,12,5,28]由于其广泛的应用而受到了广泛的关注。一般对象检测方法(例如,依赖于水平边界框的更快的R-CNN不能紧密地定位图像中的定向对象,因为水平边界框可能包含更多的背景区域或多个对象。这导致最终分类置信度和定位精度之间的不一致。为了解决这一问题,人们给予了很大的关注。例如,Xia etal.[36]建立了一个带有定向注释的大规模对象检测基准,名为DOTA。许多现有的定向对象检测器[7,37,41,26,25,18]主要基于典型的基于提议的对象检测框架。定向对象的自然解决方案是设置旋转锚点[26,25],例如旋转RPN [26],其中具有不同角度,尺度和纵横比的锚点放置在每个位置上。这些密集旋转的锚导致大量的计算和内存占用。为了减少大量旋转锚点并减少特征和对象之间的失配,Ding et.al [7]提出了RoI Transformer,该变换器从RPN产生的水平RoI中学习旋转RoI。这种方式大大提高了定向对象的检测精度。然而,它使网络变得沉重和复杂,因为它涉及完全连接的层和旋转的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 et.al [12]提 出 了 一 种 用 于 定 向 对 象 检 测 的 单 次 对 准 网 络(S2ANet)。S2ANet的目的是通过深度特征对齐来缓解分类得分和位置准确性之间的不一致Pan et.al [28]基于无锚对象检测方法CenterNet [46]设计了一种用于定向对象检测的动态细化网络3522.Σ{}--×--××--图2:定向R-CNN的总体框架,这是一个建立在FPN上的两级检测器。第一阶段通过定向RPN生成定向建议,第二阶段是定向R-CNN头,以对建议进行分类并细化其空间位置。为了清楚地说明,我们没有显示FPN以及定向RPN中的分类分支与上述方法相比,我们的工作属于基于提案的面向对象的检测方法。重点研究了如何设计一种高效的面向RPN,以突破面向命题生成的计算瓶颈3. 定向R-CNN我们提出的对象检测方法称为定向R-CNN,由定向RPN和定向R-CNN头组成(见图2)。它是一个两阶段的检测器,其中第一阶段以几乎无成本的方式生成高质量的定向提案,第二阶段是定向R-CNN头,用于提案分类和回归。我们的FPN主干遵循[21],其产生五个级别的特征P2、P3、P4、P5、P6。 为了简单起见,我们没有示出FPN架构以及分类。纵横比1:2、1:1、2:1到所有级别的特征中的每个空间位置。锚点的像素区域为322、642、1282、2562、5122P2P3P4P5P6分别 每个锚点a由4维向量a=(ax,ay,aw,ah),其中(ax,ay)是锚点的中心坐标,aw和ah表示锚点的宽度和高度。两个兄弟11卷积层中的一个是回归分支:输出所述建议相对于所述锚的偏移δ=(δ χ,δ y,δ w,δ h,δ α,δβ)。在特征图的每个位置处,我们生成A个提议(A是每个位置处的锚点的数量,并且在本工作中它等于3),因此回归分支具有6个A输出。通过对回归输出进行解码,我们可以得到有方向的建议。解码过程描述如下:∆α=δα·w,∆β=δβ·h··wh在面向RPN中的操作分支接下来,我们描述面向RPN和定向R-CNN头的详细信息。w=a eδw,h=a eδhx=δx·aw+ax,y=δy·ah+ay(一)3.1. 定向RPN给定任何大小的输入图像,定向RPN输出稀疏的定向建议集整个过程可以通过轻量级全卷积网络来建模。具体来说,它需要五水平的特征P2、P3、P4、P5、P6作为输入,并且将相同设计的头部(3 × 3卷积层和两个兄弟11卷积层)附接到每个特征级别。我们分配三个水平锚点其中(x,y)是预测的前体的中心坐标W和h是预测的定向方案的外部直角框的宽度和高度。Δα和Δβ是相对于外部矩形的顶部和右侧的中点的偏移。最后,我们根据(x,y,w,h,∆α,∆β)生成定向建议。另一个兄弟卷积层估计每个定向提议的客观性得分。为了清楚地说明,我们省略了图2中的评分分支。定向RPN实际上是一个自然而直观的思想,但其关键在于3523NN−−.Σ−- -联系我们v4相对于左中点(x−w/2,y)。因此δx=(x xa)/wa,δy=(yya)/hat*= ∆α/w,t*= ∆β/ht* =log(w /w),t*=log(h /h)δW图3:中点偏移表示的图示。(a)中点偏移表示的示意图(b)中点偏移表示的示例。在定向物体的表现在这种情况下,我们设计了一种新的和简单的表示方案,称为中点偏移表示的有向对象。3.1.1中点偏移表示我们提出了一种新的有向对象表示方案,称为中点偏移表示,如图3所示。 黑点是每边的中点的水平框,该水平框是定向边界框O的外部矩形。橙色的点代表-图4:箱回归参数化的图示。黑点是顶部和右侧的中点(a)主播(b)地面实况盒子(c)预测盒子我们在两种条件之一下将锚视为阳性样品:(i)具有与任何地面实况框的高于0.7的交并(IoU)重叠的锚点,(ii)具有与地面实况框的最高IoU重叠的锚点,并且IoU高于0.3。当它们的IoU低于0.3时,锚被标记为阴性样本,具有地面实况框。既不是正也不是负的锚被认为是无效样本,其在训练过程中被忽略。值得注意的是,上述地面实况框是指定向边界框的外部矩形。接下来,我们定义损失函数L1如下:定向边界框O的纹理。具体地,我们使用具有六个的定向边界框OL=1ΣF(p,p*)+1p*ΣF(δ,t*)(3)参数O=(x,y,w,h,α,β),以表示通过等式(1)计算的通过这六个参数,我们1Ni=1cls iiNii=1reg ii可以获得每个建议的四个顶点的坐标集v=(v1,v2,v3,v4)。这里,∆α是v1相对于水平框顶边中点(x,y h/2)的偏移量。根据对称性,∆α表示v3相对于底部中点(x,y +h/2)的偏移。Δβ代表v2相对于右中点(x+w/2,y)的偏移,−Δβ是这里,i是锚的索引,N(默认N=256)是小批次中的样品总数。p*i是第i个锚点的地面实况标签。是定向RPN的分类分支的输出,其表示建议属于前景的概率。t*i是与第i个锚点相关的地面实况框的集合的监督,其是参数化的6维向量。四个顶点的坐标可以表示如下。的方向RPN的,表示预测的亲的偏移相对于第i个锚点的位置。F是交叉熵v1 =(x,y h/2)+(∆α, 0)v2 =(x+w/2,y)+(0, ∆β)损失 Freg 是顺利CLSL1损失。 对于框回归(请参见v3 =(x,y+h/2)+(−∆α,0)v4 =(x−w/2,y)+(0,− ∆β)(二)图4),我们采用仿射变换,其公式如下:通过这种表示方式,实现了对通过预测每个定向方案的δα= δα/w,δβ= log(w/wa),δh= ∆β/h= log(h/ha)环其中点偏移的参数(∆α,∆β)αg gβg g阿格夫g ah g a3.1.2损失函数为了训练定向RPN,正样本和负样本定义如下。首先,我们分配一个二进制标签p*0,每个锚点为1这里,0和1意味着锚属于阳性或阴性样本。具体来说t*x=(xg−xa)/wa,t*y=(xg−xa)/ha其中(x g,y g)、w g和h g分别是外部矩形的中心坐标、宽度和高度。∆α g和是顶部和右侧顶点相对于 到顶部和左侧的中点。torti=t*x,t*y,t*w,t*h,从回归分支参数(x,y,w,h),并推断-(四)3524≤ ≤ −≤Σ--∈ −·×××××(0i,jm1),其值计算如下:
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功