Abstract
作者提出的模型叫做Fast RCNN,与RCNN相比,主要是在训练的速度和精度上做了提升。
1. Introduction
已经有结论证明,深度的卷积网络可以明显的提升图像分类和目标检测的效果。在目标检测中,主要优化以下两个问题:
- 需要处理大量的候选框
- 这些候选框仅仅提供了大致的位置,需要对每个候选框进行精确的调整。
在这篇文章中,作者把目标检测的过程流程化了,提出了一种single-stage的训练算法,这种算法把分类和锚框定位结合在一起了。
1.1 R-CNN and SPPnet
RCNN的不足:
- Training is a multi-stage pipeline:训练步骤繁琐:
- 首先要使用log loss损失函数对ConvNet网络进行fine-tuning
- 未选择softmax而是使用SVM拟合ConvNet的特征
- 拟合bounding-box的位置
- 训练时花费大量的时间和空间。 For SVM and bounding-box regressor training, features are extracted from each object proposal in each image and written to disk.
- Object detection is slow. 因为它在执行ConvNet的过程中,没有共享计算
1.2.Contributions

2.Fast R-CNN architecture and training
Fast-RCNN的结构图如下:

R-CNN的结构如下:

首先Fast R-CNN把整张图片当做一个输入,用大量的卷积层和max pooling层提取特征,然后使用Rol层提取固定长度的特征向量。每个特征向量都会放到fully connect 层中,这个fully connect 层有两个分支,一个通过softmax进行分类。一个对坐标进行回归。
2.1.The RoI pooling layer
ROI使用max pooling将features转换成固定大小的feature map,这里的是不依赖于任何一个RoI的超参数,在本文中,RoI由四个值进行描述,分别是,代表左上角的坐标,代表高和宽。
在普通的池化层中,通过设置池化窗口、填充和步幅来控制输出形状。
但是RoI(regions of interest)的工作机制则不同,它的操作为:假设RoI层的输出大小要求为,把的RoI区域划分成的网格,然后选择的窗口,对每个区域进行max pooling操作。
举个栗子:
我们的RoI区域为大小的,要求该层的输出为大小的,那么,根据的要求,将划分成4个grid:
- 第1个grid是
- 第2个grid是
- 第3个grid是
- 第4个grid是
对于每一个grid,我们都选用一个大小的池化层进行max pooling操作。
2.2.Initializing from pre-trained networks
作者使用了3个预训练模型,每一个都有5层max pooling和5到13个的卷积层,在预训练之前,还有三个transformations。具体操作如下:
- 首先用RoI pooling层取代最后一个max pooling层,在VGG16的model中,RoI pooling层的
- 将预训练网络的最后一个全连接层和softmax层替换为两个同级的层(一个用作回归一个用作分类)
- 将 a list of images and a list of RoIs 作为网络的输入。
2.3.Fine-tuning for detection
作者认为,RCNN与SPPnet 效率太低的原因是他们的训练样本来自于不同的图片,这就导致了每一个RoI都可能有很大的感知野(经常是整张图片)。
针对这个问题,作者提出了特征共享的方法。在fast-CNN中,选用SGD方法优化,首先对N个图片进行采样,每个图片有个RoIs,值得注意的是,RoIs来自于同一张图片,因此在相同的参数下,由于RoI是相互关联的,所以迭代的次数要少于R-CNN。
另外一个值得注意的点是,Fast R-CNN在训练时将fine-tuning和softmax classifier和bounding=box regression结合在一起了,而不是单独训练多个分类器和回归方法。
2.3.1 Multi-task loss.
A Fast R-CNN network 有两个loss。
- 用于类别的loss。假设有类,那么通过全连接层+softmax生成(一个背景)
- 用于回归。描述K个目标的类别,回归的计算公式地址在这里
有了分类的loss和坐标的loss,那么整个网络的loss值可以用这个公式计算:

在上式中,真实的类别可以用来表示,真是的回归目标用来表示。那么,代表:类别的loss值为生成类别概率的对数。
第二个loss值,则定义了类别的真是位置,模型的输出值为。注意,这里当是代表背景。对于背景来说,是没有bounding-box。所以,对于bounding-box的loss为:

