文章目录
前言
前文目标检测-Two Stage-SPP Net中提到SPP Net的主要缺点是:
- 分开训练多个模型困难且复杂
- 尽管比RCNN快10-100倍,但仍然很慢
- SPP Net无法更新空间金字塔池化层以下的权重,根本原因是,当每个训练样本来自不同影像时,通过SPP层的反向传播效率很低
Fast RCNN针对上述缺点做了改进
提示:以下是本篇文章正文内容,下面内容可供参考
一、Fast RCNN的网络结构和流程
- 使用Selective Search提取2,000个感兴趣区(RoIs)
- 预训练CNN模型(VGG)+ 微调(fine-tuning) / 从头开始训练模型
- 使用CNN网络从整个图像中提取特征图(feature maps)
- 使用线性模型将RoI在原图的位置映射到卷积层特征图,以获取每个RoI的特征图(feature map)
- 通过ROI池化层(ROI Pooling Layer)将每个RoI的feature map转化为固定大小
ps:ROI Pooling Layer实质就是单层(7×7) SPP Layer
- 将经过ROI池化层得到的候选窗口的表示输入全连接网络
- 将全连接网络输出直接输入神经网络分类器(Linear+softmax)和神经网络回归器(Linear),得到类别和目标框
二、Fast RCNN的创新点
1.特征提取+分类+回归合一
使用softmax替代SVM分类,同时利用多任务损失函数(multi-task loss)将边框回归(Bounding Box Regression)也加入到了网络中,这样整个的训练过程除去Region Proposal提取阶段外,其余部分是端到端的,使得训练变得简便快捷
Fast R-CNN的multi-task loss为分类交叉熵损失和回归L1损失的加权和
2.更快的训练策略
在Fast RCNN网络训练中,随机梯度下降(SGD)的小批量是被分层采样的,首先采样 N N N个图像,然后从每个图像采样 R R R个 RoI。关键的是,来自同一图像的RoI在向前和向后传播中共享计算和内存。减小 N N N,就减少了小批量的计算。例如,当 N = 2 N = 2 N=2和 R = 128 R = 128 R=128时,得到的训练方案比从128幅不同的图采样一个RoI(即R-CNN和SPPnet的策略)快64倍。
ps:SPP-net是先把所有图像用SS计算的RoIs存起来,再从中每次随机选128个RoIs作为一个batch进行训练,这128个RoIs最坏的情况来自128张不同的图像,那么要对128张图像都送入网络计算其特征,同时内存要把128张图像的各层feature maps都记录下来(反向求导时要用),所以时间和空间上开销都比较大;而Fast R-CNN虽然也是SS计算RoIs,但每次只选2张图像的RoIs(一张图像上约2000个RoIs),再从中选128个作为一个batch,那么训练时只要计算和存储2张图像的Feature maps,所以时间和内存开销更小
总结
尽管相比于RCNN和SPP Net更快更简便,但Fast R-CNN仍是通过手工方法(Selective Search)寻找的候选框,非常耗时。