文章目录
写在前面
Fast R-CNN是R-CNN作者对R-CNN的改进,结合了SPP-Net中提出的spatial pyramid pooling结构。
本文重点
- 提出了ROI(region of interest)(可理解为“特征图上的框”) Pooling层,实质上是单层SPPNet。
- 可以同时进行物体分类和边框回归。
注:针对R-CNN进行的改进 - 全连接层使用SVD奇异值分解,大大减少计算量。
模型设计
- 模型整体设计如下图所示。
步骤一:图片特征提取
- 普通卷积层+池化层搭配进行整张图片特征提取生成feature map
步骤二:生成region proposal
- 使用selective search算法每张图片生成R/N个region proposal
注:在mini-batch中选择N张图片,共生成R个region proposal,平均每张图片生成R/N个region proposal - region proprosal映射到feature map上
selective search生成的region proprosal是针对原图的,所以要将原图位置映射到feature map的位置。
步骤三:region proposal转成固定尺寸(ROI Pooling)【本文创新点】✔️
回顾R-CNN,每一个region proposal都送入CNN进行特征提取,并用SVM分类,计算量可以说是非常庞大
- ROI pooling layer帮助feature map上每一个ROI projection转成固定尺寸以送入FCs。
该思路来自于SPP-Net的空间金字塔池化结构。
根据我们需要的固定尺寸,对region proposal进行对应的最大池化。
具体细节请参考 https://blog.csdn.net/AUTO1993/article/details/78514071
步骤四:全连接层奇异值分解【本文创新点】✔️
- ROI Pooling layer的后两层全连接层进行奇异值分解
全连接层实际上就是一种矩阵乘法计算,使用奇异值分解后可以有效减小计算量
步骤五:生成ROI feature vector
- 每一个ROI projection都转成固定尺寸以后,经FCs得到ROI feature vector。
注:ROI feature vector是平铺的一维向量
步骤六:物体识别和位置回归
- 将ROI feature vector同时送入物体识别和位置回归网络。
- 同时计算softmax和SVM损失值【本文创新点】✔️
之前的R-CNN和SPP-Net反向传播都不是十分高效,原因在于它们完成每一个子任务都是分阶段的,那么训练时也是分阶段的,相比全局统一训练自然是低效的。
因此作者定义了一个新的损失函数,可以同时计算softmax loss和SVM loss。
模型训练tips
- 对于越深的网络模型,从较后层开始fine-tuning
讨论
- 模型关于CNN结构已经精简了很多,感觉还能进一步改进的地方就是selective search方法还有就是softmax和SVM分类这一块。selective search算是比较传统的方法,如果跟CNN更好地结合在一起应该能提高精度?所以如果能把selective search这一步跟最后物体识别和位置回归的loss一起训练是否能提高训练速度?
参考文献
https://blog.csdn.net/shenxiaolu1984/article/details/51036677
https://blog.csdn.net/u011501388/article/details/81031780
ROI pooling层的解析 https://blog.csdn.net/lanran2/article/details/60143861
https://blog.csdn.net/AUTO1993/article/details/78514071