三.每周一学----目标检测-R-CNN

前言

传统的目标检测方法由于滑窗效率低,特征不够鲁棒的原因限制了目标检测的发展,而深度学习的目标检测方法致力于解决这些问题,深度学习目标检测方法分为两个阶段(one-stage和two-stage)这个在我的前一篇博客有讲到。
这次,我们就先学习R-CNN

R-CNN论文
《Rich feature hierarchies for accurate object detection and semantic segmentation》2014

R-CNN测试过程

  1. 输入一张图像,采用 selective search(选择性搜索)法提取约2000个Region Propasal
  2. 先在每个建议框周围加上16个像素值为Region Propasal像素平均值的边框,在直接变形为227*227的大小。
  3. 先将所有Region Propasal减去该建议框像素平均值后,再依次将每个227×227的Region Propasal输入至AlexNet CNN网络,获取4096维的特征,2000个建议框的CNN特征组合成2000*4096维特征矩阵。
  4. 将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘,获得2000*20维矩阵表示每个Region Propasal是某个物体类别的得分。
  5. 分别对上述2000*20维矩阵中每一列即每一类进行非极大值抑制,剔除重叠Region Propasal,得到该列即该类中得分最高的一些Region Propasal。
  6. 分别用20个回归器对上述20个类别中剩余的Region Propasal进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。

网络框架
在这里插入图片描述

R-CNN详细解释

1.selective search

因为selective search在目标检测中比较重要,这里作者将详细的理解一下

  • 首先将图像进行分割得到若干区域,组成区域集合S,这是一个初始化的集合
  • 然后利用颜色,纹理,尺寸和空间交叠等特征,计算区域里每个相邻区域的相似度
  • 找出相识度最高的两个区域,将其合并为新集并删除原来的两个对应子集
  • 重复以上的迭代过程,直到最开始的集合S为空,得到的分割结果和候选区域边界就是初始框

具体操作流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例:如上图所示,R1和R2的的相似度最大然后合并为一个新的区域R(n+1),并删除R1和R2,然后不断的重复,最后得到最有可能涵盖物体的框,也就是Region Propasal

在这里插入图片描述

这篇博客中详细的介绍了selective search,同学们若想进一步解selective search,可以去看看
selective search

2.为什么要变成227*227

由于CNN的需要统一尺寸的输入,因此这里还需要将候选区域进行变形(AlexNet是227*227)

如何实现

  • 各向异性缩放: 不管当前区域的长宽比,直接resize,结果可能会扭曲原图
    padding处理(先添加一定尺寸的边界)
    上面的padding=0,下面的padding=16。在这里插入图片描述

  • 各向同性缩放: 1.直接在原始图中做边界扩展,如果到了图像边缘则用区域的均值做填充
    2.在区域边缘使用固定背景颜色做填充

哈哈哈!AlexNet CNN 这个内容我看了半天,也不是很清楚,在此就不向大家过多的解释了,以后再慢慢学习,大家可以自行去百度理解。

3.分类器SVM

是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)。
简单来说就是
SVM 的目的就是想要画出一条线,以“最好地”区分这两类点,以至如果以后有了新的点,这条线也能做出很好的分类
在这里插入图片描述
如上图就是红线效果好,黑线效果一般,绿线效果不好
这里也推荐一篇关于SVM的博客SVM写的十分详细,大家可以去学习一下

这样,因此我们对第四步的内容就有更好的理解

4.非极大值抑制

在第四步过后,我们会遇到同一个目标被多个建议框包围的情况,这是就要用到非极大值抑制
简单来说,就是只保留一个最优的框,于是我们就要用到非极大值抑制,来除去这些冗余的框
在这里插入图片描述
步骤

  1. 将所有框的得分排序,选中最高分及其对应的框
  2. 从每列最大的得分Region Propasal 'a’开始,分别与该列后面的得分Region Propasa 'b’进行IoU计算,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除
  3. 重复以上步骤,直到遍历完所有Region Propasals

最后得到
在这里插入图片描述

5.边框回归(Bounding-box regression)

举个例子
在这里插入图片描述
如图所示

红色的框为Selective Search提取的Region Proposal,我们需要对红色的框进行调整,然后使之不断和绿色的框而契合,这样目标检测中的定位就会更加的准确,Bounding-box regression 就是用来调整这个窗口的。

简单来理解就是,我们用一般使用四维向量(x,y,w,h) 来表示窗口, 分别表示窗口的中心点坐标和宽高。 如上图,红色的框 P 代表原始的Proposal, 绿色的框 G 代表目标的 Ground Truth, 我们的目标是寻找一种关系使得输入原始的窗口 P 经过映射得到一个跟真实窗口 G 更接近的回归窗口G^。
如何让红色窗口变成绿色窗口呢
就是 平移+尺度放缩
这篇博客详细的介绍了如何实现 Bounding-box regression ,大家可以去看看

6.R-CNN优缺点

优点

  • 使用了Selective search,大大提高了候选区域的筛选速度
  • 通过边框回归模型进行校准,减少图像中的背景空白,得到更精确的定位

缺点

  • 候选框的选择比较耗时,很难做到实时性
  • 分步骤进行,过程繁琐(是采用传统目标检测的框架)
  • 重叠区域特征重复计算

    在这里插入图片描述
    我们对蓝色区域就会产生两次的重复CNN提取,让计算重复

小结

这次我们就先学到这里,由于,是刚刚接触和学习这块内容,还有许多细节没有解释清楚,请大家见谅,如果大家有什么问题或者建议可以在评论里留言,感谢大家的观看。

这里推荐两个视频关于R-CNN的这个小姐姐讲的很好哦
这个也很详细视频
流程图借鉴

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值