1 fast R-CNN简介
fast R-CNN,是由rgb提出的一种网络结构,用于目标检测和语义分割。
在RCNN中,每个proposal都要通过CNN提取一次特征,导致速度特别慢。fast R-CNN在R-CNN的基础上做了改进,使得检测的速度更快,效果更好。
2 检测流程
下图是fast R-CNN的结构图(图来自原论文):
2.1 提取特征图和候选区域
提取特征图:
输入:图像(image)
输出:特征图(feature maps),这里不止一张feature map
方法:通过CNN
例如:image通过VGG16得到conv5_3的特征图,有512张。
提取候选区域:
输入:图像(image)
输出:候选区域(region proposals),或者叫ROI region
方法:selective search
具体流程图如下所示:
2.2 每个候选区域通过ROI pooling得到feature
输入:proposal以及上一步提取到的特征图
输出:固定长度的featrure
方法:ROI pooling
具体流程图如下:
如上图所示,对于每一个proposal,映射到feature maps的相应位置,然后对这个位置作ROI pooling,得到固定大小的feature maps(论文中通过ROI pooling之后得到的每张feature map大小为7x7),再通过全连接层得到固定大小的feature。
这里补充一下ROI pooling:
- 因为选取的region proposal不是对应在整个特征图上的,可能只是映射到某个区域,这个区域就称为感兴趣区域ROI(region of interest),ROI pooling就是对这个区域进行池化,假设ROI区域大小是5x7,经过pooling后要变为2x2,可以看到不能整除,那么就需要取整,所以整个过程如下图所示:
图片来源(https://zhuanlan.zhihu.com/p/65423423)
2.3 分类与回归
输入:上一步得到的feature
输出:每个类别的概率(得分),以及bbox的位置(偏移量)
方法:softmax,regressor
具体流程图如下所示:
整个网络的流程图如下所示:
3 总结
fast R-CNN与R-CNN的比较:
1.fast R-CNN只提取“一次”特征,速度更快
Image 通过CNN得到feature maps,再让每一个proposal对应feature maps中的位置去进行ROI pooling,从而得到feature;而在R-CNN中,是让每个proposal都要通过CNN提取特征。
2.fast R-CNN丢弃SVM,直接利用提取的特征进行分类和回归
fast R-CNN提取proposal的方法是selective search,该方法速度较慢,之后的faster R-CNN针对此处做了改进。
结束。
ps:本文纯属个人理解,有问题的地方还请各位看官一起讨论。
最后附上论文地址:https://arxiv.org/pdf/1504.08083.pdf