论文笔记 《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方法简介

  1. 使用Efficient GraphBased Image Segmentation中的方法来得到region
  2. 得到所有region之间两两的相似度
  3. 合并最像的两个region
  4. 重新计算新合并region与其他region的相似度
  5. 重复上述过程直到整张图片都聚合成一个大的region
  6. 使用一种随机的计分方式给每个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,如下图

论文代码在mathwork上有

https://ww2.mathworks.cn/matlabcentral/fileexchange/25866-efficient-graph-based-image-segmentation?s_tid=srchtitle

2.步骤1中的区域分割结果其实有时是过分割了的,可能是将同一物体分割成了两部分甚至更多部分,所以在对图像识别定位前,希望得到一些备选的区域(备选区域中有比较准确分割的区域),希望识别目标区域实际上在第1步中可能是占有了好几个区域了的,所以我们希望将较相似的区域合并,合并的过程中会出现目标区域的较准确的分割,这里合并的合理选择就有了必要,然后这里就有了计算两个区域相似度的部分,优先选择相似度高的区域合并,合并后重新计算出相似度,再次合并直到合并到只剩一个区域即原始图像。这里相似度计算由四个部分组成,可以看上文或者原文。合并的方式如下:

可以看到备选的区域集就是R,R记录下了每步相似度最高的聚合的区域。其实到这里,备选区域的选取就已经完成了,也就是论文题目中的Selective Search,也是RCNN中用到的,后续用SVM对Sift算子对区域进行区域识别,而RCNN则是使用CNN进行区域识别。

3.SIFT特征作为输入,正负样本作为输出,用SVM做分类。样本选择方法上文有说明,可以看原文。

论文笔记 《Selective Search for Object Recognition》相关推荐

  1. 论文笔记之Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...

  2. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  3. 论文笔记Understanding and Diagnosing Visual Tracking Systems

    最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...

  4. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...

  5. 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)

    追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...

  6. ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...

  7. Understanding and Diagnosing Visual Tracking Systems

    文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...

  8. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...

  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...

  10. CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...

最新文章

  1. selenium+python自动化84-chrome手机wap模式
  2. jmeter 控制器--Include Controller
  3. php js 比较大小写,JavaScript中如何实现大小写转换
  4. Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例
  5. boost::hana::detail::first_unsatisfied_index用法的测试程序
  6. 线程可见性和关键字volatile
  7. 读取.Properties配置文件
  8. ssm项目实战------------OA管理项目
  9. 【毕业设计】基于 stm32 的病房呼叫系统 - 物联网 嵌入式 单片机
  10. mysql中默认值_和comment_MySQL字段默认值踩坑记录
  11. 如何把pdf转换成excel呢?
  12. 四川大学计算机学院彭德中,四川省计算机学会
  13. [EGNN] Exploiting Edge Features for Graph Neural Networks 利用图神经网络的边特征 论文详解 CVPR 2019
  14. Sigil制作epub,正则表达式的使用
  15. 数据分析方法:非正态数据转化成正态数据
  16. java -p_javap使用实例图解
  17. CentOS7日志审计
  18. 矩阵与行列式的几何意义
  19. hexo×语雀 实现云端富文本写作
  20. 冰川融化的手工香皂:感想

热门文章

  1. 重磅,Kubernetes 决定弃用 Docker!
  2. 究竟什么样的简历才能拿到面试?
  3. 华为:鸿蒙OS要一统江湖!
  4. svn教程----eclipse的SVN插件使用
  5. 2021-10-16 集合(set)与映射(map) 恋上数据结构笔记
  6. 一天搞定CSS:边框border--02
  7. 使用java的HttpClient实现抓取网页数据
  8. 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.
  9. [转]查询oracle数据库的数据库名、实例名、ORACLE_SID
  10. [转]VirtualBox下RedHat 5.4 使用DVD光盘作为yum源