您的位置:首页 > 其它

基于深度学习的目标检测方法:fast R-CNN

2017-05-19 10:55 411 查看
fast R-CNN

       论文:fast R-CNN

       R-CNN存在的缺点:

       1、R-CNN是multi-stage pipeline。首先利用CNN提取特征,然后利用SVM进行分类,最后利用bounding-box regressors 修正目标框。

       2、训练的时间开销、空间开销比较大。用于SVM、bounding-box regressors的特征需要存储到磁盘中,这将需要占用大量的磁盘空间,而且提取这些特征也会耗费好多时间。

       3、测试的时间开销比较大。提取每张图像的每个region proposal的特征,这将浪费很多时间。关于这个问题,SPP-net提出了解决方法,也就是先提取整张图像的特征图,然后从该特征图中提取各个region
proposal的特征。
       

       SPP-net存在的缺点:

       1、SPP-net也是multi-stage pipeline

       2、SPP-net也需要将特征写入到磁盘中

       3、SPP-net不能微调spatial pyramid pooling layer之前的convolutional layers,这将影响深层网络模型的准确度。

       针对R-CNN、SPP-net存在的缺点,该论文提出了 fast R-CNN,其结构如下图所示。在 fast R-CNN中,1、将最后一个池化层替换为RoI
pooling layer; 2、最后一个全连接层与softmax替换为两个兄弟层,一个是全连接层+softmax,另一个是全连接层+bbox regressor;3、模型的输入为一系列图像以及这些图像的RoIs 。



------------------------------------------------------------------------------------------------------------------------------------------------------  

RoI pooling layer

       该层有两个作用:1、将图像的RoI定位到feature map中对应位置,采用SPP-net中的定位方法; 2、对该RoI对应的特征进行max pooling, 也就是把每个候选区域均匀分成M×N块,对每块进行max
pooling,将特征图上大小不一的候选区域转变为大小统一的数据,再传入到全连接层,这个过程本质上是单层的SPP layer,如下图:



       该层的反向传播过程:

       首先考虑普通max pooling层。设xi为输入层的节点,yj为输出层的节点,则有: 

∂L∂xi={0∂L∂yjδ(i,j)=falseδ(i,j)=true

       其中判决函数δ(i,j)表示i节点是否被j节点选为最大值输出。不被选中有两种可能:xi不在yj范围内,或者xi不是最大值。

       然而,对于roi max pooling,一个输入节点可能和多个输出节点相连。设xi为输入层的节点,yrj为第r个候选区域的第j个输出节点。 


 

∂L∂xi=Σr,jδ(i,r,j)∂L∂yrj

        其中,判决函数δ(i,r,j)表示i节点是否被候选区域r的第j个节点选为最大值输出;代价关于xi的梯度等于所有相关的后一层的梯度之和。

------------------------------------------------------------------------------------------------------------------------------------------------------  

multi-task loss

       Each training RoI is labeled
with a ground-truth class u and
a ground-truth bounding-box regression target v.  
       对于分类loss, softmax层输出K+1维的数组,表示属于K类和背景的概率。分类loss由真实类别u所对应的概率决定,也就是:Lcls=−logpu

       对于回归loss,bbox regressors层输出K个regression offsets(tx,
ty, tw, th) ,
也就是为每一个类别都会训练一个单独的regressor。回归loss也是

由真实类别u所对应的预测参数(tx, ty, tw, th)决定的,这里采用的是smooth
L1误差,即:

 


 


       总的loss计算如下,如果分类为背景,不需要计算回归loss。



------------------------------------------------------------------------------------------------------------------------------------------------------
 

分层数据

     

在调优训练时,每一个mini-batch中,首先加入N张完整图片,然后加入从这N张图片中选取的R个候选框,也就是从每张图片中选取R/N个候选框。 

实际选择N=2, R=128

------------------------------------------------------------------------------------------------------------------------------------------------------  

全连接层加速

      全连接层的计算比较耗时,全连接层参数为W,尺寸为u×v,计算复杂度为u
* v,  该论文中提出了利用Truncated SVD来加速计算,即:

W=UΣVT≈U(:,1:t)⋅Σ(1:t,1:t)⋅V(:,1:t)T

      原来的前向传播分解成两步,计算复杂度变为u×t+v×t: 

y=Wx=U⋅(Σ⋅VT)⋅x=U⋅z
      在实现时,相当于把一个全连接层拆分成两个,中间以一个低维数据相连。 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