目标检测: Fast R-CNN原理

Fast R-CNN论文地址:  https://arxiv.org/pdf/1504.08083.pdf

1 概述:

考虑到R-CNN速度很慢, 作者提出了一个改善模型:Fast R-CNN.  相比R-CNN, Fast R-CNN的优点在于加快了selective search的步骤和同时训练分类和回归过程, 从整体上加快了速度. 

Fast R-CNN对R-CNN的改进部分:

  • 将R-CNN中三个模块(CNN, SVM, Regression)整合, 极大了减少了计算量和加快了速度
  • 不对原始图像进行selective search提取, 而是先经过一次CNN, 在feature map上使用selective search截取候选区域, 进行分类回归
  • 为了兼容不同图片尺度, 作者使用了ROI Pooling 算法, 将特征图池化到固定维度的特征向量.

 

2 ROI Pooling原理

ROI Pooling论文地址: https://arxiv.org/pdf/1406.4729.pdf

ROI Pooling也叫Spatial Pyramid Pooling(空间金字塔池化). 

由于图片尺寸各不相同, 需要经过缩放拉伸到统一尺寸, 再送入CNN, 这会间接导致识别精度下降, 通过ROI Pooling可以将不同尺度的特征图输出为固定维度的特征向量, 同时也获取到了图像的特征信息, 而且速度很快. 

(https://sevenold.github.io/2019/04/object-detection-SPPNet/)

__________________________________________________________________

 

3 步骤

3.1 预训练一个分类CNN
3.2 修改CNN, 将最后一个flatten层以及后面的层删掉, 换成ROI Pooling层
3.3 将图像经过CNN, 得到特征图, 使用selectiv search选出2k个候选区域
3.4 在ROI Pooling层后跟几个FC, 最后输出2个分支:

  • 第一个分支是softmax层, 输出k+1个分类
  • 第二个分支是regression, 预测输出k个类别的box参数

 

4 损失理解

 

为什么要使用smooth L1?

因为2点: 

  • 0点可导
  • loss越来越小时, 梯度也适当减小, 有助于收敛

 

5 与R-CNN性能比较

posted @ 2019-09-01 22:17  dangxusheng  阅读(1530)  评论(0编辑  收藏  举报