【目标检测】R-CNN

概述

R-CNN是将CNN用于目标检测领域的开山之作(虽然不一定是最早的,但确实最早出现好效果的),也是两阶段目标检测技术的开山之作,是后面一个系列的第一篇文章。

细节

检测流程

流程概述:

  1. 在原图上进行选择性搜索,获得2000个候选框
  2. 将每个候选框进行缩放,通过网络进行特征提取
  3. 每个候选框对应一个特征,借助这些特征,通过SVM进行分类,通过NMS剔除部份候选框
  4. 通过一个bbox回归器(bbox回归可以参考这里)对比原始候选框进行微调

在这里插入图片描述

详细流程:

  • 首先从输入图片中使用选择性搜索获得2000个与类别无关的候选框
  • 将这些候选框缩放到固定尺寸(227x227)逐一喂到同一个网络中(如AlexNet)进行特征提取,得到2000*4096维的矩阵
  • 之后使用各个类别的线性SVM基于这些特征对候选框进行打分,判断是否为该类。如voc数据集20个类别就有20个SVM,他们对应的权重矩阵就是4096*20,经过SVM之后我们就得到了2000*20的矩阵,接着使用NMS剔除部分候选框。
  • 首先是对于NMS之后的候选框进一步剔除,只保留与GT相交并且IOU大于一定阈值的候选框,接着20个回归器对20个类别中剩余的候选款进行回归操作,最终得到每个类别得分最高的bbox。
  • 第三步补充一:中间过程如下图所示:左边的每一行都代表一个候选框的特征,中间的每一列代表一个分类器的权重,那么他们相乘得到的就是某个候选框为某个类别的概率。因此右边的每一行代表的是每个候选框在各个类别下的概率,每一列表示某个类别下各个候选框的概率。而NMS就是对于每一列(也就是每一类)做的,每次取这一列得分最高的候选框,然后与该列其他框计算IOU,若是该IOU大于我们给定的阈值,就将后者的剔除(得分置0),得分最高的候选框处理完之后就是得分第二高的候选框,以此类推。
    在这里插入图片描述

一些细节

预训练:首先是特征提取网络会在ImageNet上预训练,然后将最后的分类层替换成随机初始化的参数,接着在当前数据集上微调(固定前面层的参数,只训练最后的分类层)。
选择性搜索:是一个类似于聚类的过程,开始根据颜色、纹理、大小等找到一些相似的初始区域,然后慢慢加权合并,最终得到2000+的候选框。
缩放:文中列举了三种方式:1、包含临近的像素,保留长宽比例进行等比例缩放;2、不包含临近的像素,保留长宽比例进行等比例缩放;3、不包含临近的像素,强行缩放不等比例,如下面的BCD,但是最终作者选用的包含临近的像素,强行缩放不等比例的方式,其实就相当于是将候选框放大一点(捕捉上下文信息),然后调整大小放入网络。
在这里插入图片描述
缩放结果如下:
在这里插入图片描述
为什么不用softmax分类而是采用SVM呢?好像也没有看到很信服的解释,可能是作者实验下来,确实是SVM效果会好一点。

网络微调和SVM训练时的正负样本:网络微调时候的正样本是与GT的IOU最大并且大于0.5的候选框,其余样本是负样本;训练SVM时候的正样本是与GT完全重合的候选框,而负样本是与GT的IOU小于0.3的候选框,而IOU在0.3到1之间的候选框就被忽略了。(训练SVM的最优策略实验得到的,且采用困难错误样本挖掘的方式姿训练)

存在的问题

时间消耗大:检测的速度很慢,由图可见,主要的耗时来自于选择性搜索、候选框预处理(缩放裁剪)以及每个候选框的特征提取,并且这些操作是与类别无关的,相对而言,后面的候选框分类打分以及NMS虽然与类别相关,但是耗时很少很少。
在这里插入图片描述
流程臃肿:算法中的每个流程对于算法性能都是至关重要的,严重依赖上下游,不端到端,所以需要对每个流程都进行优化,才能得到最终的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值