今天介绍 IJCV 2013 年的一篇文章,Selective Search for Object Recognition,这个是后面著名的DL架构 R-CNN 的基础,后续介绍 R-CNN 的时候,会发现 R-CNN 和这篇文章里介绍的算法非常类似。

做模式识别的人都知道,目标识别与目标检测是两个不同的东西,目标检测比目标识别要难得多,目标识别可以看做是一个分类问题,给定一张测试图,我们只要判断这张图里有没有某一特定的物体,而目标检测,需要在这张图上标出物体的具体位置,这可以看做是一个回归问题,不仅需要判断有没有,而且还要判断在哪里。

我们知道,同一类物体,在不同的图像中,会有不同的尺度,不同的位置,甚至会有不同的形状,所以,目标检测是要解决这样一个问题:

  • 如何在任意给定的一张图像中检测到某一物体,这种检测要克服尺度的变化,位置的变化以及形状的变化。

一种最直观的方案就是利用图像的分割,先把图像分割成一个个的区域,然后对分割之后的区域做判别,所以这篇文章最重要的贡献就是把一个回归问题转换成一个分类问题,结合了分割与搜索。

图像分割一直是图像处理领域非常基础却又非常重要的一个应用,简单来说,图像的分割就是一种聚类,把相似的像素聚到一起,这样就形成一个个不规则的区域。图像分割最大的难点就在于确定聚类的准则,因为不同的准则,最终得到的结果会不同。

图像分割的精准与否,又会影响到最终的检测结果,所以这篇文章利用了一个 Hierarchical Grouping 的策略对图像进行聚类分割,简单来说,就是先对图像做一个初步的分割,把图像先分割成很多细碎的小区域,然后利用一些准则,将这些小区域再合并成大区域。文章里面,考虑了区域的相似性,设计了四种判别准则,分别是颜色,纹理,尺寸以及填充度。

颜色相似性

为了统计颜色的相似性,这里还是要用到颜色直方图的概念,我们知道彩色图像有 R,G,B 三个通道,每个通道应该是 0−255 共 256 个灰阶,为了简化运算,文章将 256 个灰阶先合并成 25 个灰阶,所以每个颜色通道是 25 个灰阶,三个颜色通道一共 75 个灰阶,将这75个灰阶先做一个统计,然后做一个归一化,就是这个区域的颜色直方图。两个区域的颜色相似性,就是比较两个区域的颜色直方图,将值较小的进行累加,得到最终的相似度,如下所示:

Scolor(ri,rj)=∑nk=1min(cki,ckj)

颜色直方图的一个好处是当两个区域合并的时候,新合并的区域的颜色直方图可以很快速的计算得到:

Ct=Nri×Ci+Nrj×CjNri+Nrj

Nri,Nrj 表示区域 ri,rj 的像素个数,

纹理相似性

为了统计纹理的相似性,文章用了高斯滤波,对每个区域做一个高斯滤波,高斯滤波一共有 8 个方向,将滤波后的区域做一个直方图统计,合并成 10 个 灰阶,所以 8个方向的高斯滤波生成了 80个灰阶,三个通道一共是 240个灰阶,同样要做归一化,再利用类似的公式计算纹理相似性:

Stexture(ri,rj)=∑nk=1min(tki,tkj)

尺寸相似性

这个准则是为了让小区域先合并,尺寸相似性的计算如下:

Ssize(ri,rj)=1−Nri+NrjNimg

Nri,Nrj 表示区域 ri,rj 的像素个数,Nimg 表示整张图像的像素个数。

重叠度

这个准则衡量两个区域的交集,重叠的部分有多少,这个准则的计算如下:

Sfill(ri,rj)=1−NBBij−Nri−NrjNimg

NBBij 表示包围区域 ri,rj 的最小区域, 从这个表达式可以看出,如果两个区域靠的越近,则 Sfill 越大,说明这两个区域越应该被合并。

最终的相似度,是这四个准则的线性叠加:

S(ri,rj)=a1Scolor(ri,rj)+a2Stexture(ri,rj)+a3Ssize(ri,rj)+a4Sfill(ri,rj)

确定了相似性的度量准则,接下来,我们就是要对区域进行合并,具体的算法如下所示:

先利用一个分割算法,对图像进行初步的分割,得到一个分割区域的集合 R={r1,r2,...,rn},然后把所有的分割区域进行标记,接下来,对所有的区域两两之间计算相似性,所有的相似性度量可以组成一个集合 S。

接下来:

1) 从集合 S 中挑选相似性度量最大的一个 s(ri,rj)

2) 将区域 ri,rj 进行合并得到 rt

