深度学习之候选框的选取

在目标检测、目标跟踪领域,提取region proposal都是最基本环节。本文概述了从 sliding window 到 selective search, 然后升级到 region proposal network的过程。 核心在于理解 selective search算法 和 region proposal network的设计思想。

1. 从sliding window 到 selective search 的候选区域提取

  • 目标检测 vs. 目标识别

在这里插入图片描述
目标识别算法是指在一张给定的图像中识别出给定的物体。他将整张图像作为输入,然后输出类别的标签并给出图像中出现物体的概率。如上图,直接输入objection recognition算法中,算法会反馈图像的类别dog, confident score 0.9987.
在这里插入图片描述
目标检测任务不仅仅要返回图像中主要包含那些物体,而且还要返回该图像中包含了多少物体? 他们在哪里(一般用BoundingBox进行标注)?
目标识别算法是所有目标检测算法的核心。假设我们已经拥有了非常强大的目标识别算法,但是该算法也仅仅能够告诉我们目标(如狗)是什么, 却不能告诉我们目标在哪里? 有多少个目标?

为了完成目标检测任务,我们需要选择一个更小的区域(sub-regions,patches),然后利用目标识别算法去识别各个patches是否包含high confident scoreobjections

因此,一个非常基础但很重要的环节在于:如何从一张图像中又快又好地提取出这样的patches?其实最直接的方法提取region proposal(候选区域)的方式就是采用滑窗方法。但是sliding window方法非常消耗时间,因此研究学者提出了基于selective search策略的区域候选算法。

note1:提取patches算法更学术一点叫做region proposal algorithm

note2:好,指的是patches中尽可能恰好包括objects

note3:快,指的是有效速度。因为不同目标之前存在位置和尺度差异,如果采用遍历法,明显就是不合理的。

  • Sliding window 滑窗技术

在这里插入代码片![在这里插入图片描述](https://img-blog.csdnimg.cn/20200208174231416.png)
使用sliding window方法中,我们使用window对整幅图像进行遍历,然后利用目标识别算法所有的patches进行检查。这实际上就是一个穷举的过程。此外,在遍历搜索过程中,我们不仅仅要遍历单个尺度的window,还有对多尺度的window进行检测。 因此,sliding window策略是非常消耗时间的。还有就是,sliding window算法对固定比例patches提取非常适合,但是由于projection的时间原因,固定的比例是很难保证的。 如果要将不同比例考虑进去,sliding window的时间效益又将大打折扣。

  • region proposal algorithm
    在这里插入图片描述
    sliding window (受平移、尺度、比例影响)存在的根本问题就是漫无目的性的搜索, 恰恰region proposal algorithm就是为了解决这个问题。候选区域提取算法将图像作为输入,并输出边界框BoundingBox,该边界框对应于图像中最有可能是对象的所有patches。这些BoundingBox可能存在噪声、重叠,也可能偏离了目标,但是大多数候选区域应该与图像中的目标非常接近。这样,我们在后面直接对这些BoundingBox进行目标识别就好了。 在所有的region proposal algorithms中, selective search based 非常有代表性(快,有很高的召回率recall),进而提取BoundingBox
  • selective search
    在这里插入图片描述
    图一 原始的输入图像 图二 采用graph-based适当分割结果 图三 采用graph-based过分割结果
    selective search最核心的点在于通过颜色、文理、形状或者大小等 将原始的输入图像划分成等级区域(实质就是分割,如上图所示)。但是直接分割的图片不能用来做物体检测,原因有二:

1 大多数物体包含俩种以上的颜色(尤其受到光照影响,一个物体可能包含更丰富的颜色信息)

2 如果物体之间有重叠,这种方法无法处理,比如杯子放在盘子上的情况

为了更好地解决上面的两个问题,自然而然的我们想到了使用更好的分割方法,但是这并不是我们的目标(图像分割本来就是一个非常大的领域)。 我们这里需要的是一个不错的分割结果就好,至少需要满足分割后的区域可以尽可能的覆盖原图像中的物体。所以,selective search中使用了[1]中的分割算法进行过分割(如上图所示)。selective search将过分割图像作为初始输入,并执行以下步骤:

step 1:根据论文[1]分割的图片画出多个框,把所有框放入列表Region

step 2:根据相似程度(颜色,纹理,大小,形状等),计算Region中框之间的俩俩形似度,把相似度放入列表A中

step 3:从列表A中找出相似度最大的俩个框a,b并且合并

Step 4:把合并的框加入列表Region中,从A中删除和a,b相关的相似度,重复步骤2,直至清空A

最终只需要对Region中的框进行图片分类,就可以得到原图的检测结果。候选框从数十万降到几千(R-CNN中俩千左右)。
graph-base过分割后形成Hierarchy - bottom-up 策略。它显示了等级分割过程的初始、中间和最后一步
绿框:生成的真阳性边界框 true positive BoundingBox 蓝框:生成的假阳性边界框 false positive BoundingBox

  • selective search 区域归并

那么如何计算两个区域之间的相似性? selective search运用了基于颜色、文理、形状、大小进行相似性度量。

颜色相似性A color histogram of 25 bins is calculated for each channel of the image and histograms for all channels are concatenated to obtain a color descriptor resulting into a 25×3 = 75-dimensional color descriptor. 对于图像的每一个通道我们需要计算25bin的颜色直方图,然后每一个颜色通道的直方图拼接在一起,形成颜色描述子(75维)。

纹理相似性:对于图像的每个通道,利用高斯差分对8个方向进行计算提取纹理特征。对于每个颜色通道的每个方向,利用10-bin直方图进行表示,这样便形成了纹理描述子(1083=240维)。

尺寸相似性:尺度相似性鼓励更小的区域早日合并。它确保在图像的所有部分形成所有尺度的候选区域。如果没有考虑这个相似度测度,那么一个区域会一个一个地吞噬所有较小的相邻区域,那么,多个比例的候选区域将只在特定的位置产生。

形状兼容性相似性:两个区域重合比例程度。

两个区域之间的最终相似度定义为上述4个相似点的线性组合。

Python+OpenCV的代码实现:https://download.csdn.net/download/shenziheng1/10751868。示例结果如下:

你是
selective search采用graph-based过分割生成的候选区域(region proposal): 降低了时间消耗,提升了候选区域的质量
在这里插入图片描述
selective search采用graph-based过分割生成的候选区域(region proposal): 降低了时间消耗,提升了候选区域的质量

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值