Fast R-CNN

Fast R-CNN

论文地址

时间:2015年

Intro

R-CNN的缺点

  • 训练是一个多步骤的过程:fine-tune+SVM+bounding box regression
  • 训练在时间和空间上消耗很大
  • test-time很慢

R-CNN很慢的原因之一是卷积网络分别计算所有proposal的特征,而这些proposal大多有相交的部分,导致了计算资源的浪费

SPPnets为了解决这个问题,先计算整个图的卷积特征图,然后从这个共享的卷积特征图上提取proposal的feature vector,特征是通过最大池化特征图在proposal中的部分到一个固定尺寸的输出得到的,多个输出尺寸被池化出来然后结合成图像金字塔,SPPnet在测试时相比R-CNN快了10~100倍,训练时快了3倍。但同样的它也是一个multi-stage的模型,另一个问题是,它无法fine-tuning spatial pyramid pooling之前的网络,因此这限制了它的精度

Contribution

  • 比R-CNN SPPnet更高的mAP
  • 训练过程是single-stage的multi-task loss
  • 训练可以更新全部网络层
  • feature caching时无需disk storage

Approach

模型整体结构如图
在这里插入图片描述
输入图片和多个RoI输入到CNN中,每个RoI被池化到feature map中,接着通过RoI pooling得到一个固定大小的feature vector,然后通过FC层映射到两个分支上,一个是K+1(无)个类别的分类网络,另一个是这K个类别的bounding box

RoI pooling layer

RoI pooling层将RoI中的feature映射到固定大小 H × W H\times W H×W,对于一个 h × w h\times w h×w的RoI区域,RoI pooling将它分割成多个 H × W H\times W H×W的小区域然后通过最大池化来得到输出

Initializing from pre-trained networks

  • 首先,将最后一个池化层用RoI池化代替,并设置 W , H W,H WH与之后的全连接层兼容
  • 第二步,将最后的全连接和softmax层换成两个分支
  • 第三步,将网络输入改成图片和RoI

Fine-tuning for detection

SPP使用多个来自不同图片的RoI大大降低了计算的效率,因为RoI通常很大,有的几乎占据了整张图片。

因此使用来自相同图片的多个RoI可以高效地共享计算量,比如本文使用 N = 2 , R = 128 N=2,R=128 N=2,R=128,这比 N = 128 , R = 1 N=128,R=1 N=128,R=1快了64倍

因为RoI之间的相关性,这可能导致收敛缓慢,但实际操作中没有这个问题

Multi-task loss
Multi-task loss由分类和bounding box两部分组成
在这里插入图片描述
u u u代表类别, u = 0 u=0 u=0表示是背景,且
在这里插入图片描述
其中
在这里插入图片描述
相比L2 loss对outliers更不敏感,当regression的目标是无界的情况下,训练L2误差需要仔细调整学习率避免梯度爆炸
λ \lambda λ用来平衡两个误差
注意RCNN和SPPnet都使用stage-wise的方法来得到bounding-box(可能意思是利用了预测的label的信息),而本处是直接输出label和bounding box

Mini-batch sampling
选择 N = 2 N=2 N=2, R = 128 R=128 R=128,从每张图片中sample 64个RoI,选择25%与ground truth IoU大于0.5的RoI,这些标注为前景,剩下的选择[0.1,0.5)区间中的较大的IoU的RoI,这些标注为背景,数据增强仅使用0.5概率的horizontal flip

Back-propagation through RoI pooling layers
和max pooling一样

SGD 超参数
前30k,lr=0.001,后10k,lr=0.0001,momentum=0.9,parameter decay=0.0005

Detection

对每个类使用非极大抑制,使用Truncated SVD加速全连接层的速度

Main results

  • state-of-the-art mAP on VOC07,2010,2012
  • 更快的训练和测试时间

笔者总结

本文提出了一个更块更简介的目标检测模型Fast R-CNN,它和R-CNN 的pipline对比如下
R-CNN

  • fine tune
  • SVM training
  • bounding box regression

fast R-CNN

  • fine-tune
  • RoI pooling
  • classification and bounding box regression

fast R-CNN相比R-CNN的优点有:

  • 通过全图的卷积特征图+RoI pooling提取proposal特征,共享计算量,更快
  • 使用了multi-task的end-to-end模型,更加简洁

问题

计算K个bounding box是不是浪费计算量?虽然如此,但是也很好的解决了预测位置个数的bounding box的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值