目标检测(一):Selective Search

最近在看RCNN系列的目标检测相关文章,然后有好多不了解的名词,更令人讨厌的是,当翻看一个名词的时候又会蹦出来其它不熟悉的概念,简直就是一个恶性循环…既不想写字也不想打字,最终还是选择敲敲敲敲做些笔记,总不能看了就忘以至于白白浪费时间🙃🙃🙃

RCNN系列的目标检测模型,均是基于 region proposal(区域建议) 的 (有些地方把region proposal翻译为区域建议,也有的翻译为 候选区域,这两种见的比较多,我更喜欢第二种翻译,直觉上会更容易理解点叭)。

Q1:RCNN中为什么使用Selective Search方法?

A1:在RCNN中,由于不需要用某种特定的候选区域方法来获取region proposals,且希望与先前的一些成果(主要是UVA和Regionlets,这两种用的就是selective search region proposals)进行比较,故采取了 Selective Search(选择性搜索),所以这篇笔记就记录一些有关选择性搜索的内容。

文章地址:Selective Search

1 选择性搜索的思想

selective search 的目的是产生用于目标检测中的region proposals,该方法结合了 Exhaustive Search(穷举法)Segmentation(细分),取其精华,去其糟粕!

那么为什么要做这种结合呢?
1
因为目标检测复杂的没有人性🙄🙄🙄。
如上图:

  • (a):图片中有桌子,桌子上有盘子、碗、杯子等其他物体,碗中又有勺子、食物等,那么在进行目标检测时就需要对不同的物体进行定位与分类。同时这说明了图像在本质上是分层的,因此在做目标检测时还要考虑到这种层级关系(hierarchical)
  • (b):图中两只喵的纹理(texture)是相同的,但其颜色不同,此时可以通过颜色进行区分;
  • (c):变色龙的颜色与树叶的颜色相同,但两者纹理不同,此时可以通过纹理进行区分;
  • (d):汽车的轮胎与车身的颜色、纹理等都不相同,但要将车身与轮胎视为一个整体,可以从它构成一个封闭图形来区分。

上述图片说明了一副图像所包含的信息是极其丰富的,不同物体有不同的形状、尺寸(scale)、颜色和纹理,而我们希望的是通过进行目标检测,能够识别出图中的各类物体,这一过程是复杂的,需要依据不同的特征定位出物体所有可能的位置,并对它们进行分类。

(以下内容参考自目标检测(1)-Selective Search 这位朋友写的内容都很易懂👩‍💻 强烈推荐!!!)

由于我们事先不知道需要检测哪个类别,因此(a)中的桌子、瓶子、餐具都是一个个候选目标,那我们如何去获得这些候选目标的所有可能位置呢。常规方法是通过穷举法。

所谓的穷举法,是指通过更改滑窗的大小来获取图像中尺度不同的region proposals,也就是目标在图像中所有可能的locations。显然,由于目标可以任意尺度处于图像中的任意位置,那么视觉上的搜索空间是非常大的,因此穷举法会产生巨大的计算量,这就限制了我们可以考虑的尺度以及location的数量,由于无法兼顾每个尺度,最终得到的region proposals准确度也非常低。那么我们能不能减少这些可能性并提高精确度呢。这就是本文想做的事情,也是本文的三大创新点:

  • Capture all scales:由于我们不清楚物体的尺度是多少,自然就希望能够尽可能捕捉到所有的尺度,但又不能像穷举法那样,杀敌一千自损八百,因此 selective search 采用图像细分(Segmentation)层次算法(Hierarchical Algorithm) 来解决这个问题;
  • Diversification:单一策略无法很好地应对复杂的自然图像,因此selective search 针对形状、尺度、颜色和纹理的不同策略获取小区域,再将他们进行合并以获得特征更加复杂的的的多种region proposals;
  • Fast to Compute:在这里看到的一句话,感觉说的特别对哈哈哈哈哈哈,算法,就像功夫一样,唯快不破!

Q2:selective search为什么要结合穷举法和细分?

A2:用一句话来总结,就是selective search 通过segmentation快速的实现了exhaustive search磨磨唧唧还做不好的事情。

2 产生多尺度候选区域的区域合并算法

因为区域不仅包含了像素所表达的信息,同时还能表现位置信息,因此可以更好地表达我们想要检测的目标的特征。
2
算法描述:

  • 首先通过基于图的图像分割方法初始化原始区域,就是将图像分割成很多很多的小块,同时初始化相似度集合 S S S
  • 其次我们使用贪心策略,计算每两个相邻的区域的相似度 s ( r i , r j ) s(r_i,r_j) s(ri,rj) 并将其合并到 S S S 中。
  • 然后从 S S S 中找出相似度最大的两个区域 r i r_i ri r j r_j rj ,并合并为新的区域 r t r_t rt。同时从 S S S 中除去原先与 r i r_i ri r j r_j rj 相邻区域之间计算的相似度,计算 r t r_t rt 与其相邻区域(原先与 r i r_i ri r j r_j rj 相邻的区域)的相似度,将其结果添加的到 S S S 中。同时将新区域 r t r_t rt 添加到区域集合 R R R中,直到最终只剩下一块完整的图片。
  • 这一过程中每次产生的区域都得到了保存,获取每个区域的bounding box L L L,也就得到了最终的 Object location hypotheses L L L

3
看下上图就会知道为什么这个算法叫Hierarchical Grouping Algorithm,该算法所实现的区域合并是有层次的,从尺度较小的区域,不断合并得到尺度较大的区域,从而实现尽可能多地遍历各种尺度的目的。

———————————————————————————
RCNN中使用selective search的目的就是获取目标的region proposals,所以关于selective search 就先学到这里,之后用到的话再来继续学习。

3 …

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值