一、背景

2014年的RCNN, SPP-Net,Ross Girshick在基础上于15年推出Fast RCNN,大幅提升了目标检测的速度,同样使用最大规模的网络,Fast RCNN和RCNN相比,训练时间从84小时减少为9.5小时,测试时间从47秒减少为0.32秒。在PASCAL VOC 2007上的准确率相差无几,约在66%-67%之间。

二、网络结构

以下是RCNN 与 Fast-RCNN 比较

目标检测(三)Fast R-CNN
目标检测(三)Fast R-CNN

整体预测流程:

1、输入整张图像;

2、通过深度网络中的卷积层(VGG、Alexnet、Resnet等中的卷积层)对图像进行特征提取,得到图片的特征图;

3、利用选择性搜索算法得到图像的感兴趣区域(通常取2000个);

4、对得到的感兴趣区域进行ROI pooling(感兴趣区域池化):即通过坐标投影的方法,在特征图上得到输入图像中的感兴趣区域对应的特征区域,并对该区域进行最大值池化,这样就得到了感兴趣区域的特征,并且统一了特征大小
对ROI pooling层的输出(及感兴趣区域对应的特征图最大值池化后的特征)作为每个感兴趣区域的特征向量;

5、将感兴趣区域的特征向量与全连接层相连,并定义了多任务损失函数,分别与softmax分类器和boxbounding回归器相连,分别得到当前感兴趣区域的类别及坐标包围框;

6、对所有得到的包围框进行非极大值抑制(NMS),得到最终的检测结果。

三、特性

ROI池化

借鉴与SPP-Net,ROI池化相当于简化版,去掉了金字塔结构,如图:

考虑一个88大小的feature map,一个ROI,以及输出大小为22.
输入的固定大小的feature map

目标检测(三)Fast R-CNN

region proposal 投影之后位置(左上角,右下角坐标):(0,3),(7,8)

目标检测(三)Fast R-CNN

将其划分为(22)个sections(因为输出大小为22)

目标检测(三)Fast R-CNN

对每个section做max pooling,最后得到

目标检测(三)Fast R-CNN

多损失函数融合

多损失融合(分类损失和回归损失融合),分类采用log loss(即对真实分类的概率取负log,分类输出K+1维),回归的loss和R-CNN基本一样。

总的损失函数如下:

目标检测(三)Fast R-CNN

分类损失函数如下:

目标检测(三)Fast R-CNN

回归损失函数如下:

目标检测(三)Fast R-CNN

其中有:

目标检测(三)Fast R-CNN

利用SVD 改进全连接层(分类是softmax,回归是smoothL1)

由于卷积层计算针对的是一整张图片,而全连接层需要对每一个region proposal都作用一次,所以全连接层的计算占网络计算的将近一半(如下图)。作者采用SVD来简化全连接层计算。

目标检测(三)Fast R-CNN

相关文章: