Fast R-CNN

paper:
Fast R-CNN -arXiv:1504 ICCV2015


Introduction

R-CNN之后,RGB大神又单枪匹马干出了Fast R-CNN。相较于前者,Fast R-CNN更加Deep Learning化了,一是只对整幅图进行一次特征提取;二是将bounding box的分类和回归联合起来,进行多任务的训练。


Implementation

1539947950822

Faster R-CNN的流程如下:

  1. 和R-CNN一样,用selective search算法在输入图片上提取约2000个候选框。
  2. 将图片输入CNN网络中,得到特征图(feature map)。
  3. 对于每个候选框,都可以在特征图上找到与其相对应的特征框,然后用ROI池化层(region of interest pooling layer)将每个特征框池化到固定的大小。
  4. 将特征框输入全连接层(FC layers)得到特征向量。
  5. 将特征向量分别通过两个不同的全连接层,其中一个输出softmax的分类得分,另一个输出bounding box的regression。
  6. 利用窗口得分分别对每一类物体进行非极大值抑制剔除重叠建议框,最终得到每个类别中回归修正后的得分最高的窗口。

1.RoI pooling layer

1
像AlexNet CNN等网络在提取特征过程中对图像的大小并无要求,只是在提取完特征进行全连接操作的时候才需要固定特征尺寸,利用这一点,Fast R-CNN可输入任意size图片,并在全连接操作前加入RoI池化层,将建议框对应特征图中的特征框池化到H×W 的size,以便满足后续操作对size的要求

RoI池化层使用max pooling 将特征框固定为HxW大小。若特征框大小为h×w,则设定每个子窗口大小为h/H×w/W,然后对每个子窗口采用max pooling下采样操作,每个子窗口只取一个最大值,则特征框最终池化为H×W的大小。

2.训练

2.1预训练

采用了AlexNet、VGG_CNN_M_1024 、VGG-16三种网络在ImageNet上进行预训练。之后,对网络进行了三处修改:

  1. 最后一层max pooling 改为 RoI pooling
  2. 最后的fully connected layer 和softmax替换为两个子网络,其一是全连接层加K+1个分类的softmax,其二是全连接层加bounding box回归器
  3. 改为双输入,即图像和其对应的region proposal

2.2 检测任务上的微调

多任务损失

Fast R-CNN有两个输出,第一个是K+1个类别的离散概率分布p=( p_{0}, …, p_{K}),第二个是bounding-box regression的offset