目录
摘要
Abstract
1 引言
2 Fast R-CNN
2.1 RoI池化层
2.2 多任务损失
3 RPN
3.1 Anchors
3.2 损失函数
3.3 训练RPN
4 RPN和Fast R-CNN共享特征
总结
摘要
本周阅读的论文题目是《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》(《Faster R-CNN:通过区域建议网络实现实时目标检测》),文中介绍的Faster R-CNN是在R-CNN、Fast R-CNN基础上进行改进的目标检测方法。在上一周中学习的R-CNN方法存在训练过程不连续、无法共享同一张图的CNN特征、目标检测速度慢等问题。虽然在后续改进算法Fast R-CNN中引入了RoI池化层以及多任务损失函数,只接受图像作为输入并返回检测到的对象的类Softmax概率和每类bounding-box回归偏移量,相比R-CNN大大加快了目标检测的速度,实现了近乎实时的检测速率。但是在前期进行region proposal的时间花销依旧很大,所以在本文中提出的Faster R-CNN引入了一个区域建议网络(RPN)。RPN针对region proposal的任务进行端到端的训练,还引入"anchor"框解决多尺度和尺寸的不同方案,并采用交替fine-tune让RPN与检测网络共享整个图像的卷积特征,从而使计算region proposal的时间和成本降到很小,进一步提高了目标检测的mAP以及降低了目标检测的时间,从而真正做到了绝对意义的端到端的目标检测。
Abstract
This week's paper is titled "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks", which introduces Faster R-CNN as an improved object detection method based on R-CNN and Fast R-CNN. The R-CNN method learned in the previous week has problems such as discontinuous training process, inability to share CNN features of the same graph, and slow object detection. Although the RoI pooling layer and the multi-task loss function are introduced into the subsequent improved algorithm Fast R-CNN, only the image is accepted as input and the Softmax-like probability of the detected object and the bounding-box regression offset of each class are returned, which greatly accelerates the speed of object detection compared with R-CNN and achieves a near-real-time detection rate. However, the time cost of region proposal in the early stage is still very large, so the Faster R-CNN proposed in this paper introduces a region proposal network (RPN). The RPN is trained end-to-end for the task of region proposal, and the "anchor" box is introduced to solve different schemes of multiple scales and sizes, and the convolution features of the entire image are shared between the RPN and the detection network by alternate fine-tune, so that the time and cost of computing the region proposal are minimized, and the mAP of object detection is further improved and the time of object detection is reduced. As a result, end-to-end object detection is truly achieved in the absolute sense.
1 引言
目标检测的最新进展是由region proposal方法和R-CNN的成功驱动的。忽略花费在region proposals上的时间,改进的Fast R-CNN已经能够实现近乎实时的检测速率。所以目前的主要瓶颈是region proposal方法的时间花销。
Region proposal方法通常依赖廉价的特征和简练的推断方案。Selective Search是当时最流行的方法之一,它贪婪地合并基于设计的低级特征的超级像素,但是它的消耗时间太长了。尽管EdgeBoxes提出了在proposal质量和速度之间的最佳权衡,但是region proposal步骤仍然像检测网络那样消耗同样多的运行时间。
所以在本文中,引入了新的region proposal网络(RPN),通过使用深度卷积神经网络计算region proposal,它们共享目标检测网络的卷积层,使得在给定检测网络计算的情况下region proposal计算接近零成本。
RPN旨在有效预测具有广泛尺度和长宽比的region proposal,由此引入新的“anchor”框作为多种尺度和长宽比的参考,避免了遍历多种比例或长宽比的图像或滤波器。这个模型在使用单尺度图像进行训练和测试时运行良好,从而有利于提升运行速度。
为了将RPN与Fast R-CNN目标检测网络相结合,本文还提出了一种训练方案,在fine-tune region proposal任务和fine-tune 目标检测之间进行交替,同时保持region proposal的固定。该方案快速收敛,并产生两个任务之间共享的具有卷积特征的统一网络。
Faster R-CNN,由两个模块组成。第一个模块是产生候选区域的深度全卷积网络RPN,第二个模块是使用候选区域的Fast R-CNN检测器。整个系统是一个单个的、统一的目标检测网络。Faster R-CNN的流程如下:
- 输入一张图片,通过深度卷积神经网络生成卷积特征图;
- 将卷积特征图传给RPN模块生成候选区域位置,RoI投影到原始特征图生成RoI区域的特征矩阵;
- 将每个ROI区域的特征矩阵通过RoI池化层缩放到7×7大小的特征图,接着将特征图展平为向量,之后通过一系列全连接层得到预测结果,进行分类或回归。
2 Fast R-CNN
对于检测网络,Faster R-CNN采用Fast R-CNN的网络结构,对每个候选框,RoI池化层从特征图中提取固定长度的特征向量。每个特征向量被送入一系列全连接层中,其最终分支成两个同级输出层 :一个输出 个类别加上1个包含所有背景类别的Softmax概率估计,另一个层输出 个类别的每一个类别输出四个实数值。每组4个值表示 个类别中一个类别的修正后检测框位置:
2.1 RoI池化层
RoI池化层使用最大池化将任何有效的RoI内的特征转换成具有 (例如,7×7)的固定空间范围的小特征图,其中 和 是层的超参数,独立于任何特定的RoI。RoI是卷积特征图中的一个矩形窗口。每个RoI由指定其左上角()及其高度和宽度()的四元组()定义。
RoI最大池化通过将大小为 的RoI窗口分割成 个网格,子窗口大小约为 ,然后对每个子窗口执行最大池化,并将输出合并到相应的输出网格单元中。同标准的最大池化一样,池化操作独立应用于每个特征图通道。
2.2 多任务损失
Fast R-CNN网络具有两个同级输出层:
- 第一个输出在 个类别上的离散概率分布(每个RoI), 。通常,基于全连接层的 个输出通过Softmax来计算 。
- 第二个输出bounding-box回归偏移,即 , 表示 个类别的索引。在本文中使用R-CNN中给出方法对 进行参数化,其中 指定相对于候选框的尺度不变转换和对数空间高度/宽度移位。
每个训练的RoI用类真值 和bounding-box回归目标真值 打上标签。我们对每个标记的RoI使用多任务损失 以联合训练分类和bounding-box回归:
其中:
- ,是类真值 的log损失。
- 第二个损失 是定义在类真值 的bounding-box回归目标真值元组 和预测元组 上的损失。Iverson括号指示函数[u≥1],当u≥1的时候值为1,否则为0。按照惯例,任何背景类标记为u=0。对于背景RoI,没有检测框真值的概念,因此 被忽略。对于检测框回归,使用损失:
其中, 是鲁棒的 损失函数。
- 超参数 控制两个任务损失之间的平衡,将回归目标真值 归一化为具有零均值和方差为1的分布。
3 RPN
RPN以任意大小的图像作为输入,输出一组矩形的目标proposals,每个proposals都有一个目标得分。通过使用全卷积网络来构建这个过程,并且为了与Fast R-CNN目标检测网络共享计算,让这两个网络共享一组共同的卷积层。
为了生成region proposal,在最后的共享卷积层输出的卷积特征图上滑动一个小网络。这个小网络将输入卷积特征图的 空间窗口作为输入。每个滑动窗口映射到一个低维特征,这个特征被输入到两个并行的子全连接层:一个边界框回归层(reg)和一个边界框分类层(cls):
有:
- 中间层: 卷积层
- reg层: 卷积层或全连接层
- cls层: 卷积层或全连接层加一个softmax函数
3.1 Anchors
在每个滑动窗口位置,同时预测多个region proposal,其中每个位置可能候选的最大数目表示为 。因此,reg层由于中心点坐标、宽、高唯一确定一个矩形框分别编码 个边界框的坐标,所以为 个输出;cls层由于每个候选框会是目标和不是目标两种概率,所以为 个得分值。anchor位于所讨论的滑动窗口的中心,并且具有一定的尺度和长宽比。默认情况下,使用3个尺度(边界框面积分别为 个像素)和3个长宽比(),在每个滑动位置产生 个anchor。对于大小为 (通常约为2400)的卷积特征图,总共有 个anchor。在特殊情况下,可以增加一个 个像素的尺度来额外处理小目标。
使用anchor的一个重要特性是它是平移不变的,无论是在anchor还是计算相对于anchor的region proposal的函数。如果在图像中平移目标,proposal应该平移,并且同样的函数应该能够在任一位置预测proposal。平移不变特性也减小了模型的大小,减少过拟合的风险。
anchor通过参照多尺度和长宽比的anchor框来分类和回归边界框。它只依赖单一尺度的图像和特征映射,并使用单一尺寸的特征映射上的滑动窗口,使得共享特征更加高效,不需要额外的成本来处理尺度。
3.2 损失函数
为了训练RPN,为每个anchor分配一个二值类别标签(是目标或不是目标)。给这两种anchor分配一个正样本标签:
- 具有与真实边界框的重叠最高IoU的anchor
- 或者具有与真实边界框的重叠超过0.7IoU的anchor
其中,单个真实边界框可以为多个anchor分配正标签。
由于在一些极少数情况下,第二个条件可能找不到正样本,所以采用第一个条件。对于所有的真实边界框,如果一个anchor的IoU比率低于0.3,给非正样本的anchor分配一个负标签。既不是正样本标签也不是负样本标签的anchor对训练目标函数没有作用。
根据这些定义,根据Fast R-CNN中的多任务损失对目标函数进行最小化,对某一个图像的损失函数定义为:
其中:
- 是小批量数据中anchor的索引
- 表示anchor 是目标的预测概率,如果anchor为正样本标签,则真实标签 为1,如果anchor为负样本标签,则为0
- 是表示预测边界框的4个参数化坐标组成的向量,而 是与正标签anchor相关联的真实边界框坐标组成的向量
- 分类损失 是两个类别上(是目标或不是目标)的对数损失
- 对于回归损失,使用 ,其中 是在Fast R-CNN中的鲁棒损失函数()
- 项表示回归损失仅对于正样本anchor()有效,否则无效()。 和 层的输出分别由 和 组成
对于边界框回归,采用R-CNN中的4个坐标参数化:
,,
,,
,,
,.
其中 表示边界框的中心坐标及其宽和高。变量 分别表示预测边界框、anchor框和边界框真值,类似于 。由此,可以被认为是从anchor框到相近实际边界框的回归。
3.3 训练RPN
RPN可以通过反向传播和随机梯度下降进行端对端训练。遵循Fast R-CNN中的“图像中心”采样策略来训练这个网络。在图像中随机采样256个anchor,计算一个小批量数据的损失函数,其中采样的正anchor和负anchor的比率可达1:1。如果图像中的正样本少于128个,使用负样本填充小批量数据。
本文中通过从标准方差为0.01的零均值高斯分布中获得权重来随机初始化所有新层。所有其他层(即共享卷积层)通过预训练的ImageNet分类模型来初始化,根据不同批量数据使用不同大小的学习率。
4 RPN和Fast R-CNN共享特征
在本文中采用四步交替训练算法,通过交替优化使RPN和Fast R-CNN学习共享特征:
- RPN使用ImageNet的预训练模型进行初始化,并针对region proposal任务进行了端到端的fine-tune。
- 使用由第一步RPN生成的proposal,由Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet的预训练模型进行初始化。此时两个网络不共享卷积层。
- 使用检测器网络来初始化RPN训练,但是修正共享的卷积层,并且只对RPN特有的层进行fine-tune。现在这两个网络共享卷积层。
- 保持共享卷积层的固定,对Fast R-CNN的独有层进行fine-tune。
由此,两个网络共享相同的卷积层并形成统一的网络。
除此之外,本文中还提出了近似联合训练,将RPN和Fast R-CNN网络在训练期间合并成一个网络,能够减少训练的时间,但是会忽略梯度变化,和非近似的联合训练,由RPN预测的边界框也是输入的函数。
总结
Faster R-CNN用RPN代替传统的感兴趣区域预测方法,通过与下游检测网络共享卷积特征,实现了近乎零代价的region proposal。由于RPN是基于深度学习的方法,因此可以借助GPU加速,提升Faster R-CNN算法训练和运行的速度,达到了近乎实时帧率运行的目标检测系统。Faster R-CNN在多个数据集上表现优秀,且容易进行迁移,对数据集中的目标类进行更改就可以很好的改变测试模型。
但由于Faster R-CNN在进行分类和回归时使用全连接层消除所抽取到特征的平移不变性,会引起:
- 无法实现对多个感兴趣区域进行计算时的参数共享,产生额外的计算开销,影响算法速度
- 造成了信息的丢失,影响算法的精度
并且R-CNN、Fast R-CNN、Faster R-CNN都是将目标检测分为两个阶段:生成region proposal和针对感兴趣区域中的内容进行分类和回归,从而会导致丢失局部目标在整幅图像中的空间信息。