没有合适的资源?快使用搜索试试~ 我知道了~
CornerNet:将对象检测为成对的关键点黑律【0000−0003−1009−164X】、登甲【0000−0001−9594−4554】密歇根大学安娜堡{heilaw,jiadeng}@ umich.edu抽象。我们提出了CornerNet,这是一种新的对象检测方法,我们使用单个卷积神经网络将对象边界框检测为一对关键点,即左上角和右下角 通过将对象检测为成对的关键点,我们消除了设计在先前的单级检测器中常用的一组锚框的需要。 除了我们的新公式,我们还引入了角落池,这是一种新型的池化层,可以帮助网络更好地定位角落。 实验表明,CornerNet在MSCOCO上实现了42.1%的AP,优于所有现有的一级检测器。关键词:目标检测1介绍基于卷积神经网络(ConvNets)[20,36,15]的对象检测器在各种具有挑战性的基准测试[24,8,9]上取得了最先进的结果现有技术方法的共同组件是锚框[32,25],其是用作检测候选的各种大小和纵横比的框。锚盒广泛用于单级探测器[25,10,31,23],其可以实现与两级探测器[32,12,11,13]高度竞争的结果,同时更高效。一阶段检测器将锚框密集地放置在图像上,并通过对锚框进行评分并通过回归来细化其坐标来生成最终框预测。但是锚盒的使用有两个缺点。首先,我们通常需要一组非常大的锚箱,例如在DSSD [10]中超过40k,在RetinaNet [23]中超过100k。这是因为检测器被训练以分类每个锚框是否与地面实况框充分重叠,并且需要大量锚框来确保与大多数地面实况框充分重叠。因此,只有很小一部分锚框将与地面实况重叠;这在正锚箱和负锚箱之间产生了巨大的不平衡,并且减慢了训练[23]。其次,锚箱的使用引入了许多超参数和设计选择。这些包括有多少个盒子,什么大小,什么长宽比。这样的选择在很大程度上是通过ad-hoc启发式方法做出的,并且当与单个网络2H. Law,J. 邓ConvNetHeatmaps 嵌入左上角右下角Fig. 1.我们检测一个对象作为一对包围盒角落分组在一起。卷积网络输出所有左上角的热图、所有右下角的热图以及每个检测到的角的嵌入向量该网络被训练为预测属于同一对象的角点的类似嵌入。在多个分辨率下进行单独的预测,每个尺度使用不同的特征和自己的一组锚框[25,10,23]。在本文中,我们将介绍CornerNet,这是一种新的单阶段对象检测方法,可以消除锚框。我们检测一个对象作为一对关键点-左上角和右下角的边界框。我们使用单个卷积网络来预测同一对象类别的所有实例的左上角的热图,所有右下角的热图,以及每个检测到的角的嵌入向量。嵌入用于将属于同一对象的一对角进行分组-网络经过训练以预测它们的相似嵌入。我们的方法大大简化了网络的输出,并消除了设计锚盒的需要。我们的方法的灵感来自Newell等人提出的关联嵌入方法。[27],他们在多人人体姿态估计的背景下检测和分组关键点图1示出了我们的方法的整体流水线。图二.通常没有局部证据来确定边界框角的位置。我们通过提出一种新型的池化层来解决这个问题。CornerNet:将对象检测为成对的关键点3CornerNet的另一个新颖组件是角池,这是一种新型的池层,可以帮助卷积网络更好地定位边界框的角。边界框的一个角通常在对象的外部-考虑圆的情况以及图2中的例子。2.在这种情况下,不能基于局部证据来定位角。相反,为了确定在像素位置处是否存在左上角,我们需要水平地向右看对象的最顶部边界,并且垂直地向下看对象的最左侧边界。这激发了我们的角落池层:它接受两个特征图;在每个像素位置处,它最大池化(max-pool)来自第一特征图的右侧的所有特征向量,最大池化(max-pool)来自第二特征图的正下方的所有特征向量,然后将两个池化的结果加在一起。一个例子如图所示。3.第三章。特征图左上角池化输出图3.第三章。角点池:对于每个通道,我们在两个方向(红线)上取最大值(红点),每个方向都来自一个单独的特征图,然后将两个最大值相加(蓝点)。我们假设有两个原因,为什么检测角落会比边界框中心或建议更好地工作。首先,框的中心可能更难定位,因为它取决于对象的所有4个边,而定位角取决于2个边,因此更容易,并且使用角池化(corner pooling)更容易,角池化编码了关于角的定义的一些显式先验知识。其次,角点提供了一种更有效的方法来密集离散盒子的空间:我们只需要O(wh)个角点来表示O(w2h2)个可能的锚盒子。我们证明了CornerNet在MS COCO上的有效性[24]。CornerNet实现了42.1%的AP,优于所有现有的一级检测器。此外,通过消融研究,我们 表 明 , 角 落 池 是 至 关 重 要 的 优 越 性 能 的 角 落 网 。 代 码 可 在https://github.com/umich- vl/CornerNet上获得。4H. Law,J. 邓2相关作品两阶段方法首先由R-CNN引入并推广 [12]。两阶段检测器生成一组稀疏的感兴趣区域(ROI),并通过网络对每个感兴趣区域进行分类。R-CNN使用低级视觉算法生成ROI [41,47]。然后从图像中提取每个区域,并由ConvNet独立处理,这会产生大量冗余计算。后来,SPP[14]和Fast-RCNN [11]通过设计一个特殊的池化层来改进R-CNN,该池化层从特征图中池化每个区域。然而,两者仍然依赖于单独的建议算法,并且不能进行端到端的训练。Faster-RCNN [32]通过引入区域建议网络(RPN)来消除低级建议算法,该网络从一组预定的候选框(通常称为锚框)生成建议这不仅使检测器更有效,而且还允许检测器端到端地训练。R-FCN [6]通过用全卷积子检测网络取代全连接子检测网络,其他工作集中在合并子类别信息[42],在多个尺度上生成具有更多上下文信息的对象建议[1,3,35,22],选择更好的特征[44],提高速度[21],级联过程[4]和更好的训练过程[37]。另一方面,YOLO [30]和SSD [25]推广了一阶段方法,该方法删除了RoI池化步骤并在单个网络中检测对象。单阶段检测器通常比两阶段检测器更有效,同时在不同的具有挑战性的基准上保持SSD将锚框密集地放置在来自多个尺度的特征图上,直接对每个锚框进行分类和细化。YOLO直接从图像预测边界框坐标,后来在YOLO9000 [31]中通过切换到锚框进行了改进DSSD [10]和RON [19]采用类似于沙漏网络[28]的网络然而,这些一级检测器仍然优于两级检测器,直到引入RetinaNet [23]。在[23]中,作者认为密集的锚盒在训练期间在正锚盒和负锚盒之间产生了巨大的不平衡。这种不平衡导致训练效率低下,因此性能不佳。他们提出了一种新的损失,焦点损失,以动态调整每个锚框的权重,并表明他们的一级检测器可以优于两级检测器。Refinedet [45]建议过滤锚框以减少负框的数量,并粗略调整锚框。DeNet [39]是一个两阶段检测器,它在不使用锚框的情况下生成RoI它首先确定每个位置属于边界框的左上角、右上角、左下角或右下角然后它CornerNet:将对象检测为成对的关键点5通过枚举所有可能的角点组合生成ROI,并遵循标准的两阶段方法对每个ROI进行分类。我们的方法与DeNet非常首先,DeNet不识别两个角是否来自相同的对象,而是依赖于子检测网络来拒绝较差的ROI。相比之下,我们的方法是一个单阶段的方法,其检测和分组使用一个单一的ConvNet的角。第二,DeNet选择特征在手动确定的位置相对于一个区域进行分类,而我们的方法不需要任何特征选择步骤。第三,我们引入角池,一种新型的层,以增强角点检测。我们的方法的灵感来自Newell等人。工作[27]在多人姿势估计的背景下进行关联Newell等人提出了一种在单个网络中检测和分组人体关节的方法在他们的方法中,每个检测到的人体关节都有一个嵌入向量。关节根据其嵌入之间的距离进行分组。据我们所知,我们是第一个制定的目标检测的任务,同时检测和分组角的任务。我们的另一个新颖之处是角落池层,有助于更好地定位角落。我们还显着修改了沙漏架构,并添加了我们的新变体焦点损失[23],以帮助更好地训练网络。3CornerNet3.1概述在CornerNet中,我们将对象作为一对关键点进行检测-边界框的左上角和右下角。卷积网络预测两组热图来表示不同对象类别的角的位置,一组用于左上角,另一组用于右下角。该网络还预测每个检测到的角点的嵌入向量[27],使得来自同一对象的两个角点的嵌入之间的距离为了产生更紧密的边界框,网络还预测偏移以稍微调整角的位置。通过预测的热图、嵌入和偏移,我们应用一个简单的后处理算法来获得最终的边界框。图4提供了CornerNet的概述我们使用沙漏网络[28]作为CornerNet的骨干网络沙漏网络之后是两个预测模块。一个模块用于左上角,而另一个模块用于右下角。每个模块都有自己的角落池模块,在预测热图、嵌入和偏移之前从沙漏网络中池化特征。与许多其他对象检测器不同,我们不使用不同尺度的特征来检测不同大小的对象我们只将这两个模块应用于沙漏网络的输出。3.2检测角落我们预测两组热图,一组用于左上角,一组用于右下角。每组热图具有C个通道,其中C是通道的数目。6H. Law,J. 邓沙漏网络预测模块图4.第一章CornerNet概述骨干网络后面是两个预测模块,一个用于左上角,另一个用于右下角。使用来自两个模块的预测,我们定位并分组角。类别,大小为H×W。没有背景频道。每个通道是指示类的角的位置的二进制掩码。了图 五、“Ground-tru t h“he a t m ap s for r t rain i n g. 角 在正位置(橙色圆圈)的半径内的方框(粗直矩形)仍然与地面实况注释(红色实心矩形)有很大的重叠。对于每个角,存在一个地面实况正位置,并且所有其他位置都是负的。在训练期间,我们不是同等地惩罚负位置,而是减少给予正位置半径内的负位置的惩罚。这是因为一对假角点检测,如果它们接近它们各自的地面实况位置,仍然可以产生与地面实况框充分重叠的框(图1B)。(五)。我们通过确保半径内的一对点将生成具有至少t个IoU的边界框,并使用地面实况注释(我们将t设置为0)来确定对象的大小。7在所有实验中)。给定半径,处罚金额-x2+y2约简由未归一化的2D高斯e2σ2给出 ,其中心位于正位置,σ为半径的1/3。左上角Heatmaps角落合并预测模块嵌入预测模块Off集右下角CornerNet:将对象检测为成对的关键点7该算法是在预生成的映射中创建的,并且该算法是使用非正态化高斯模型生成的映射。我们设计了一个焦点损失的变体[23]:Ldet= -1CΣHΣW.(1−pcijβ)αlog(pαCIJ)如果是 cij= 1(一)Nc=1i =1j =1(1−ycij)(pcij)log(1−pcij)otherwise其中N是图像中对象的数量,α和β是控制每个点的贡献的超参数(在所有实验中,我们将α设置为2,将β设置为4)。对于以ycij编码的高斯凸块,(1−ycij)项减少了地面实况位置周围的惩罚。许多网络[15,28]涉及下采样层,以收集全局信息并减少内存使用。当它们完全应用于图像时卷积地,输出的大小通常很小。而不是Σe图像。于是,一图像中的位置(x,y)被映射到热图中的位置x,yn n其中n是下采样因子。当我们重新映射如果将热图映射到输入图像,则可能会丢失一些精度,这可能会极大地影响具有其地面实况的小边界框的IoU为了解决这个问题,我们预测位置偏移,以在重新映射到输入分辨率之前稍微调整角点位置。. XKok=−n,x,k,n,yk−n,yk,Σn(二)其中〇k是偏移,Xk和yk是角k的X和y坐标。特别地,我们预测所有类别的左上角共享的一组偏移,以及右下角共享的另一组偏移。为了训练,我们在地面实况角点位置应用平滑L1损失[11]:1ΣNLoff= Nk=1SmoothL1 Loss(ok,ok)(3)3.3分组角多个对象可出现在图像中,且因此可检测到多个左上角及我们需要确定一对左上角和右下角是否来自同一个边界框。我们的方法的灵感来自于Newell等人提出的关联嵌入方法[27]对于多人姿势估计的任务Newell等人检测所有人体关节并为每个检测到的关节生成嵌入。它们基于嵌入之间的距离对关节进行分组。关联嵌入的思想也适用于我们的任务。该网络预测每个检测到的角点的嵌入向量,使得如果左上角点和右下角点属于相同的边界框,则它们的嵌入之间的距离应该很小。然后我们可以根据8H. Law,J. 邓取决于左上角和右下角的嵌入之间的距离。嵌入的实际值并不重要。只有嵌入之间的距离用于对角进行分组。我们遵循Newell等人。[27]并使用一维嵌入。设etk是对象k的左上角的嵌入,并且ebk是对象k的右下角的c或ner的嵌入。如[26]中所述,我们使用“多个”损失来将两个任务划分为多个核心,并使用“多个”损失来区分核心L拉力= 1ΣNNk=11Σ(etkΣN— ek)2+(ebΣNΣ— ek)2、(四)Lpush=N(N−1)k=1j=1j/=kmax(0,∆−|ek−ej|),(5)其中ek是etk和ebk的平均值,我们在所有实验中将∆设置为1类似于偏移损耗,我们仅在地面实况角位置应用损耗。3.4角落合并如图2、对于角的存在,通常没有局部视觉证据。为了确定像素是否是左上角,我们需要水平向右查看对象的最高边界,垂直向下查看对象的最左边界。因此,我们提出了角落池,以更好地本地化的角落编码明确的先验知识。图六、左上角池化层可以非常有效地实现我们从左到右扫描水平最大池化,从下到上扫描垂直最大池化。然后,我们添加两个最大池化特征图。假设我们想要确定位置(i,j)处的像素是否是左上角。令fi和fi是作为左上角池化层的输入的特征图,并且令fi和fi分别是fi和fi中的位置(i,j)处对于H×W特征图,角池化层首先将ft中的(i,j)和(i,H)之间的所有特征向量最大池化为特征向量tij,并且223256663434114031K332666679103134113422220202CornerNet:将对象检测为成对的关键点9最大-将fl中的(i,j)与(W,j)之间的所有特征向量汇集到特征向量Iij。最后,将tij和lij相加。该计算可以由以下等式表示:tij=.Max.Σftij,t(i+1)j如果iH(六)否则为Iij= .Max.Σflij,li(j+1)如果j
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功