论文笔记 《Selective Search for Object Recognition》
论文笔记 《Selective Search for Object Recognition》
项目网址:http://koen.me/research/selectivesearch/
一句话概括,用了segmentation和grouping的方法来进行object proposal,然后用了一个SVM进行物体识别。
这篇论文是2012 IJCV上的一篇文章,主要介绍了选择性搜索(Selective Search)的方法。物体识别(Object Recognition),在图像中找到确定一个物体,并找出其为具体位置,经过长时间的发展已经有了不少成就。之前的做法主要是基于穷举搜索(Exhaustive Search),选择一个窗口(window)扫描整张图像(image),改变窗口的大小,继续扫描整张图像。显然这种做法是比较“原始的”,改变窗口大小,扫描整张图像,直观上就给人一种非常耗时,结果太杂的印象。作者能够突破思维定式,从另一个角度给出一种简单而又有效的方法,油生敬意。我们不禁会想,为什么这么简单的方法之前没有想到呢。我想这个应该跟对图像认识的观念有关系,在都不知道如何做物体识别(Object Recognition)的时候,较为“原始的”穷举搜索方法,给了大家一个方向,之后所有的人都沿着这个方向走,最后就忽略了对其他方向的认识。花费了这么多年,才找到另一个方向,这个转变实属不易。扯远了,总之,这种方法确实让人耳目一新。
其实论文主要的部分在于选择性的搜索,这里其实会有几个关键点:
1. 适应不同尺度(Capture All Scales):穷举搜索(Exhaustive Selective)通过改变窗口大小来适应物体的不同尺度,选择搜索(Selective Search)同样无法避免这个问题。算法采用了图像分割(Image Segmentation)以及使用一种层次算法(Hierarchical Algorithm)有效地解决了这个问题。(区域的有效选择)
2. 多样化(Diversification):单一的策略无法应对多种类别的图像。使用颜色(color)、纹理(texture)、大小(size)等多种策略对(【1】中分割好的)区域(region)进行合并。(合并策略)
3. 速度快(Fast to Compute):算法,就像功夫一样,唯快不破!(算法速度)
What is an object?
如何判别哪些region属于同一个物体?这个问题找不到一个统计的答案:
- 对于图b,我们可以根据颜色来分开两只猫,但是不能根据纹理来分开。
- 对于图c,我们可以根据纹理来找到变色龙,但是不能根据颜色来找到。
- 对于图d,我们将车轮归类成车的一部分,既不是因为颜色相近,也不是因为纹理相近,而是因为车轮附加在车的上面(个人理解是因为车“包裹”这车轮)
所以,我们需要用多种策略结合,才有可能找到图片中的所有物体。
另外,图a说明了物体之间可能具有的层级关系,或者说一种嵌套的关系——勺子在锅里面,锅在桌子上。
Multiscale
由于物体之间存在层级关系,所以Selective Search用到了Multiscale的思想。从上图看出,Select Search在不同尺度下能够找到不同的物体。
注意,这里说的不同尺度,不是指通过对原图片进行缩放,或者改变窗口大小的意思,而是,通过分割的方法将图片分成很多个region,并且用合并(grouping)的方法将region聚合成大的region,重复该过程直到整张图片变成一个最大的region。这个过程就能够生成multiscale的region了,而且,也符合了上面“物体之间可能具有层级关系”的假设。
Selective Search方法简介
- 使用Efficient GraphBased Image Segmentation中的方法来得到region
- 得到所有region之间两两的相似度
- 合并最像的两个region
- 重新计算新合并region与其他region的相似度
- 重复上述过程直到整张图片都聚合成一个大的region
- 使用一种随机的计分方式给每个region打分,按照分数进行ranking,取出top k的子集,就是selective search的结果
策略多样化(Diversification Strategies)
论文作者给出了两个方面的多样化策略:颜色空间多样化,相似多样化。
颜色空间多样化
作者采用了8中不同的颜色方式,主要是为了考虑场景以及光照条件等。这个策略主要应用于【1】中图像分割算法中原始区域的生成。主要使用的颜色空间有:(1)RGB,(2)灰度I,(3)Lab,(4)rgI(归一化的rg通道加上灰度),(5)HSV,(6)rgb(归一化的RGB),(7)C(具体请看论文【2】以及【5】),(8)H(HSV的H通道)
相似度计算多样化
在区域合并的时候有说道计算区域之间的相似度,论文章介绍了四种相似度的计算方法。
(1)颜色相似度
使用L1-norm归一化获取图像每个颜色通道的25 bins的直方图,这样每个区域都可以得到一个75维的向量,区域之间颜色相似度通过下面的公式计算:
在区域合并过程中使用需要对新的区域进行计算其直方图,计算方法:
距离的计算方式很简单,就是对各个通道计算颜色直方图,然后取各个对应bins的直方图最小值。这样做的话两个区域合并后的直方图也很好计算,直接通过直方图大小加权区域大小然后除以总区域大小就好了。
(2)纹理(texture)相似度
这里的纹理采用SIFT-Like特征。具体做法是对每个颜色通道的8个不同方向计算方差σ=1的高斯微分(GaussianDerivative),每个通道每个颜色获取10 bins的直方图(L1-norm归一化),这样就可以获取到一个240维的向量,区域之间纹理相似度计算方式和颜色相似度计算方式类似,合并之后新区域的纹理特征计算方式和颜色特征计算相同:
纹理距离计算方式和颜色距离几乎一样,我们计算每个区域的快速sift特征,其中方向个数为8,3个通道,每个通道bins为10,对于每幅图像得到240维的纹理直方图,然后通过上式计算距离。
(3)大小(size)相似度
这里的大小是指区域中包含像素点的个数。使用大小的相似度计算,主要是为了尽量让小的区域先合并:
如果仅仅是通过颜色和纹理特征合并的话,很容易使得合并后的区域不断吞并周围的区域,后果就是多尺度只应用在了那个局部,而不是全局的多尺度。因此我们给小的区域更多的权重,这样保证在图像每个位置都是多尺度的在合并。
(4)吻合(fit)相似度
这里主要是为了衡量两个区域是否更加“吻合”,其指标是合并后的区域的BoundingBox(能够框住区域的最小矩形(没有旋转))越小,其吻合度越高。其计算方式:
不仅要考虑每个区域特征的吻合程度,区域的吻合度也是重要的,吻合度的意思是合并后的区域要尽量规范,不能合并后出现断崖的区域,这样明显不符合常识,体现出来就是区域的外接矩形的重合面积要大。
最后将上述相似度计算方式组合到一起,可以写成如下,其中:
补充一点,参数初始化多样性
我们基于基于图的图像分割得到初始区域,而这个初始区域对于最终的影响是很大的,因此我们通过多种参数初始化图像分割也就是Efficient GraphBased Image Segmentation 的结果,也算是扩充了多样性。
如何对region打分?
这里我不是太确定,但是按照作者描述以及个人理解,觉得确实就是随机地打分。
通过上述的步骤我们能够得到很多很多的区域,但是显然不是每个区域作为目标的可能性都是相同的,因此我们需要衡量这个可能性,这样就可以根据我们的需要筛选区域建议个数啦。
这篇文章做法是,给予最先合并的图片块较大的权重,比如最后一块完整图像权重为1,倒数第二次合并的区域权重为2以此类推。但是当我们策略很多,多样性很多的时候呢,这个权重就会有太多的重合了,排序不好搞啊。文章做法是给他们乘以一个随机数,毕竟3分看运气嘛,然后对于相同的区域多次出现的也叠加下权重,毕竟多个方法都说你是目标,也是有理由的嘛。这样我就得到了所有区域的目标分数,也就可以根据自己的需要选择需要多少个区域了。
对于某种合并策略$j$,定义$r^{j}_{i}$为位置在$i$的region,其中i代表它在合并时候的所位于的层数(i=1表示在整个图片为一个region的那一层,往下则递增),那么定义其分数为$v^{j}_{i}=RND \times i$,其中$RND$为[0, 1]之间的一个随机值。
使用Selective Search进行Object Recogntion
大致流程如上图。用的是传统的“特征+SVM”方法:
- 特征用了SIFT,原博客是HoG和BoW
- SVM用的是SVM with a histogram intersection kernel
- 训练时候:正样本:groundtruth,负样本,seletive search出来的region中overlap在20%-50%的。
- 迭代训练:一次训练结束后,选择分类时的false positive放入了负样本中,再次训练
这里有比较通俗的说明:
通过前面的区域合并,可以得到一些列物体的位置假设L。接下来的任务就是如何从中找出物体的真正位置并确定物体的类别。 常用的物体识别特征有HOG(Histograms of oriented gradients)和 bag-of-words 两种特征。在穷举搜索(Exhaustive Search)方法中,寻找合适的位置假设需要花费大量的时间,能选择用于物体识别的特征不能太复杂,只能使用一些耗时少的特征。由于选择搜索(Selective Search)在得到物体的位置假设这一步效率较高,其可以采用诸如SIFT等运算量大,表示能力强的特征。在分类过程中,系统采用的是SVM。
特征生成
系统在实现过程中,使用color-SIFT特征(Evaluating color descriptors for object and scene recognition)以及spatial pyramid divsion方法(Spatial pyramid matching for recognizing natural scene categories)。在一个尺度下σ=1.2下抽样提取特征。使用SIFT、Extended OpponentSIFT(Illumination-invariant descriptors for discrimative visual object categorization,Technical report, University of Amsterdam)、RGB-SIFT(Evaluating color descriptors for object and scene recognition)特征,在四层金字塔模型 1×1、2×2、3×3、4×4,提取特征,可以得到一个维的特征向量。(注:对SIFT特征以及金字塔模型还不是很了解,讲得不是很清楚)
训练过程
训练方法采用SVM。首先选择包含真实结果(ground truth)的物体窗口作为正样本(positive examples),选择与正样本窗口重叠20%~50%的窗口作为负样本(negative examples)。在选择样本的过程中剔除彼此重叠70%的负样本,这样可以提供一个较好的初始化结果。在重复迭代过程中加入hard negative examples(得分很高的负样本)【9】,由于训练模型初始化结果较好,模型只需要迭代两次就可以了。(样本的筛选很重要!!)
评估(evalutation)
很自然地,通过算法计算得到的包含物体的Bounding Boxes与真实情况(ground truth)的窗口重叠越多,那么算法性能就越好。这是使用的指标是平均最高重叠率ABO(Average Best Overlap)。对于每个固定的类别 c,每个真实情况(ground truth)表示为 ,令计算得到的位置假设L中的每个值l,那么 ABO的公式表达为:
重叠率的计算方式:
上面结果给出的是一个类别的ABO,对于所有类别下的性能评价,很自然就是使用所有类别的ABO的平均值MABO(Mean Average Best Overlap)来评价。
参考资料:
【1】CSDN:Efficient Graph-Based Image Segmentation
【2】Selective Search
【3】CSDN:Selective Search for Object Recognition
【4】Recognition Using Regions
【5】Color Invariance
【6】Evaluating color descriptors for object and scene recognition
【7】Spatial pyramid matching for recognizing natural scene categories
【8】Illumination-invariant descriptors for discrimative visual object categorization,Technical report, University of Amsterdam(没有找到相关链接)
【9】Object detection with discriminatively trained part based models
【10】相关源代码(matlab)
【11】C++简版代码
【12】CSDN:Selective Search for Object Recognition
【13】CSDN:
图像分割—基于图的图像分割(Graph-BasedImageSegmentation)
之上是转载的一篇博客添加了部分缺少的内容,这里简单说明一下个人理解:
本文其实描述了一种图像识别定位的方法,和RCNN是一样的,而且RCNN方法也是基于该篇文章的方法。
1.根据Efficient GraphBased Image Segmentation给不同区域做出分割,也就是加上相应的label,如下图
3.SIFT特征作为输入,正负样本作为输出,用SVM做分类。样本选择方法上文有说明,可以看原文。
论文笔记 《Selective Search for Object Recognition》相关推荐
- 论文笔记之Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...
- 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...
- 论文笔记Understanding and Diagnosing Visual Tracking Systems
最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...
- 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems
Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...
- 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)
追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...
- ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记
目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...
- Understanding and Diagnosing Visual Tracking Systems
文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...
- CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...
- ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...
- CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记
理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...
最新文章
- selenium+python自动化84-chrome手机wap模式
- jmeter 控制器--Include Controller
- php js 比较大小写,JavaScript中如何实现大小写转换
- Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例
- boost::hana::detail::first_unsatisfied_index用法的测试程序
- 线程可见性和关键字volatile
- 读取.Properties配置文件
- ssm项目实战------------OA管理项目
- 【毕业设计】基于 stm32 的病房呼叫系统 - 物联网 嵌入式 单片机
- mysql中默认值_和comment_MySQL字段默认值踩坑记录
- 如何把pdf转换成excel呢?
- 四川大学计算机学院彭德中,四川省计算机学会
- [EGNN] Exploiting Edge Features for Graph Neural Networks 利用图神经网络的边特征 论文详解 CVPR 2019
- Sigil制作epub,正则表达式的使用
- 数据分析方法:非正态数据转化成正态数据
- java -p_javap使用实例图解
- CentOS7日志审计
- 矩阵与行列式的几何意义
- hexo×语雀 实现云端富文本写作
- 冰川融化的手工香皂:感想
热门文章
- 重磅,Kubernetes 决定弃用 Docker!
- 究竟什么样的简历才能拿到面试?
- 华为:鸿蒙OS要一统江湖!
- svn教程----eclipse的SVN插件使用
- 2021-10-16 集合(set)与映射(map) 恋上数据结构笔记
- 一天搞定CSS:边框border--02
- 使用java的HttpClient实现抓取网页数据
- 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.
- [转]查询oracle数据库的数据库名、实例名、ORACLE_SID
- [转]VirtualBox下RedHat 5.4 使用DVD光盘作为yum源