Faster R-CNN论文阅读笔记

    Faster R-CNN在Fast R-CNN基础上提出了RPN概念,解决了区域提议计算的瓶颈,使得速度更快,准确率保持优良水准。

介绍

    区域提议方法通常依赖于易寻的特征和经济的推理方案。选择性搜索(SS)是最常用的方法,贪婪地合并基于工程底层功能的超像素,然而跟有效的检测网络相比,SS还是慢了不少。并且SS是在CPU上运行的,如果能把区域提议也使用GPU来计算,会更有效。

    本文提到的RPN与目标检测网络共享卷基层, 使得区域提议的时间花费非常小。作者发现用来做基于区域的加测器的卷积特征图也可以用来产生区域提议。在这些卷积特性之上,我们通过添加两个额外的卷积层来构造rpn。一个将每个卷积映射位置编码为一个短的(例如,256-D)特征向量。另一个在每个卷积映射位置输出一个客观分数和在此位置的k个区域提议(相对于不同尺度和方向)的回归边界。该位置的比率(k=9是一个典型值)。

   文中,RPN是一种全卷积网络(FCN)可以对其进行端到端的训练,尤其可用于生成检测提议的任务。为了将RPN与Fast R-CNN目标检测网络相统一,作者提出了一种简单的训练方案,在微调之间交替进行,微调区域提议任务,然后进行对象检测的微调,同时保持提议不变。该方案收敛迅速,形成了一个统一的网络,两个任务可以共享卷积特征。

RPN

    RPN将一个图片作为输入,将输出一批矩形目标提议,每个都有一个客观得分。为了生成区域提议,我们在最后一个共享卷积层的conv特征图输出上滑动一个小网络。该网络完全连接到输入卷积特征图的N×N空间窗口。每个滑动窗口都被映射到一个低维向量,这个向量被送入两个全连接的兄弟层——一个框回归层(Reg)和一个框分类层(CLS),如图。

文中N取3,输入图像上的有效感受野很大。注意到,由于这个小网络以滑动窗口方式运行,因此在所有空间位置共享全连接层。这种体系结构自然地由一个n×n conv层和两个兄弟1×1 conv层实现(分别用于Reg和CLS)。将Relus应用于n×n的 conv层输出上。

平移不变的anchors

    在每个滑动窗口位置,我们同时预测K个区域提议,因此Reg层有4K输出,编码K个框的坐标。CLS层输出2K个分数,用于估计每个方案的目标/非目标概率。K是相对于K个参考框(称为锚)进行参数化的。每个锚点都集中在相关的滑动窗口上,并与比例和纵横比相关联。文中使用3个比例和3个纵横比,产生k=9个锚,在每个滑动位置。对于W×H(通常~2400)尺寸的conv特征图,总共有WHk个锚。该方法的一个重要特性是,无论是在锚还是计算相对于锚的提议函数方面,它都是平移不变量。

    作为比较,多盒方法使用k-means生成800个锚,这些锚不是平移不变的。如果要平移图像中的目标,提议也应平移,并且同样的功能应该能够在任何一个位置预测提议。此外,由于多盒锚不是平移不变的,因此需要(4+1)×800维的输出层,而本文的方法需要(4+2)×9维的输出层。

学习区域提议的损失函数

   对于训练RPN,我们为每个锚分配一个二进制类标签(判断是否为目标)。文中为两种锚框指定了正标签:(i)具有最高IOU(与ground truh比)的anchor/anchors,或(i i)具有高于0.7的IOU(与任何ground truth比)的锚框。一个ground truth可以有多个锚框点标为正标签。如果与所有ground truth的IOU比率低于0.3,我们将负标签分配给非正锚。既不正也不负的锚对训练目标没有贡献。

这里,i是mini-batch中锚框的索引,pi是锚框i的目标预测概率。  如果锚框为正,则真值标签p i*为1;如果锚框为负,则为0t i是表示预测边界框的4个参数化坐标的向量,t i*是与正锚相关联的真值框的向量。  分类损失Lcl是两类(对象与非对象)的log损失。对于回归损失,使用,其中R是鲁棒损失函数(smooth L1)。表示回归损失仅对正锚框(p i*=1)激活,否则不用(p i*=0)。这两个术语用Ncls和Nreg来归一化以及平衡权重λ。

      对于回归,我们采用以下4个参数化的坐标:

  此处计算边界框回归与Fast R-CNN不同,回归的权重不被任意尺度共享,而是对不同的比例和横纵比的边界框有不同的权重。

优化

       每一个mini-batch都来自一个包含许多正锚和负锚的图像。可以对所有锚的损失函数进行优化,但这将偏向于负样本,因为它们数量更多。相反,文中随机抽取图像中的256个锚来计算一个小批量的损失函数,其中,抽样的正锚和负锚的比率达1:1。如果一个图像中的正样本少于128个,我们将用负样本填充小批次。

区域提议和目标检测的卷积特征共享

      让RPN和Fast R-CNN共享卷积网络的技术不是很容易。这并不是简单地定义一个包含RPN和Fast R-CNN的单一网络,然后与反向传播一起优化它那么容易。原因是Fast R-CNN训练依赖于固定目标提议,在改变提议机制的同时,Fast R-CNN是否会收敛尚不清楚。文中开发了一个实用的四步训练算法,通过交替优化学习共享特性。

      在第一步中,我们对RPN进行训练,该网络通过ImageNet预训练模型进行初始化,并针对区域提议任务进行端到端微调。在第二步中,我们使用步骤1 RPN生成的提议,通过Fast R-CNN训练一个单独的检测网络。该检测网络也由ImageNet预训练模型初始化。此时,两个网络不共享conv层。在第三步中,我们使用检测器网络来初始化RPN训练,但是我们修复了共享的conv层,并且只对RPN特有的层进行微调。现在这两个网络共享conv层。最后,保持共享的conv层不变,我们微调快速r-cnn的fc层。因此,两个网络共享相同的conv层并形成一个统一的网络。

       一些RPN提议彼此高度重叠。为了减少冗余度,我们在提议区域基于其分类分数采用非最大抑制(NMS)。我们将NMS的IOU阈值定为0.7,这样每幅图像留下大约2千个提议区域。正如我们将要展示的,NMS不会损害最终检测精度,但会大大减少提议的数量。在NMS之后,我们使用排名前N的建议区域进行检测。在下面,在训练时 Fast R-CNN使用2K RPN提议,但在测试时评估不同数量的提议。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值