R-CNN

1.前言

  • R-CNN论文
  • R-CNN(Region with CNN feature)
  • R-CNN可以说是利用深度学习进行目标检测的开山之作,作者Ross Girshick多次在PASCAL VOC的目标检测竞赛中折桂,曾在2010年带领团队获得终身成就奖
  • 在R-CNN提出来之前,传统的目标检测准确率大概在30%左右,而R-CNN准确率达50%

2.R-CNN算法流程

  • 一张图像生成1K~2K个候选区域(使用Selective Search算法
  • 对每个候选区域,使用深度网络提取特征
  • 特征送入每一类的SVM分类器,判别是否属于该类
  • 使用回归器精细修正候选框的位置

2.1候选区域的生成

  • 利用Selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体
  • 通过Selective Search算法就可以对一张图片,获得一些矩形框,这些矩形框里面就可能包含我们需要检测的目标
  • 通过Selective Search算法获得2K个候选区域

2.2提取特征

  • 将2K个候选区域统一缩放到227×227像素(pixel),接着将候选区域输入事先训练好的AlexNet CNN网络
    在这里插入图片描述

  • 之前都是先将特征图进行展平处理,然后将展平处理后的向量输入至全连接层,而在R-CNN中将后面的全连接层去掉了,直接得到特征向量,这里每个向量都是4096维的(特征矩阵64×64,展平之后就是4096)

  • 因为是2000个候选区域,所以得到了2000×4096的特征矩阵

  • 特征矩阵的每一行就对应着一个候选区域的特征向量,一共2000行

2.3判定类别

  • SVM分类器是一个二分类的分类器,针对每一个类别都有一个专门的分类器
    在这里插入图片描述
  • 我们以一个20个类别的数据集为例,所以就有20个SVM分类器
  • 将每一个分类器又组成了一个4096×20的权值矩阵
  • 将每一个特征向量分别输入到每一类SVM分类器,去判定类别,也就是将特征矩阵(2000×4096)与20个SVM组成的权值矩阵(4096×20)相乘
  • 就得到2000×20的评分矩阵,表示每个建议框归属于每个类别的概率
  • 评分矩阵的第一行第一列代表第一个特征向量为第一类的概率,同理第 i i i行的第 j j j列,代表第 i i i个特征向量为第 j j j类的概率,一共有2000个特征向量,20个类别,所以评分矩阵就是2000×20
  • 接着再对每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框

2.3.1非极大值抑制剔除重叠建议框

  • IoU(Intersection over Union)表示 ( A ∩ B ) / ( A ∪ B ) (A\cap B)/(A\cup B) (AB)/(AB)
  • 对于每一个类别首先去寻找得分最高的目标,计算其他目标与该目标的IoU值,然后对每一个边界框与最高得分的边界框IoU值进行判断,如果该IoU值大于给定的阈值,那么就删除该边界框,再将最高得分的目标存起来,在剩下的边界框当中再去寻找得分最高的目标,再按照上述流程进行计算,直到将所有的边界框遍历结束
    在这里插入图片描述
  • 比如上图的向日葵,通过Selective Search算法得到一系列的边界框
  • 在这些边界框中评分最高的(如图A),然后通过SVM之后,得到的概率是0.98,另外一个图B所对应的概率是0.86
  • 通过计算图A和图B的IoU,如果图A和图B计算出来的IoU大于给定的阈值,那么我们就认为图A和图B是同一个目标,这样我们就将概率低(图B)给删掉,保留图A
  • 剩下的边界框重复上述操作,最后我们所得到的应该就是一个最完美的边界框,而不是上图所示的那么多边界框,因为里面本来就一个目标

2.4使用回归器

  • 使用回归器精细修正边界框位置

  • 保留与真实标注的目标边界框有相交,并且IoU大于阈值的边界框,不满足条件的边界框就进行删除

  • 再分别使用20个回归器对上述20个类别中的剩余边界框进行回归操作,最终得到每个类别的修正后的得分最高的边界框

  • 接下来利用每一个边界框所得到的4096维的特征向量来预测
    在这里插入图片描述

  • 橙色框 P P P表示通过Selective Search算法得到的目标边界框Region Proposal

  • 绿色框 G G G表示真实准确的目标边界框Ground Truth,真实框是标注的数据集中自带的,真实框手工标注的

  • 红色框 G ^ \hat{G} G^表示Region Proposal进行回归后的预测窗口,通过回归分类器会得到四个参数,分别对应边界框中心点的 x x x偏移量, y y y偏移量,以及边界框高度和宽度的缩放因子,通过四个值对橙色框进行调整,从而得到红色的边界框

3.R-CNN框架

在这里插入图片描述

  • R-CNN是由四个部分组成的
  • 第一个部分:通过Selective Search算法得到一系列候选框Region proposal
  • 第二个部分:通过卷积神经网络(CNN),将候选框得到一系列特征向量
  • 第三个部分:将一系列特征向量通过SVM进行目标分类,得到概率值,再通过IoU筛选候选框,最终每一类得到一个候选框
  • 第四个部分:最后通过回归器,将候选框与人工标注的真实边界框进行操作,从而调整候选框的坐标
    在这里插入图片描述

4.R-CNN存在的问题

4.1测试速度慢

  • 测试一张图片约53s(CPU),用Selective Search算法提取候选框用时约2s,一张图像内候选框之间存在大量重叠,提取特征操作冗余
  • 因为会得到很多候选框,而每一个候选框都需要计算特征向量,又因为候选框是有重叠的,所以会有很多冗余

4.2训练速度慢

  • 训练过程及其繁琐,不仅要训练图像分类网络,还要训练SVM分类器和回归器,并且这三个训练之间都是相互独立的

4.3训练所需空间大

  • 对于SVM和边界框回归器训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘
  • 当我们把图像分类器训练好之后,需要将每一个候选框的每一个特征信息都提取出来,并保存到电脑的硬盘中
  • 然后再利用这些信息去单独训练SVM,以及边界框回归器
  • 对于非常深的网络,如VGG16,从VOC07训练集上的5k个图像上提取的特征需要数百GB的存储空间

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有难学的知识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值