[论文理解]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 - 背景 在目标检测任务中,我们希望输入一副图像,输出目标所在的位置以及目标的类别.最常用的算法是滑动窗口方法,但滑动窗口其实相当于穷举图像中的所有子图像,其效率低且精度也受限.该论文提出一种新的 ...
随机推荐
- 使用Postman测试请求
Postman是什么 在开发或者调试网络程序或者是网页B/S模式的程序的时候,需要一些方法来跟踪网页请求,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具. 网页调试工具Postm ...
- Django 框架
MVC 框架和MTV框架 (了解即可) MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...
- Working Experience - WPF 中 DataGrid 控件的应用
问题: 添加控件后, 编辑单元格会出现异常 绑定 ItemsSource 属性后, 更新绑定对象的数据, UI 不刷新 如何显示控件中 ComboBox 类型 解决方法: 绑定 ItemsSource ...
- ASP.NET学习笔记(五)ASP 对象
1.ASP Response 对象用于从服务器向用户发送输出的结果. 2.ASP Request 对象用于从用户那里取得信息 Request.QueryString 命令用于搜集使用 method=& ...
- h5模型文件转换成pb模型文件
本文主要记录Keras训练得到的.h5模型文件转换成TensorFlow的.pb文件 #*-coding:utf-8-* """ 将keras的.h5的模型文件,转换 ...
- codevs1051接龙游戏
1051 接龙游戏
- Spring Cloud Hystrix理解与实践(一):搭建简单监控集群
前言 在分布式架构中,所谓的断路器模式是指当某个服务发生故障之后,通过断路器的故障监控,向调用方返回一个错误响应,这样就不会使得线程因调用故障服务被长时间占用不释放,避免故障的继续蔓延.Spring ...
- JSP 不同版本(转)
转自 http://blog.csdn.net/sunnyyoona/article/details/51076823
- html表格合并单元格的运用实例
效果图: 实现代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><ti ...
- from appium import webdriver 报错
from appium import webdriver 报错 看看你的文件是不是就叫appium