第三节
系统由两个模块组成。第一个模块是PR的深度全卷机网络(RPN),第二个模块是使用PR的Fast R-CNN检测器。
RPN模块告诉Fast R-CNN模块在哪里寻找。
3.1节介绍RPN的设计和属性。3.2节中开发用于训练具有共享特征模块的算法。
3.1 RPN(Region Proposal Networks)
RPN以任意大小的图像作为输入,输出一组矩形的目标提议,每个提议有一个得分。用全卷积神经网络对这个过程进行建模。因为最终目标是与Fast R-CNN目标检测网络共享计算,所以假设两个网络共享一组卷积层。
左为RPN,右:在PASCAL VOC 2007上的测试结果 可以检测出各种尺度和纵横比的物体
为了生成PR,在最后的共享卷积层输出的特征映射上滑动一个小网络。这个小网络将输入卷积特征的n*n空间窗口作为输入。每个滑动窗口映射一个低维特征。这个特征被输入到两个子全连接层--一个边界框回归层和一个边界框分类层。本文使用n=3,注意输入图片上的有效感受野很大(VGG为228个像素)。注意,因为小网络以滑动窗口方式运行,所有空间位置共享全连接层。这种架构通过一个n*n的卷积层,后面是两个1*1的卷积层(reg和cls)自然地实现。
3.1.1 锚点
在每个滑动窗口位置,可以预测多个RP,其中每个位置可能生成的最大数目表示为k。因此,reg层有4k个输出,包含k个边界框的坐标,cls层输出2k个分数,估计每个提议是目标与不是目标的概率。相对于我们称之为锚点的k个参考边界框,k个提议是参数化的。锚点位于所讨论的滑动窗口的中心,并与尺度和纵横比相关。默认我们使用3个尺度和3个纵横比,每个滑动位置产生k=9个锚点。对于大小为W*H(通常为40*60)的卷积特征映射,总共有WHk个锚点。
平移不变的锚点
平移不变是我们方法的一个重要特性,无论是在锚点还是计算相对于锚点的区域提议的函数。如果在图像中平移目标,提议应该平移,并且相同的函数应该能够在任一位置预测提议。我们的方法保证了平移不变性。作为比较,MultiBox方法使用k-means生成800个锚点,这不是平移不变的。所以如果一个目标被平移,MultiBox不能保证会生成相同的提议。
平移不变性减小了模型的大小。我们的方法在k=9个锚点的情况下有(4+2)*9维的卷积输出层。对于VGG16,输出层具有2.8*10^4个参数。
多尺度锚点作为回归参考
锚点设计提出了一个新的方案来解决多尺度。多尺度预测有两种流行的方法。一是基于图像特征金字塔。图像在多个尺度上进行缩放,并且针对每个尺度计算特征映射。这个方法通常有用但是耗时。二是特征映射上使用多尺度的滑动窗口。使用不同的滤波器大小分别对不同纵横比的模型进行训练。如果用这种方法来解决多尺度问题,可以把它看作是一个滤波器金字塔。第二种方法通常与第一种方法联合采用。
作为比较,基于锚点方法建立在锚点金字塔上,更具成本效益。我们的方法参照多尺度和纵横比的anchor box来分类和回归边界框。它只依赖单一尺度的图像和特征映射,并使用单一尺寸的滤波器(滑动窗口)。我们通过实验来展示这个方案解决多尺度的效果。
由于这种基于锚点的多尺度设计,我们可以简单的使用单尺度图像上计算的卷积特征,Fast R-CNN也是这样做的。多尺度锚点设计是共享特征的关键组件,不需要额外的成本来处理尺度。
3.1.2 损失函数
为了训练RPN,为每个锚点分配一个二值类别标签(是目标或不是目标)。我们给两种锚点分配正标签:
- 与实际边界框(gt-box)IoU最高的锚点
- 与实际边界框的IoU超过0.7的锚点
单个gt-box可以为多个锚点分配正标签。如果一个锚点的IoU低于0.3,则给锚点分配一个负标签。既不是正标签也不是负标签的锚点不会有助于训练目标函数。
3.1.3 训练RPN
RPN可以通过反向传播和随机梯度下降进行端对端的训练。我们遵循以图像为中心的采样策略来训练这个网络。每个小批量数据都从包含许多正面和负面示例锚点的单张图像中产生。对所有锚点的损失函数进行优化是可能的,但这样会偏向于负样本,因为它们占主导地位。取而代之的是,我们在图像中随机采样256个锚点,计算一个小批量数据的损失函数,其中采样的正锚点和负锚点的比例可达1:1。如果图像中的正样本少于128个,使用负样本填充小批次数据。
我们从标准方差为0.01的零均值高斯分布中提取权重来随机初始化所有新层。所有其他层通过预训练的ImageNet分类模型来初始化,如同标准实践。我们调整ZF网络的所有层,以及VGG网络的conv3_1及其之上的层以节省内存。对于60k的小批量数据,使用0.001的learning rate,对于PASCAL VOC数据集中的下一个20l小批量数据,使用0.0001。使用0.9的动量和0.0005的权重衰减。
3.2 RPN和Fast R-CNN共享特征