Fast R-CNN论文简单解读
引言
名称由来:Fast Region-based Convolutional Neural Network (Fast R-CNN)
秀肌肉:Fast R-CNN比R-CNN快9倍,在测试时快213倍,在PASCAL VOC 2012上实现了更高的66%的mAP,比R-CNN高4个点。与SPPnet相比,Fast R-CNN训练VGG16的速度快3倍,测试速度快10倍,并且更准确。单张图片处理仅需0.3秒(不包括生成候选框的时间)
正文
检测本质上是定位+分类。分类问题相对而言,较为简单;复杂的部分在于检测需要准确定位对象,这带来了两个主要挑战。
(1)必须处理大量候选对象位置(通常称为“proposals”)
(2)候选框仅能提供粗略的定位,必须对其进行精修以实现精确定位
这些问题的解决方案通常会影响速度、准确性或简单性。
Fast R-CNN简化了当时效果最好的基于 ConvNet 的目标检测器的训练过程,即提出了一种单阶段训练算法,该算法不仅对候选框分类,同时对候选框进行精修。
R-CNN的缺点
1、训练是多阶段的,比较繁琐。首先把ImageNet上面训练好的模型拿过来在目标检测的数据集上微调一下,其次训练SVM分类器,最后再学习边界框回归器(bounding-box regressors)
2、训练的时候占用空间多,速度慢。SVM分类器和边界框回归器需要的特征需要先存下来,一般会占用数百G的空间。提取特征使用的VGG16在VOC2007数据集上面需要2.5GPU-天
3、推理时间慢。使用VGG16,在GPU上面处理单张图片需要47秒
R-CNN慢就慢在处理候选对象的时候,一次只处理一个,没有共享计算。
SPPnet通过共享计算提高了R-CNN的处理速度
Fast R-CNN的优点
1、mAP高
2、训练是单阶段的,使用了多任务loss
3、SPPnet有部分卷积层不更新,我们可以更新网络里面的所有层
4、提取出来的特征不需要存下来
模型架构
模型输入:整个图像和一组建议对象(object proposals)
整体流程:
1、模型处理整张图片,产生一个特征图
2、把候选的对象(候选框)映射到特征图上面(RoI projection)
3、把候选框那部分对应的特征图提取出一个固定长度的特征向量,也就是一个7x7的特征图(RoI pooling layer)
4、后面接几个全连接层,同时接两个头,一个分类,一个对边界框进行回归
把VGG16调整成Fast R-CNN
先看一下VGG的结构
1、把最后一个池化层改成自适应池化层,输出特征图大小为固定的7x7大小
2、把最后一个全连接和softmax替换成两个子网络,一个分类,一个回归。分类的类别数应该是目标检测数据集的类别数加一(加背景这个类别)
3、把模型的输入改成图片+图片中的感兴趣区域(RoI)。
本人理解,RoI就是候选区域,也是候选框。不一定对,欢迎交流。
论文后面还有一些内容,下一篇文章再写。