cnn 句向量_深度学习目标检测Fast R-CNN论文解读

e0fed9c108bd0e51231196f5f435a4fe.png

前言

我们知道,R-CNN存在着以下几个问题:

  1. 分步骤进行,过程繁琐。Selective Search生成候选区域region proposal->fine tune预训练网络->针对每个类别都训练一个SVM分类器->用regressors对bounding-box进行回归。
  2. 时间和内存消耗比较大。在训练SVM和回归的时候需要用CNN网络训练的特征作为输入,特征保存在磁盘上再读入的时间消耗比较大。
  3. 重叠区域特征重复计算。测试时每个region proposal都要做卷积。
馨意:深度学习目标检测R-CNN论文解读​zhuanlan.zhihu.com
5814913089e0064411786c28bc7440c3.png

SPP-net算法解决了R-CNN中重复卷积的问题,但是R-CNN的其他缺点在SPP-net上依旧存在。

馨意:深度学习目标检测SPP-net论文解读​zhuanlan.zhihu.com
0fb3359e6ee6172d934bb2d8205dbc60.png

Fast R-CNN是R-CNN作者对RCNN的改进版。Fast R-CNN只进行一次特征提取,并将RCNN的SVMs使用softmax所替代,并将分类目标函数和框预测目标函数合并为多任务目标函数,速度和精度都大大提高。

论文名称:

Fast R-CNN

论文下载:

https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf​www.cv-foundation.org

论文解读:

82eefe0e724e1e6f98724016b67b76be.png
Fast R-CNN架构,该架构属于端到端的多任务训练。

上图即为Fast R-CNN架构,具体流程为:

  1. Fast R-CNN网络将整个图像和所有RoI(也就是R-CNN中所说的proposal)作为输入
  2. 网络首先使用几个卷积层和最大池化层处理整个图像,以生成特征图feature map。
  3. 然后在最后一个卷积层上对每个ROI求取映射关系,并用一个RoI pooling layer(也就是一个单层的SPP layer)来统一到相同的大小
  4. 之后经过两个全连接层FCs生成一个固定尺寸的特征向量RoI feature vector
  5. 特征向量RoI feature vector连接两个新的全连接层FC,得到两个输出向量:第一个是分类,使用softmax,第二个是每一类的bounding box回归

RoI pooling layer

RoI pooling layer是在SPP-net中使用的空间金字塔池化层SPP的特例,SPP有三层,而在RoI pooling layer中金字塔层只有一个。

Pre-trained networks

用了3个预训练的ImageNet网络(CaffeNet/VGG_CNN_M_1024/VGG16)。

预训练的网络初始化Fast R-CNN要经过三次变形:

  1. 最后一个max pooling层替换为RoI pooling层。
  2. 最后一个全连接层和softmax(原本是1000个类)替换为softmax的对K+1个类别的分类层,和bounding box 回归层。
  3. 输入修改为两种数据: 图像列表和这些图像中的RoI列表。

Fine-tuning

我们知道,SPPnet只能微调SPP层后面的全连接层,所以SPPnet就可以采用随机梯度下降(SGD)来训练。

SPPnet采用的RoI-centric sampling:从所有图片的所有RoI中均匀取样,这样每个SGD的mini-batch中包含了不同图像中的样本。

反向传播需要计算每一个RoI感受野的卷积层,通常会覆盖整个图像,如果一个一个用RoI-centric sampling的话就又慢又耗内存。

Fast R-CNN采用的image-centric sampling:mini-batch采用层次取样,先对图像取样,再对RoI取样,同一图像的RoI共享计算和内存。 另外,Fast R-CNN在一次微调中联合优化softmax分类器和bbox回归。

看似一步,实际包含了:多任务损失(multi-task loss)、小批量取样(mini-batch sampling)、RoI pooling层的反向传播(backpropagation through RoI pooling layers)、SGD超参数(SGD hyperparameters)。

Multi-task loss

两个输出层,一个对每个RoI输出离散概率分布:

一个输出bounding box回归的位移:

k表示类别的索引,前两个参数是指相对于object proposal尺度不变的平移,后两个参数是指对数空间中相对于object proposal的高与宽。把这两个输出的损失写到一起:

k*是真实类别,式中第一项是分类损失,第二项是定位损失,L由R个输出取均值而来。

Mini-batch sampling

在微调时,每个SGD的mini-batch是随机找两个图片,R为128,因此每个图上取样64个RoI。从object proposal中选25%的RoI,就是和ground-truth交叠至少为0.5的。剩下的作为背景。

在调优训练时,每一个mini-batch中首先加入N张完整图片,而后加入从N张图片中选取的R个候选框。这R个候选框可以复用N张图片前5个阶段的网络特征。

实际选择N=2, R=128-> 每一个mini-batch中首先加入2张完整图片,而后加入从2张图片中选取的128个候选框。这128个候选框可以复用2张图片前5个阶段的网络特征。

总结

  • 最后一层的softmax换成两个:一个是对区域的分类,另一个是对Bounding box的微调。
  • 训练时所有特征不在存到硬盘中,提升了速度。
  • 添加ROI pooling层,实现了不同大小区域特征图的pooling。

参考

https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf​www.cv-foundation.org 人工智能_目标检测_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
1f576992291710779b682f07b1f4a7a5.png
Fast RCNN算法详解_网络_AI之路-CSDN博客​blog.csdn.net
afcada83097cd0e20a6776dd6802a852.png
RCNN学习笔记(4):fast rcnn​blog.csdn.net
afcada83097cd0e20a6776dd6802a852.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值