R-CNN(两阶段目标检测)

R-CNN

论文链接:R-CNN
  R-CNN由伯克利大学的学者提出,作者将卷积神经网络应用在目标检测领域上,mAP指标达到了新高度,整个目标检测过程可以分为四个步骤。分别是①候选区域的获取;②图像特征提取;③对候选区域进行分类识别;④对候选框做进一步的调整校正。
在这里插入图片描述

1、Selective Search(ss算法)

  通过这个算法可以获得大约2000个候选区域(region-proposal),这些候选区域将作为后续的训练样本来训练特征提取模型(CNN)与目标分类模型(SVM)。ss算法具体的实现大家可以自行去搜索论文细读。

2、特征提取步骤(CNN)

  特征提取模型由卷积神经网络构造,最终输出的特征向量是4096维的,因为这里卷积网络直接是以AlexNet作为backbone。这个网络的任务是分类,但是作者发现如果再单独训练 k(目标类别的个数) 个SVM二分类器来分类的话准确率会更高,这里就放弃用CNN来分类,所以这个CNN就仅充当了特征提取的作用。

3、目标分类(SVM)

  由CNN得到特征向量后,将特征向量作为训练样本,用来训练k个SVM二分类器。

4、Bounding-Box regression

  作者认为由ss算法得到的候选框并不能很好的框选出目标区域,所以设计了一个简单的线性回归模型对候选框的位置进行调整。

下面具体讲解2,3,4步骤是如何实现的

CNN网络,SVM分类器训练

1、voc数据集介绍,以及构建训练集

  这个数据集里包含了每张图片中目标物体的矩形框信息(矩形框的左上角坐标与右下角坐标),以及对应的目标物体的类别,需要知道的是每张图片上可能会有多个目标物体。将数据集中的图片可视化后如下图所示
在这里插入图片描述
  然后通过ss算法可以得到大约2000个region-proposal,每个region-proposal与 ground-truth(真实矩形框label) 之间可能会有重叠,重叠的程度可以由***IoU(交并比)***这个指标来度量。

①卷积神经网络训练样本的构建:
  当IoU>=0.5时作者将其分为正样本,并将对应的目标物体的类别附在上面。所以一个被视为正样本的region-proposal应该包含矩形框的位置信息(由ss算法得到)与类别标签。当IoU<0.5时,将这个region-proposal视为负样本(即背景)。
  对每张图的每个region-proposal都做上面的操作就可以构建出训练CNN的数据集了。训练时,设置的batch-size为128,因为正样本是远小于负样本的,所以每个batch中包含32个正样本,96个负样本。另外本篇论文的网络结构与AlexNet有稍微的差别,本篇网络最后一层全连接层包含21和神经元(20个目标 + 背景),前面层的权重通过预训练的模型进行初始化。训练好卷积神经网络后,这个网络就充当region-proposal的特征提取器了。

②SVM二分类器训练样本构建:
  当IoU<=0.3时,将这个region-proposal视为SVM样本集中的负样本,0.3这个值是通过对比实验效果选出来的;只将ground-truth视为SVM样本集中的正样本。也就是说,当我们通过ss算法得到region-proposal后,将IoU<0.3的当作训练SVM模型中样本集的负样本。

CNN与SVM是如何联系起来的?

  首先由CNN的样本集进行训练,得到了训练好的CNN后,将region-proposal输入到CNN中,得到了一系列特征向量,然后将这些特征向量中IoU<=0.3的特征向量当作SVM中的负样本,正样本则由ground-truth输入CNN中获得,然后将这些特征向量用来训练k个二分类器。
  以上就是训练过程,下面介绍test步骤(inference)。

2、bounding-box regression

先上公式:
在这里插入图片描述
   G ∗ ^ \hat{G_*} G^表示通过线性模型更新后的信息, P ∗ P_* P表示更新前的bounding-box位置信息, G ∗ G_* G则是bounding-box的ground-truth信息。 d ∗ ( P ) = w ∗ T ϕ 5 ( P ) d_*(P)=w_*^T\phi_5(P) d(P)=wTϕ5(P), w ∗ T w_*^T wT是这个线性模型需要求解的参数, ϕ 5 ( P ) \phi_5(P) ϕ5(P)是由卷积神经网络的第五层输出的特征向量,通过最小化代价函数可以得到线性模型的参数。需要注意的是,我们采用的bounding-box应该是一个正样本(这里将IoU>=0.6的视作正样本),这样才能得到一个有意义的模型。通过实验表明,利用bounding-box regression调整后,在VOC2010测试集上,mAP提升了3.5%。

测试阶段(inference)

①通过ss算法在一张图片上提取2000(大约)个region-proposal
②将每个region-proposal输入到CNN中,得到了2000×4096的特征矩阵。
③将特征矩阵输入SVM分类器中,论文中一共训练了20个类别,所以会得到一个2000×20的矩阵
④将2000×4096的特征矩阵输入bounding-box regression中得到了更新后的矩形框位置信息。
⑤因为这2000个region-proposal之间很多重叠度非常高,所以对2000×20的矩阵实施非极大值抑制(NMS),可以大大减少冗余,最终得到了要保留的region-proposal。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值