3) 将集合中含有 ri,rj 的的相似性度量都去除

4) 计算 rt 与其相邻区域的相似性,得到一个有关 rt 与其相邻区域的相似性度量集合 St

5) 将 St 与剩下的 S 合并

6) 将 R 与 rt 合并

如果 S 为非空集合,返回第一步,继续计算。

最后,可以提取出目标物体的一个矩形区域。

接下来,就是特征提取和训练了,这里用到的特征是 SIFT 加 BoW, 具体的流程如下所示:

机器学习:Selective Search for Object Recognition的更多相关文章

  1. 【计算机视觉】Selective Search for Object Recognition论文阅读3

    Selective Search for Object Recoginition surgewong@gmail.com http://blog.csdn.net/surgewong       在前 ...

  2. Notes on 'Selective Search For Object Recognition'

    UijlingsIJCV2013, Selective Search For Object Recognition code 算法思想 利用分割算法将图片细分成很多region, 或超像素. 在这个基 ...

  3. 论文笔记:Selective Search for Object Recognition

    与 Selective Search 初次见面是在著名的物体检测论文 「Rich feature hierarchies for accurate object detection and seman ...

  4. 目标检测--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. ...

  5. Selective Search for Object Recognition

    http://blog.csdn.net/charwing/article/details/27180421 Selective Search for Object Recognition 是J.R. ...

  6. [论文理解]Selective Search for Object Recognition

    Selective Search for Object Recognition 简介 Selective Search是现在目标检测里面非常常用的方法,rcnn.frcnn等就是通过selective ...

  7. 【计算机视觉】Selective Search for Object Recognition论文阅读2

    Selective Search for Object Recognition 是J.R.R. Uijlings发表在2012 IJCV上的一篇文章.主要介绍了选择性搜索(Selective Sear ...

  8. 【计算机视觉】Selective Search for Object Recognition论文阅读1

    Selective Search for Object Recognition 作者: J. R. R. Uijlings, K. E. A. van de Sande, T. Gevers, A. ...

  9. Selective Search for Object Recognition 论文笔记【图片目标分割】

    这篇笔记,仅仅是对选择性算法介绍一下原理性知识,不对公式进行推倒. 前言: 这篇论文介绍的是,如果快速的找到的可能是物体目标的区域,不像使用传统的滑动窗口来暴力进行区域识别.这里是使用算法从多个维度对 ...

随机推荐

  1. mha安装报错 [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln361] None of slaves can be master. Check failover configuration file or log-bin settings in my.cnf

    查找资料 参考 http://blog.51cto.com/16769017/1878451 解决方法: 在两个从库上开启二进制日志即可(花了 一天时间,找不到解决方法,最后还是靠自己的理解及测试解决 ...

  2. 监听iOS检测屏幕旋转状态,不需开启屏幕旋转

    -(void)rotation_icon:(float)n { UIButton *history_btn= [self.view viewWithTag:<#(NSInteger)#>] ...

  3. (八)jQuery中的事件

    1.加载DOM在常规的JavaScript中,使用window.onload方法:而在jQuery中,使用$(document).ready(function(){ })方法.window.onloa ...

  4. 七款做好DevOps的强大工具

    原文链接: 7 cool tools for doing devops right 传统把开发和运营割裂开的做法,实则不适合现代产品和服务开发的需求,如今把开发和运营作为整体来看待的DevOps工程思 ...

  5. C语言批量数据到动态二维数组

    上一篇文章将文件读取放到静态创建的二维数组中,可是结合网络上感觉到今天的DT时代,这样批量大量读取一个上百行的数据,分配的内存是否可能由于大量的数据而产生溢出呢,近期一直研究里malloc函数.通过它 ...

  6. jdbcTemplaate queryForObject的两个易混淆的方法

    JdbcTemplate中有两个可能会混淆的queryForObject方法: 1.    Object queryForObject(String sql, Object[] args, Class ...

  7. PHP中__get()和__set()的用法实例详解

    php面向对象_get(),_set()的用法 一般来说,总是把类的属性定义为private,这更符合现实的逻辑.但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__ge ...

  8. 目标检测之hog(梯度方向直方图)---hog简介0

    梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功 ...

  9. Hadoop常见异常及其解决方式

    1.Shell$ExitCodeException 现象:执行hadoop job时出现例如以下异常: 14/07/09 14:42:50 INFO mapreduce.Job: Task Id : ...

  10. linux 读取文件信息并且输出

    版权为个人所有,欢迎转载如转载请说明出处.(东北大亨) http://www.cnblogs.com/northeastTycoon/p/5513231.html 以下为读取文件信息做输出操作. 1. ...