公式3降低了异常值对于最终结果的影响。另外,在公式1中的则控制着两个任务对于总的loss值的影响程度。一开始,我们正则化regression的为均值0,方差为1。
2.3.2 Mini-batch sampling
在fine-tuning阶段,每一个SGD的mini-batch都是由2个类的images中通过均匀分布随机构造得来的。其中, mini-batches of size R = 128,sampling 64 RoIs from each image,另外,对于RoIs的选择,则需要遵循如下规则,计算锚框与真实背景的 intersection over union(IoU)比例必须大于0.5,并且其分类不能使背景。与真实类别重合的class中,如果IoU为0.1到0.5之间的话,那么,认为是背景;The lower threshold of 0.1 appears to act as a heuristic for hard example mining [8].
另外,在训练阶段,图像有0.5的可能性会被横向拉伸(horizontally flipped )
2.3.3 Back-propagation through RoI pooling layers
在反向传播算法通过RoI层的时候,我们假设每一个mini-batch中只有一张图像(这种情况可以推广到mini-batch大于1的情况,因为各个image之间是相互独立的)。
The RoI pooling layer computes , in which . is the index set of inputs in the sub-window over which the output unit max pools. A single may be assigned to several different outputs .
假设是第个进入RoI层的值(第个样本),代表第个RoI区域的第个输出(属于各个类别的概率)。我们的目标是计算。
这一段的主要目的就是说:RoI层就是为了找到第个输入对应的最有可能的RoI区域及其概率值(也就是第个RoI区域中的分类结果)
2.4 Scale invariance
我们探究了2种方法不变尺度的目标检测:
-
“brute force” learning (普通的模式匹配算法)
In the brute-force approach, each image is processed at a pre-defined pixel size during both training andtesting. -
image pyramids(影像金字塔由原始影像按一定规则生成的由细到粗不同分辨率的影像集。金字塔的底部是图像的高分辨率表示,也就是原始图像,而顶部是低分辨率的近似。最底层的分辨率最高,并且数据量最大,随着层数的增加,其分辨率逐渐降低,数据量也按比例减少。)百度百科
3.Fast R-CNN detection
3.1.Truncated SVD for faster detection
对于整张图片来说,在计算全连接层的计算时间要少于卷积层。同样的, for detection the number of RoIs to process is large and nearly half of the forward pass time is spent computing the fully connected layers.所以,作者使用了SVD方法去加速全连接层。
在这项方法中,SVD的公式为:

具体的加速方法参考这个:
- J. Xue, J. Li, and Y. Gong. Restructuring of deep neural networkacousticmodelswithsingularvaluedecomposition. In Interspeech, 2013
- E. Denton, W. Zaremba, J. Bruna, Y. LeCun, and R. Fergus. Exploitinglinearstructurewithinconvolutionalnetworksfor efficient evaluation. In NIPS, 2014
4.Main results
5. Design evaluation
5.1.Does multi-task training help?
为了证明多任务的训练是不是真的有助于提高精度,作者训练了仅仅用于分类基础网络,也就是将公式1中的设置为0.训练了一套参数。然后设置,在测试的时候不进行bounding-box的预测,对比了一下结果。
The improvement ranges from +0.8 to +1.1 mAP points, showing a consistent positive effect from multi-task learning.
![]()
5.2.Scale invariance: to brute force or finesse?
5.3.Do we need more training data?
5.4. Do SVMs outperform softmax?

5.5. Are more proposals always better?
5.6.Preliminary MSCOCO results
模型总结
- 与R-CNN相比,Fast R-CNN用来提取特征的卷积神经网络的输入是整个图像,而不是各个提议区域。而且,这个网络通常会参与训练,即更新模型参数。设输入为一张图像,将卷积神经网络的输出的形状记为 。
- 假设选择性搜索生成 个提议区域。这些形状各异的提议区域在卷积神经网络的输出上分别标出形状各异的兴趣区域。这些兴趣区域需要抽取出形状相同的特征(假设高和宽均分别指定为 和 )以便于连结后输出。
- Fast R-CNN引入兴趣区域池化(region of interest pooling,RoI池化)层,将卷积神经网络的输出和提议区域作为输入,输出连结后的各个提议区域抽取的特征,形状为 。
- 通过全连接层将输出形状变换为 ,其中超参数 取决于模型设计。
- 预测类别时,将全连接层的输出的形状再变换为 并使用softmax回归( 为类别个数)。预测边界框时,将全连接层的输出的形状变换为 。也就是说,我们为每个提议区域预测类别和边界框。
参考链接
来源:CSDN
作者:EntropyPlus
链接:https://blog.csdn.net/u012759262/article/details/103221547