[1504.08083] Fast R-CNN (arxiv.org)
Fast RCNN在实现了几个创新点后在提升训练、测试速度的同时增加了检测的准确度
检测需要准确的物体位置信息,要解决这一问题有两个挑战:其一是大量的候选区需要被处理,其二是这些候选区只包含粗略的位置信息而必须被精炼才能得到准确位置。解决这些问题通常会伴随着速度、准确度和模型复杂度三者的相互制约。
作者提出了一种单步的训练算法,能够将分类与精炼空间位置联合在一起学习。
R-CNN and SPPnet
RCNN的缺点在于:
训练是分步的(第一步训练卷积网络,第二部训练分类器,第三步训练边框回归)
训练需要大量的空间和时间
检测速度很慢
RCNN慢是由于对每个候选区都要重复进行特征提取
SPP解决了重复运算的问题,但仍然存在缺点:
训练是分布的(同RCNN)
限制了网络深度(微调时更新不到SPP层之前的卷积层参数)
Contributions
Fast RCNN的优势在于:
Fast RCNN输入端是一张图片和一组候选区。网络首先通过卷积层和池化层从输入图片中提取出特征图。然后每个候选区通过一个RoI池化层(region of interest pooling layer)得到定长的特征向量。每个特征向量被输入一系列的全连接层,最后输出为两个分支:一个是对全部K类的分类置信度评估,另一个是对各K个分类输出4个实数表征边框的位置。
The RoI pooling layer
RoI池化层使用max pooling将任意一个有效候选区(RoI)的中的特征转换为H*W的固定大小的特征图每个ROI有四个参数:(r,c,h,w),其中r和c为左上角的坐标,w和h为ROI的宽和高。
工作原理:将h×w ROI窗口划分为大约大小为h/H×w/W的子窗口的H×W网格,然后将每个子窗口进行Max-pooling输出到相应的网格单元中。与标准的最大池化一样,池化独立应用于每个特征图通道
Initializing from pre-trained networks
将预训练的网络调整为Fast RCNN要金国下述三个步骤:
Fine-tuning for detection
反向传播训练所有网络的权值是Fast R-CNN的一项重要功能。通过SPP层的反向传播是非常低效的,因为每个ROI通常跨越整个输入图像非常大的感受野。由于前向传播必须处理整个感受野,因此训练输入很大(通常是整个图像)。
在Fast-RCNN训练中,随机梯度下降(SGD)小批量被分层采样,首先采样N幅图像,然后从每幅图像中采样R/N感兴趣区。来自同一图像的感兴趣区域在正向和反向传递中共享计算和内存。将N设为较小会减少小批量计算。
Fast RCNN的简化训练过程:联合优化Softmax分类器和边框回归变量,而不是在三个单独的阶段训练Softmax分类器、支持向量机和回归变量。
Multi-task loss
Fast RCNN有两个兄弟输出层。一个输出是K+1(增加的是背景)个分类置信度,另一个输出是边框回归的参量
L1 loss相比于L2 loss的优点在于对较大的x不敏感,可以有效避免训练时梯度爆炸的问题
λ是用来平衡两个损失的参数,实验中使用λ=1
Mini-batch sampling
在微调过程中,每个随机梯度下降的小批次由两个均匀随机选择的图片组成,对每个图片采样64个候选区。其中25%的候选区为正例(与标签中的确知框IOU≥0.5,分类标签u≥1),其余的为负例(与标签中的确知框IOU∈[0.1,0.5),分类标签u=1)。与标签中的确知框IOU<0.1的候选区被认为是难例。
数据增强仅使用以概率为0.5进行水平翻转
Does multi-task training help?
多任务指标联合训练的方便之处在于可以避免分别单独训练,同时潜在的好处在于各个评估指标通过共用卷积网络的特征表现互相影响,放在一起更加合理。
Scale invariance: to brute force or finesse?
Do we need more training data?
数据越多越好
Do SVMs outperform softmax?
改用softmax对mAP的提升不大,但这证实了使用单步联合训练是足以达到训练目标的
Are more proposals always better?
过多的候选区不但没有帮助,反而会使精确度降低。