FASTER RCNN阅读笔记

Faster RCNN

简介:物体检测的经典之作 state-of-art (2016)。拜读之,发现不做笔记很难对网络有详细的了解。

1 Introduction

一言蔽之,以前方法例如FAST RCNN虽然效果好,但处理图片太慢,作者把RPN(Region Proposal Networks)和state-of-the-art的物体检测网络Fast RCNN通过共享卷积层方法来实现图片的快速处理,最终实现端到端的训练,不仅在大大提高了计算速度,而且提高了准确率。

2 Releated Work

Object Proposals.以前的生成目标后选框都独立于检测器之外,例如选择性搜索目标检测器(Selective Search),R-CNN,和Fast—RCNN。
Deep Networks for Object Detection.一些人对使用深度学习做物体检测进行了一些研究,然后提出共享卷积层的方法吸引了很多人注意。

3 FASTER R-CNN

Faster R-CNN由两个模块组成,第一个模块是一个生成区域的深度全卷积网络,第二个模块是利用第一个模块生成的区域数据的Fast R-CNN检测器。整个网络对于物体检测来说是一个单一的统一的结构。如下图所示:

Faster R-CNN结构图

3.1Region Proposal Networks

RPN可以输入任意大小的图片,同时输出一组带有分数的矩形物体候选框。因为最终目的是与Fast R-CNN共享计算,所以假设两个网络共享相同的卷积层。
为了生成区域候选框,作者用小的网络在共享卷积特征图(feature map)的最后一层滑动。这个小网络把输入卷积特征图的一个n×n空间窗口作为输入。此特征被输入两个并行全连接网络–一个box回归层,一个box分类层,如下图左。这种架构自然而然是用一个n×n卷积层,然后后面是两个并行的1×1卷积层(分别用于reg和cls)来实现的。
fig3

3.1.1 Anchors

在每个滑动窗口,同时预测多个候选区域,其中每个位置的最大可能候选区域的数量被表示为k。所以reg层有输出4k个k个框的编码坐标。cls层输出2k个估计是目标区域或不是目标区域的可能性的得分。k个与k个参考的boxes被参数化的候选区域被称为anchor。anchor在滑动窗口的中心,并且与比例和长宽比比有关。作者在滑动窗口默认使用3个不同比率(scales)和3个不同长宽比(aspect ratios)共k=9个anchor。对于大小为W×H大小的卷积特征图,共有WHk个anchor。

  • Translation-Invariant Anchors
    作者所用方法的一个总要特性是无论是anchor,还是计算与anchor的候选区相关的函数都具有平移不变( translation invariant)性。意思就是如果目标在图片的位置移动了,那么相应的候选区(proposal)应该随目标移动,并且相同的函数应该能够在任意位置预测候选区。为何能实现这样的效果,需要参考《Fully convolutional networks for semantic segmentation》 。与之对比的是采用MultiBox method 使用k-means算法生成的anchor,但这个算法不具有translation invariant特性。除此之外,作者采用的算法比MultiBox 所用的参数量更少。

  • Multi-Scale Anchors as Regression References
    以前常用两种方法进行进行多尺度预测(multi-scale predictions)。第一种为图像金字塔和特征金字塔,即图片多尺度输入,特征多尺度计算如图中(a),此种方法虽然有效但计算费时。第二种方法是使用不同尺度的窗口在特征图上滑动如图中(b)此种方方法常与第一种方法联合使用。
    而作者采用的方法为下图(c)此种方法计算更为高效并且只依赖单一尺度的图像和特征图,并且使用的滑动窗口也为单一尺度。这种多尺度anchor的设计是能够使网络能够共享特征而不增加额外计算来解决尺度问题的关键。
    这里写图片描述

3.1.2Loss Function

为了训练RPN,为每一个anchor分配一个二值标签(是,不是)。作者把两类anchor设置为正标签:(1)从ground-truth box 角度来看,选一个与其计算具有最高IOU的anchor做为正标签;(2)从anchor的角度看,只要此anchor与任何一个ground-truth box计算的IOU大于0.7即可认为这个anchor为正标签。注意一个ground-truth box可能对应多个正标签的anchor。作者选取了第一类方法,因为第二种方法在某些少数情况下会找不到正样本。对于那些与所有ground-truth box计算的IOU都小于0.3的anchor,作者为其分配一个负标签。根据上述定义,作者定义了一个loss函数:

  • 公式1
    L({pi},{ti})=1Nclsi=1Lcls(pi,pi)+λ1NregipiLreg(ti,ti)

上式中,i是一个batch中的anchor索引, pi 则为anchor i为目标区域的概率。如果anchor为正,则样本框标签 pi 为1,否则 pi 为 0。 ti 表示预测输出边框的4个参数坐标的一个向量, ti 则为与正anchor有关的ground-truth box坐标向量。 Lcls 是一个关于二分类的log损失函数。 Lreg(ti,ti)=R(titi) ,其中R则为FAST-RCNN中定义的损失函数。 piLreg 表示回归loss只有在anchor为正( pi=1 )时才被激活。
Ncls (bachsize=256)和 Nreg (约为2400) 为归一化参数, λ 为加权参数。作者默设置 λ =10,这样cls和reg在loss中所占权重差不多。但是作者通过实验发现网络对 λ 不怎么敏感。 λ 参数值与实验结果:

λ 0.1 1 10 100
mAP(%) 67.2 68.9 69.9 69.1

对于框回归作者作者根据文章 《Rich feature hierarchies for accurate object detection and semantic segmentation 》 采用四坐标参数化方法:

