[论文理解]Selective Search for Object Recognition
Selective Search for Object Recognition
简介
Selective Search是现在目标检测里面非常常用的方法,rcnn、frcnn等就是通过selective search方法得到候选框,然后进行分类,也就是传统的two stage方法。本篇也是我看到frcnn之后不得不看的一篇论文,大致将自己的理解记录下来,方便以后指正。
Selective Search
算法目的
- 能够得到各种大小的框
由于图像中的物体可以有任意大小,所以selective search算法至少要能够做到得到各种大小的框。
- 考虑多种组合方法
由于图像中的颜色、纹理、光照条件等不同,我们无法只根据单一条件(如颜色)将区域合并,因此合并区域的过程中必须要综合考虑各种因素。
- 能够快速计算
selective search算法提出的目的就是要能够快速计算,这样我们能够把能多的计算量花在后面识别上,而不是得到物体的框上。
Hierarchical Grouping
大致理解
Selective Search算法采用的是分级合并的算法,具体就是从细节部分开始计算,最后到总体,也就是Bottom-up方法。由于这个过程是分级进行的,所以我们可以在不同级框定一定的区域,这样框定的区域就是各种scale的,满足了上面的要求。
细节理解
Hierarchical Grouping中很重要的一点是用了Felzenszwalb的算法得到了图像分割的区域,这是一个基于图的图像分割算法,这个算法下次博客更新会写理解,这里只需要知道经过该算法得到了若干个分隔后的图像区域,这些区域经过我们的selective search算法得到合并并且框出候选框。具体的做法是:首先,计算所有任意两region之间的相似性(这个怎么计算后面会提到,利用区域的特征计算),然后每次相似性最大的两个区域进行合并,框出合并后的集合,用合并之前两个区域集合的特征计算合并之后的区域的特征,这时候就可以再利用新的区域和其他区域计算相似度进一步迭代,迭代的终点是整个图像变成一个区域。由于相似度是基于区域特征来计算的,而合并后的特征可以基于合并之前的特征运算得到,不需要再根据图像的pixel重新计算,因此fast to compute。
下图就是该算法的细节,其中相似函数在后面讲道,所以当时我画了个问号。

计算s相似函数
首先是颜色空间的Scolor的计算,文章考虑了八种策略来计算色彩的相似性,下图列出了文章提的颜色空间:

在不同颜色空间下用直方图统计法计算相似度,每个channel分为25个bins,3channel图就是75bins。色彩相似性是使用L1范数来进行计算的。

Stexture是纹理特征的相似函数,使用的是SIFT特征来进行计算的,SIFT特征在之前的博客中有写道的。

Ssize是区域大小的相似函数,

直接这样计算还是存在问题的,因为光size相似比较大,但是两者相距比较远的情况下两个region合并之后的区域是有问题的,所以为了解决这种问题,提出了Sfill函数,其中BBi表示的是框的大小

看上面的公式就知道可以解决这个问题了。
最终呢,s相似性函数就通过下面的公式计算得到:

其中呢,ai取值为0或者1,表明是否启用该特征。
合并区域
合并区域需要考虑到的是防止从大区域开始合并,因为这样可能会导致很多小区域没有没框进来,所以应该优先从小区域开始合并,但是又要保留一定的随机性,所以作者定义了vi = RND*i,RND为随机数,范围为0-1,i表示层级数,i=1代表整个图像。这样就基本可以保证小区域优先合并并且有一定的随机性了。依次合并,直到合并为一个区域。
之后再将合并过程中的框的vi按照从大到小的顺序排序,保留阈值大小之前排序的框,这些框为算法的输出。
实现
github地址:https://github.com/AlpacaDB/selectivesearch
安装:
pip install selectivesearch
使用:
import skimage.data
import selectivesearch
img = skimage.data.astronaut()
img_lbl, regions = selectivesearch.selective_search(img, scale=500, sigma=0.9, min_size=10)
regions[:10]
=>
[{'labels': [0.0], 'rect': (0, 0, 15, 24), 'size': 260},
{'labels': [1.0], 'rect': (13, 0, 1, 12), 'size': 23},
{'labels': [2.0], 'rect': (0, 15, 15, 11), 'size': 30},
{'labels': [3.0], 'rect': (15, 14, 0, 0), 'size': 1},
{'labels': [4.0], 'rect': (0, 0, 61, 153), 'size': 4927},
{'labels': [5.0], 'rect': (0, 12, 61, 142), 'size': 177},
{'labels': [6.0], 'rect': (7, 54, 6, 17), 'size': 8},
{'labels': [7.0], 'rect': (28, 50, 18, 32), 'size': 22},
{'labels': [8.0], 'rect': (2, 99, 7, 24), 'size': 24},
{'labels': [9.0], 'rect': (14, 118, 79, 117), 'size': 4008}]
output:

