R-CNN之前的准备:Selective Search for Object Recognition

版权声明:转载请注明本博客地址。 https://blog.csdn.net/xbcReal/article/details/76014600

    在阅读这篇博客之前,推荐先阅读关于讲解Efficient Graph-Based Image Segmentation 的这篇关于图像分割的博客,因为这个图像分割算法是selective search算法的一个重要的组成部分。
    先说这个算法是用来干嘛的吧。这个算法的作用是给定一张图片,输出一系列的可能包含物体的矩形框,这些矩形框我们称之为检测建议(detection proposals),一般而言,这些检测建议随后会被送入分类器进行类别的判定。然后讲讲如果不用这种提出检测建议的方法的话,我们以前是怎么做的吧。以前的经典方法是滑窗法,顾名思义,用一个尺度固定的窗口在图像上滑动,对一张图片可以得到大量的检测建议,然后使用分类器对这些检测建议进行类别的分类。由于图片中存在的物体的尺度是各种各样的,你可以想象电视是方的,人是细窄的,篮球是圆的,而且它们在图片中的大小还各不一样,因此还需要多个尺度以及宽高比的窗口在图像上滑动。可想而知,对于一张图片使用多个尺度和宽高比的窗口在上面进行滑动从而产生检测建议的数量是巨大的,而且这个过程也无疑是非常耗费计算资源的一件事情。由于产生了大量的检测建议,也意味着后面的分类器也需要进行更多的分类动作,也同样加重了计算机的负担。最后,这种方法的意义我们就可以知道了,那就是在耗费合理的计算资源的情况下,提出更少的检测建议,但同时还要尽可能把图片中的物体都包含住。用论文中的一句话来表达就是“Our goal is to generate a class-independent,data-driven, selective search strategy that generates a small set of high-quality object locations.”
    selective search算法主要基于以下三个方面的考虑:
    [1]能够捕捉所有的尺度。上文中提到,在滑窗法中为了捕捉所有的尺度,使用的方法是对一张图片采用不同尺度的窗口进行滑窗,从而得到不同尺度的检测建议。因为图片的物体可能是以任意尺度的形式出现的,因此必须要能够捕捉任意尺度的物体。这个算法主要通过图像分割算法中的层次性来达到这个目的。
    [2]多样性。没有单个最优的聚集区域的算法,正如下图所示,(b)中的两只猫如果仅仅通过纹理来进行区域分割,那么这两只猫会被分为一个区域,如果按照颜色来进行区域分割,那么这两只猫会被划分在两个区域中,反之在(c)中,如果按照颜色来进行区域划分,变色龙和背景会被分在一个区域中,因为他们有相似的颜色,而如果按照纹理的话变色龙就会被从背景区域中划分出来。而(d)中的轮胎和车身无论从纹理还是颜色都会被划分为两个区域,因此这个例子说明我们划分区域的策略必须是多样性的,尽可能考虑到所有的情况,如颜色、纹理、亮度等等。
                                                

    [3]能够快速计算。这点毋庸置疑,速度一直是在图像处理中追求的东西。速度快了可以实时处理图片,再快一点可以处理视频流,总之快比慢好得多。
    层次性聚类算法是selective search算法的基础,因为有了层次性,就可以捕捉低尺度到高尺度范围内的所有物体。算法流程如下:
    这里写图片描述
    这个算法的输入是一张图片,输出的是物体可能所在位置的假设集合L。首先使用Efficient Graph-Based Image Segmentation算法将图像分成许许多多的小区域的集合R,并且令表示相似性的集合S初始化为空集。对于R中的两两相邻的区域,计算他们的相似性,并把计算得到的结果加入到表示相似性的集合S中去。完成这个步骤之后,进行一个while循环,循环停止的条件是S变成了空集,对于每一次循环,做以下几件事情:
    首先获取集合S中相似性最高的两个区域ri,rj,然后将ri和rj进行融合为rt,然后把所有ri、rj和其它所有区域的相似性的值从S中除去,然后计算所有和rt相邻区域的相似性(也就是说之前的ri,rj都用rt来表示了,因为rt是它俩的并集),构成一个小的集合St,把S和St代表的集合进行求并操作得到新的S,R和rt求并集得到新的R。最后直到S变成了空集,则不再继续循环,而此时得到的集合R就是我们想要的物体可能所在位置的假设集合L。
    注意在前文中我们提到了一个多样性,这里首先对颜色空间采用了多样性,作者采用了8中不同的颜色方式,主要是为了考虑场景以及光照条件等。这个策略主要应用于Efficient Graph-Based Image Segmentation中图像分割算法中原始区域的生成以及selective search算法中衡量两个区域的相似性的时候用到。主要使用的颜色空间有:(1)RGB,(2)灰度I,(3)Lab,(4)rgI(归一化的rg通道加上灰度),(5)HSV,(6)rgb(归一化的RGB),(7)C,(8)H(HSV的H通道)。
    除了颜色的多样性以外,还对相似性的衡量采用了多样性。总共采用了4个不同的相似性度量的方式,包括颜色的相似性度量、纹理的相似性度量、尺寸的相似性度量以及吻合度的相似性度量。具体公式可以查看论文,很容易就看懂了。最后将这四种相似性按照一定权重加权求和就得到两个区域之间的相似性了,这在Algorithm1中是必须用到的一步。
    除了以上的多样性,文章还用到了初始区域的多样性。初始区域是指通过Efficient Graph-Based Image Segmentation获得的初始区域集合R,由于采用不同的颜色空间,所以我们会获得不同的初始区域,另外,改变该图像分割算法中的阈值k,也可以获得不同的初始区域,且k越大,获得的初始区域的数量越小,每个区域的面积会越大,具体原因还是参考Efficient Graph-Based Image Segmentation
    使用不同的策略来进行层次性聚类算法会得到不同的集合R,但是我们想把所有的R中的区域(论文中称为locations)都放在一起并进行一个排序,排序的目的是说让更有可能是物体的location先送入分类器。由于在一个策略下的层次性聚类算法是有层次的,比如说,最底层就是通过图像分割算法得到的初始区域,随着区域的不断融合,最后达到层次的顶层,也就是整个图片融合为一个区域,我们把顶层在层次性中的坐标i标为1,它的下一层就是图像被分割为少数几个区域的那一层。然后对于每一个层次坐标i,都乘以一个范围在[0,1]之间的随机数RND,得到i’,这样对于每一个策略下的不同层次坐标下的区域就按照其得到的i’的大小从小到大排序,将不同策略下的i’都放在一起进行升序排序,i’小的具有优先被后续比如分类器处理的权力。在这一步排序之后,我们又进一步筛选出i’很小,但是重复数很多的区域,意思就是多种策略下都分割出同样的区域的话,那么这些区域更有可能是物体存在的区域。至此,Selective Search for Object Recognition算法就结束了。

展开阅读全文

没有更多推荐了,返回首页