1. Background
在fast R-CNN之前,R-CNN模型暴露出两个问题:
(1)R-CNN必须要求输入的图片尺寸固定
(2)R-CNN对每一个候选区域均进行卷积操作,时间花费大。
由此,提出SPPnet的改进模型。
2. SPP-net Architecture
输入:任意尺寸大小的图片和一组候选区域(RoIs)
a. 输入通过CNN网络得到feature maps(大小不定)
b. 将RoIs映射到feature map的相应位置
c. 每个候选区域的feature map都输入到spatial pyramid pooling layer(金字塔池化层)
d. 连接fc layer后用SVM做分类
e. conv5的特征提取之后用作Bounding Box作位置回归
Spatial pyramid pooling layer(空间金字塔池化)
在卷积层之后,将pool5替换为spatial pyramid pooling layer
输出k×M维向量(k为最后一层卷积层过滤器的数量=256,M为块的数量=16+4+1)
对feature map分别作4×4, 2×2, 1×1块大小的max pooling
空间金字塔池化允许输入图像为任意尺寸,允许任意比例关系和任意缩放尺度
多尺寸训练
对于不同大小的训练网络(例如224×224和180×180),在每个网络上训练一个完整的epoch,然后在下一个完成的epoch再切换到另一个网络(权重保留),依此往复。
3 Training(单一尺寸训练)
(1)使用Selective Search对每张图片产生2000个候选窗口,从整张图像中抽取特征图,通过映射,选取候选区域的特征图通过空间金字塔池化层输出固定长度的特征向量,并传递给全连接层。
(2)针对每个分类训练一个二分线性SVM。ground-truth为正例,与整理窗口IoU不超过30%的窗口为负例。如果一个负例与另一个负例重叠超过70%就被移除,使用standard hard negative mining训练SVM。
(3)fine-tuning: 仅对全连接层进行调优
(4)训练Bounding Box位置回归
多尺度特征提取(训练方法改进):
对于每个候选窗口,选择一个单一尺度,令缩放后的候选窗口尺寸接近224×224,然后从这个尺度抽取的特征图计算候选窗口的特征。每个尺度只计算一次特征图。
4 Testing
与R-CNN类似
- 用于检测的多模型结合:
首先在ImageNet上预训练另一个网络,结构相同,随机初始化不同。
给定两个模型,首先使用每个模型对测试图像的候选框进行打分,然后对并联的两个候选框集合上应用最大化抑制,一个方法比较置信的窗口就会压制另一个方法不太置信的窗口。
总结
SPPnet的优点:
(1)输入图像尺寸不需要固定,且允许任意比例关系
(2)只需要对整张图像进行一次卷积,加快训练速度
SPPnet的缺点:
(1)空间金字塔池化层之前的卷积层无法调优,只能使用预训练模型
(2)多阶段训练,耗时