论文原文:https://ivi.fnwi.uva.nl/isis/publications/2013/UijlingsIJCV2013
[论文理解]Selective Search for Object Recognition的更多相关文章
- 【计算机视觉】Selective Search for Object Recognition论文阅读3
Selective Search for Object Recoginition surgewong@gmail.com http://blog.csdn.net/surgewong 在前 ...
- 【计算机视觉】Selective Search for Object Recognition论文阅读1
Selective Search for Object Recognition 作者: J. R. R. Uijlings, K. E. A. van de Sande, T. Gevers, A. ...
- 论文笔记:Selective Search for Object Recognition
与 Selective Search 初次见面是在著名的物体检测论文 「Rich feature hierarchies for accurate object detection and seman ...
- 【计算机视觉】Selective Search for Object Recognition论文阅读2
Selective Search for Object Recognition 是J.R.R. Uijlings发表在2012 IJCV上的一篇文章.主要介绍了选择性搜索(Selective Sear ...
- 目标检测--Selective Search for Object Recognition(IJCV, 2013)
Selective Search for Object Recognition 作者: J. R. R. Uijlings, K. E. A. van de Sande, T. Gevers, A. ...
- Selective Search for Object Recognition
http://blog.csdn.net/charwing/article/details/27180421 Selective Search for Object Recognition 是J.R. ...
- Notes on 'Selective Search For Object Recognition'
UijlingsIJCV2013, Selective Search For Object Recognition code 算法思想 利用分割算法将图片细分成很多region, 或超像素. 在这个基 ...
- 机器学习:Selective Search for Object Recognition
今天介绍 IJCV 2013 年的一篇文章,Selective Search for Object Recognition,这个是后面著名的DL架构 R-CNN 的基础,后续介绍 R-CNN 的时候, ...
- Selective Search for Object Recognition(理解)
0 - 背景 在目标检测任务中,我们希望输入一副图像,输出目标所在的位置以及目标的类别.最常用的算法是滑动窗口方法,但滑动窗口其实相当于穷举图像中的所有子图像,其效率低且精度也受限.该论文提出一种新的 ...
随机推荐
- CSU - 1580 NCPC2014 Outing(树形依赖+分组背包)
Outing Input Output Sample Input 4 4 1 2 3 4 Sample Output 4 分组背包: for 所有的组k for v=V..0 for 所有的i属于组k ...
- Manacher's Algorithm 马拉车算法(最长回文串)
这个马拉车算法Manacher‘s Algorithm是用来查找一个字符串的最长回文子串的线性方法,由一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性,这 ...
- SQL依据特殊符号分批截取字符串(案例)
网上的问题: 下面是Insus.NET的解决办法,仅供参考. )) INSERT INTO #temp([Source]) VALUES ('2012-04-27 16:49:24$1$2'), (' ...
- 黑科技抢先尝(续2) - Windows terminal中Powershell Tab的极简美化指南
目录 安装python 安装git 安装powerline字体 主题定制 安装oh-my-posh 查看策略组的执行权限 使用choco 安装终端模拟器 - ConEmu 优化 PowerShell ...
- [51nod] 1007 正整数分组 dp
将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的. Input 第1行:一个数N,N为正整数的数量 ...
- 51nod 1831 小C的游戏
小C和小L是好朋友,她们在玩一个游戏. 一开始有一个大小为n的石子堆,小C先手. 每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个). 如果取走最后一个人 ...
- 洛谷P2018 消息传递
P2018 消息传递 题目描述 巴蜀国的社会等级森严,除了国王之外,每个人均有且只有一个直接上级,当然国王没有上级.如果A是B的上级,B是C的上级,那么A就是C的上级.绝对不会出现这样的关系:A是B的 ...
- 从零开始学Docker
在写这篇博客之前,听说过Docker技术,但是一直没有主动去深入了解.用这篇博客来记录自己学习Docker的个人总结,会一直补充完善. 我这边先随便写,后期再做总结!! Docker官网: https ...
- Centos 7 install cacti监控
首先,先安装LNMP服务 安装一: 如果觉得安装起来麻烦,可以到如下网站进行安装: https://lnmp.org/install.html 安装二: 采用yum或者安装包的方式进行安装,具体操作请 ...
- c# json字符串转数组
JArray jo = (JArray)JsonConvert.DeserializeObject("这里是json字符串");