Fast R-CNN
时间:2015年
Intro
R-CNN的缺点
- 训练是一个多步骤的过程:fine-tune+SVM+bounding box regression
- 训练在时间和空间上消耗很大
- test-time很慢
R-CNN很慢的原因之一是卷积网络分别计算所有proposal的特征,而这些proposal大多有相交的部分,导致了计算资源的浪费
SPPnets为了解决这个问题,先计算整个图的卷积特征图,然后从这个共享的卷积特征图上提取proposal的feature vector,特征是通过最大池化特征图在proposal中的部分到一个固定尺寸的输出得到的,多个输出尺寸被池化出来然后结合成图像金字塔,SPPnet在测试时相比R-CNN快了10~100倍,训练时快了3倍。但同样的它也是一个multi-stage的模型,另一个问题是,它无法fine-tuning spatial pyramid pooling之前的网络,因此这限制了它的精度
Contribution
- 比R-CNN SPPnet更高的mAP
- 训练过程是single-stage的multi-task loss
- 训练可以更新全部网络层
- feature caching时无需disk storage
Approach
模型整体结构如图
输入图片和多个RoI输入到CNN中,每个RoI被池化到feature map中,接着通过RoI pooling得到一个固定大小的feature vector,然后通过FC层映射到两个分支上,一个是K+1(无)个类别的分类网络,另一个是这K个类别的bounding box
RoI pooling layer
RoI pooling层将RoI中的feature映射到固定大小 H × W H\times W H×W,对于一个 h × w h\times w h×w的RoI区域,RoI pooling将它分割成多个 H × W H\times W H×W的小区域然后通过最大池化来得到输出
Initializing from pre-trained networks
- 首先,将最后一个池化层用RoI池化代替,并设置 W , H W,H W,H与之后的全连接层兼容
- 第二步,将最后的全连接和softmax层换成两个分支
- 第三步,将网络输入改成图片和RoI
Fine-tuning for detection
SPP使用多个来自不同图片的RoI大大降低了计算的效率,因为RoI通常很大,有的几乎占据了整张图片。
因此使用来自相同图片的多个RoI可以高效地共享计算量,比如本文使用 N = 2 , R = 128 N=2,R=128 N=2,R=128,这比 N = 128 , R = 1 N=128,R=1 N=128,R=1快了64倍
因为RoI之间的相关性,这可能导致收敛缓慢,但实际操作中没有这个问题
Multi-task loss
Multi-task loss由分类和bounding box两部分组成
u
u
u代表类别,
u
=
0
u=0
u=0表示是背景,且
其中
相比L2 loss对outliers更不敏感,当regression的目标是无界的情况下,训练L2误差需要仔细调整学习率避免梯度爆炸
λ
\lambda
λ用来平衡两个误差
注意RCNN和SPPnet都使用stage-wise的方法来得到bounding-box(可能意思是利用了预测的label的信息),而本处是直接输出label和bounding box
Mini-batch sampling
选择
N
=
2
N=2
N=2,
R
=
128
R=128
R=128,从每张图片中sample 64个RoI,选择25%与ground truth IoU大于0.5的RoI,这些标注为前景,剩下的选择[0.1,0.5)区间中的较大的IoU的RoI,这些标注为背景,数据增强仅使用0.5概率的horizontal flip
Back-propagation through RoI pooling layers
和max pooling一样
SGD 超参数
前30k,lr=0.001,后10k,lr=0.0001,momentum=0.9,parameter decay=0.0005
Detection
对每个类使用非极大抑制,使用Truncated SVD加速全连接层的速度
Main results
- state-of-the-art mAP on VOC07,2010,2012
- 更快的训练和测试时间
笔者总结
本文提出了一个更块更简介的目标检测模型Fast R-CNN,它和R-CNN 的pipline对比如下
R-CNN:
- fine tune
- SVM training
- bounding box regression
fast R-CNN
- fine-tune
- RoI pooling
- classification and bounding box regression
fast R-CNN相比R-CNN的优点有:
- 通过全图的卷积特征图+RoI pooling提取proposal特征,共享计算量,更快
- 使用了multi-task的end-to-end模型,更加简洁
问题
计算K个bounding box是不是浪费计算量?虽然如此,但是也很好的解决了预测位置个数的bounding box的问题