目标检测模型二:Fast-R-CNN,ROI池化

1. Fast R-CNN

R-CNN需要很多候选区域以提高准确度,但是很多候选区域其实是彼此重叠的,如果我们有2000个候选区域,每一个候选区域都需要独立的送到CNN中,对于不同的ROI,我们需要提取2000次特征,效率很低。CNN的特征图是以一种密集的方式表征空间特征,我们可以直接使用特征图来代替原图来检测目标。
目标检测模型二:Fast-R-CNN,ROI池化
目标检测模型二:Fast-R-CNN,ROI池化
不同于R-CNN多次对每个图像提取特征,Fast R-CNN使用特征提取器(CNN)先提取整个图像的特征,然后将创建候选区域的方法直接应用到特征图中。

例如,Fast R-CNN 选择了 VGG16 中的卷积层 conv5 来生成 ROI,这些关注区域随后会结合对应的特征图以裁剪为特征图块,并用于目标检测任务中。我们使用 ROI 池化将特征图块转换为固定的大小,并馈送到全连接层进行分类和定位。因为 Fast-RCNN 不会重复提取特征,因此它能显著地减少处理时间。
以下是Fast R-CNN的流程图:
目标检测模型二:Fast-R-CNN,ROI池化
目标检测模型二:Fast-R-CNN,ROI池化
Fast R-CNN包含了特征提取器、分类器和边框回归器在内的整个网络能通过多任务损失函数进行端到端的训练,这种分类包含了分类损失方法和定位损失方法,大大提升了模型准确度。

ROI池化

Fast R-CNN使用全连接层,我们需要使用池化层将不同大小的ROI转换为固定大小的ROI。
假如我们有如下特征图,我们想要转换成预定义的2*2大小的ROI:
目标检测模型二:Fast-R-CNN,ROI池化
首先将ROI与特征图重叠:
目标检测模型二:Fast-R-CNN,ROI池化
然后将ROI拆分成目标维度的ROI,因为我们要求生成2*2的ROI,所以我们考虑将上图拆分为4个大小相等或近似的部分。
目标检测模型二:Fast-R-CNN,ROI池化
然后使用max-pooling的方式找到每个区域的最大值,生成2*2的特征模块,分布馈送到分类器和边框回归器中。
目标检测模型二:Fast-R-CNN,ROI池化