Fast R-CNN网络结构详解

SPPNet 对R-CNN做出了改进,但是仍然存在网络之间不统一训练的问题。因此,Fast R-CNN就是解决这样的问题。
上两篇博文有详细解析R-CNN和SPPNet:R-CNN详解SPPNet详解

Fast R-CNN改进之处

●增加了一个RoI pooling,然后整合整个模型,把CNN、SPP变换层、分类器、bbox回归几个模块一起训练。具体过程图:
在这里插入图片描述
●步骤:
1、首先将整个图片输入到一个基础卷积网络,得到整张图的feature map
2、将region proposal(RoI)映射到feature map中
3、RoI pooling layer提取一个固定长度的特征向量,每个特征会输入到一系列全连接层,得到一个RoI特征向量(此步骤是对每一个候选区域都会进行同样的操作
其中一个是传统softmax层进行分类,输出类别有K个类别加上**”背景”类。**
另一个是bounding box regressor。

RoI pooling

RoI pooling 类似于SPP层,但是它只有一个尺度,目的就是为了减少计算时间和得出固定长度的向量。下面来看RoI pooling 和SPP的结构图对比:
在这里插入图片描述
RoI的尺度可以是4x4,2x2,3x3等等,它是可以动态调整的。不像SPP是固定的4x4,2x2,1x1。
那么为什么RoI是单尺度的呢?
这里涉及到了单尺度和多尺度的优缺点,存在一个准确度与时间的取舍问题。
单尺度:直接将image定为某种scale,直接输入网络来训练即可。
多尺度:要生成一个金字塔,然后对于object,在金字塔上找到一个大小比较接近227x227的投影版本。

后者比前者更加准确些,没有突更多,但是第一种时间要省很多,所以实际采用的是第一个策略,因此Fast R-CNN要比SPPNet快很多也是因为这里的原因。

多任务损失

Fast R-CNN完整结构图:
在这里插入图片描述
对比前面的SPPNet和R-CNN,还有一个不一样的是SVM分类器被替换成了softmax。这也是后面整个网络可以一起训练的 原因,R-CNN中CNN与SVM的训练在时间上有先后之分,而且两者的训练都是独立的。
这里有两个Loss:
分类loss:一个N+1路的softmax输出,其中的N是类别个数,1是背景,使用交叉熵损失
回归loss:一个4xN路输出的regressor,也就是说对于每个类别都会训练一个单独的regressor的意思,使用平均绝对误差(MAE)损失即L1损失

Fast R-CNN总结

优点:减少了训练时间,并且使整个网络可以统一的训练
缺点:候选区域仍是由Selective Search提取,操作十分耗时

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值