tx=(xxa)/wa,ty=(yya)/ha,tw=log(w/wa),th=log(h/ha),tx=(xxa)/wa,ty=(yya)/ha,tw=log(w/wa),th=log(h/ha),

上述公式中 x,y,w,h 分别代表box的中心坐标、宽、高。变量 x,xa,x predicted box,anchor box,ground-truth box。这可以被认为是从anchor box到anchor box附近的ground-truth box 做bbox回归。
作者的bbox回归方式与《Spatial pyramid pooling in deep convolutional networks for visual recognition》、《Fast R-CNN》 所用的基于ROI方法有所不同。在作者的公式中,用于做回归的特征在特征图上具有相同的空间大小(3×3)。为了适用不同大小(应该是上文生成不同scale和aspect ratio的anchor box),需要学习一组K个边界框回归器。k个回归器对应不同的scale和aspect ratio,并且回归器之间不共享参数。由于anchor的设计,即使特征是固定大小的size/sclae,上述方法任然可以输出各种大小的box.

3.1.3 Training RPN

RPN网络可以通过反向传播和随机梯度下降法进行训练。作者遵循《FAST RCNN》 中的“image-centric” 抽样方法训练RPN。每一个mini-bach都由一个包含许多正负例(positive and negative example anchors)anchors单一图片生成。然而因为负例的anchor占主要地位,训练结果会偏向负例。为解决此问题,作者从一张图片随机抽正负例比率为1:1的256个anchors来计算mini-batch的损失函数。如果一张图片的正例少于128那么就用负例填充mini-batch。
对于所有的新层,作者采用均值为0标准差为0.01的高斯分布进行随机初始化。其它层通过ImageNet分类 的预训练模型进行初始化。在PASCAL VOC数据集上,采用前60kmini-batches学习率为0.001,后面20k学习率为0.0001的策略。使用0.9的momentum权重衰减率为0.0005 。

3.2 Sharing Features for RPN and Fast-CNN

为了使RPN和Fast RCNN共享卷积层,构建一个统一的网络,作者探索了三种方法。

  • 交替训练(Alternating training)。首先训练RPN,然后利用候选区域(proposal)l来训练Fast R-CNN.然后再用Fast R-CNN调好的网络初始化RPN。

  • 近似联合训练(Approximate joint training)。把RPN和Fast R-CNN融合到一个网络。在每一次SGD迭代中,前向通道生成候选区域,这些候选区域同与在训练Fast R-CNN检测器时固定的预计算的候选区域一样对待处理。反向传播过程同以前一样。这个解决方案容易实施,但是忽略了network返回的候选框坐标的导数,所以说是近似训练。在实验中作者发现结果同以前相近,比方法一减少了25%-50%的时间。

    Faster R-CNN结构图

  • 非近似联合训练(Non-approximate joint training)。如上述,由RPN预测的bbox也是输入的函数(???)。Fast R-CNN中的RoI pooling层接受卷积特征和预测的bbox作为输入,所以理论上有效的反向传播求解也应该包含关于box坐标的梯度。而这些梯度在近似联合训练中被忽略了。在非近似联合训练方案中,我们需要一个关于box坐标的可区分的RoI pooling层。emmm… 超出范围不讨论。

4-step Alternating Training. 在本文中,作者采用实用的4步训练算法通过交替优化学习共享特征。第一步如3.1.3部分描述的那样训练RPN。该网络使用ImageNet预先训练的模型进行初始化,并针对区域候选框进行端到端的微调。第二步利用第一步RPN网络生成的区域后选框通过Fast R-CNN训练独立的检测网络。此网络同样使用ImageNet预训练模型进行初始化。第三步使用检测网络初始化RPN训练,但是使共享卷积层参数固定,只微调(fine-tune)RPN特有的层。第四步使共享卷基层参数与固定,微调Fast R-CNN特有的层。因此,两个网络共享相同的卷积层并形成统一的网络。

3.3 Implementation Details

作者实验发现通过多尺度特征提取比如图像金字塔(image prymaid)或许可以提高网络精度,但是无法兼顾速度与精度。在缩放图(re-scaled image)上对于ZF和VGG网络上的最后一层卷积层上的总sride为16,同样在在resizing(约500*300)之前的经典PASCAL数据集上的stride约为10个像素点。如此大的stride就能取得不错的结果,或许通过更小的stride可以改善结果。
与图像边界交叉的anchor需要仔细处理。作者忽略了所有与边界交叉的anchor,因此这些anchor不会对loss做贡献。对于典型的一个1000*600像素的图像,总共约有20000(60×60×9)个anchor。忽略掉与边界交叉的一张图片大约有6000anchors可 共训练。如果不忽略边界anchor,这些anchor将会在目目标中引入非常大的难以训练的的错误项,并且导致训练难以收敛。在测试期间任然对整张图片应用全卷积RPN。这会产生跨边界的候选框(proposal boxes)。我们可以根据图片裁剪这些边框。
有一些RPN候选区相互高度重合。为了减少冗余,作者根据cls分数对候选区域采用非极大值抑制。作者设置IoU阈值为 0.7,这样一张图片大约可以有2000个候选区域。在非极大值抑制之后,采用排名前N的候选区域进行预测。训练时候使用2000RPN进行训练,但在测试时评测不同数量的候选区域。

4实验结果

略。。。。。。。。。。


猜你喜欢

转载自blog.csdn.net/shenhuaifeng/article/details/80235311