Fast R-CNN

来源:互联网 发布:软件供应商排行 编辑:程序博客网 时间:2024/05/19 17:50

摘要
比较R-CNN, SPP-Net, Fast R-CNN 使用”多任务损失” + “一个训练stage”. 多任务损失简化了学习,并提升了检测率.

Fast R-CNN修复了R-CNN和SPP-Net的缺陷. 存在下面的优点:
1. 相比于R-CNN, Fast R-CNN有更高的检测率。
2. 训练是 single stage,多任务loss
3. 在训练的过程中,所有的网络层都可以被更新
4. 不需要磁盘存储(SPP-Net网络需要存储大量的数据到硬盘)

Fast R-CNN训练
考虑一个预训练网络,包含几个卷积层、max pooling层、ROI pooling层和FC层。最后连接两个姊妹层:一个softmax层,输出k+1类的概率,另外一层输出4*k位置坐标。
这里写图片描述

1. ROI pooling layer
ROI pooling layer 是spatial pyramid pooling的简化版本。ROI pooling层的输入包括N个特征图 和 R个ROI区域。
特征图的尺寸为: H*W*C
ROI表示为(n,r,c,h,w),n表示特征图的序号,r,c是左上角坐标,h,w是ROI的width,height。
对于每个ROI,ROI pooling层使用max pooling产生固定尺寸W’*H’的output bin。

2. 使用预训练网络
作者使用三个预训练网络,在5至13卷积层之间 包含5个max pooling层。预 训练网络有三个变化:
(1). 用ROI pooling层代替最后一个muax pooling
(2). 最后的全连接层被两个姊妹层替代
(3). 网络被修改成接受两个输入:N个图像和R个ROI区域。

3.Fine-tuning for detection
SPP Net检测只微调最后的3-layer softmax。因为fine-tuning步骤不能反向传播误差到SPP layer之前。这意味着只有三层被更新。因为这样的限制SPP net的训练是ROI-centric sampling,也就说输入时resized ROI区域。

如果要去除这样的限制,那么就要使误差可以通过SPP layer。BP过程需要计算ROI视野场内的全部卷积,通常视野场是这个图像。这样的计算太慢也太耗费内存。

作者提出了一个有效的image-centric sampling的方法。首先采用一组图像,然后采用这组图像中的ROI区域。来自于同一个图像的ROI区域可以共享计算(只要计算一次卷积层)

除了提出image-centric sampling的方法,本文同时优化softmax layer和bounding box regression。

(1) Mini-batch sampling
在fine-tuning的过程中,每个mini-batch包含两个图像,128个ROI区域。每个图像上面,选择64个ROI区域。其中,25%是正样本(也就是目标),75%是背景。

(2) Scale invariance 尺度不变
有两种方式实现尺度不变:
a. 暴力搜索方法
在训练和检测过程中,每个图像都在规范的尺度上处理,网络必须直接从训练数据中 学习 尺度不变的检测。
b. 图像金字塔/多尺度方法
输入图像被resize到多个scale,检测器只在最优的尺度上作检测。

评估结果
这里写图片描述

end

0 0
原创粉丝点击