计算机视觉论文笔记三:核描述子在计算机视觉上的应用Kernel Descriptors for Visual Recognition

  • 2010,nips

  • 摘要

  • 方向直方图的核观点等价于对image patchs计算特定种类的match kernel
  • 把像素的特征,团起来给patch
  • 这个特定种类有三种
  • 再把这个match kernel 用kernel principle component analysis(KPCA)压缩下维度,别那么大,成为我们的主角,核描述子
  • 优点就是核描述子易于设计,并且任何类型的像素级特征都能转化成核描述子

Introduction

要得到核描述子,分为如下三步:

  1. 用像素特征设计match kernels
  2. 通过kernel principle component analysis(KPCA)学习到压缩基础向量(compact basis vector)
  3. 把无穷维度的特征向量映射到刚才提到的基础向量(basis vector)

手工特征不好提取因为图片的空间扰动,比方说正面侧面,有很强的结构性,并且完美的传说中的特征向量维度很高。

  • 之前说的三种特征,本片论文是:梯度,颜色,形状的像素特征。
  • 最相关的工作是efficient match kernels,如果对于手工特征很感兴趣,可以看下论文

梯度直方图的核观点(要是着急可跳过 You jump, I jump,实际是skip)

不讲故事,直接来。

  • 什么是梯度直方图

像素z和他周围的像素颜色可能相同,可能不同,找个差别最大的连起来,这个向量,当作该像素点对于颜色的梯度(注意有大小有方向)。现在我取比方说3*3块内的像素的颜色梯度,每个像素都去投票,比如说我把360度分成4块(orientation binning),你的梯度在哪块,那个块就加一,这样把九个像素投好票,我就有一个直方图,横坐标是四,纵坐标加起来是九。简单粗暴,但是科学研究变量很多,比如说你可以把360度分成9块,比如说你可以取1600个像素,比如说你可以和离你4步远的像素计算梯度。所以我就是举个例子说明什么是梯度直方图。

  • 再说说我们论文具体怎么表示

  • d维向量还有公式(1)怎么用呢,比方说你分成了四块,落在第一块(1,0,0,0),落在第二块(0,1,0,0),以此类推。
  • 2  公式(2)做了一个向量长度,模,magnitude二范数规格化。问题是所有的加起来不等于1,为什么不直接用sum(m[z])+constant,也就是一范数。Fh(P)举个例子(0.2,0.3,0.1,0.1).

这些是hard binning(360度分成四块四个bin),理解下,真正用的是soft binning。公式(3)开始

  • 一种距离就是一种空间,比方说三维线性空间的二范数距离(二次方直线距离)也可以说是和空间的线性距离。
  • 3  现在衡量两个patch之间距离的公式就是公式(3),虽然是核函数,这个公式是可算的,就是实数乘法和向量内积,别害怕。
  • 从hard到soft只差一个公式一的距离

ai是bin的中心

  • 公式(4)怎么看:我们知道只有cos(-pi/2,pi/2)>0,所以梯度在bin中心左右直角范围内,都有值,越近越大,不过有个9次方,限制了方差。换句话说,对于一个梯度向量,只有他左右90度以内的bin有数值。

现在,梳理下:

  1. 像素梯度delta是二维的,长度是m
  2. patch向量是d维的,d大小等于bin的个数,改向量的模和像素梯度的模有关,不过被二范数规格化了,于是patch向量模为1
  3. 两个patch的相似度用它们两个像素的核函数来计算,核函数计算方式就是公式(3)
  4. hard binning不如soft binning光滑,但是soft仍旧是离散的只改变了像素梯度向量,实际上还是90度以内的bin才有值。公式(3)求内积,hard会导致只要不在一个bin,数值就是0.soft好一些。


3  核描述子(别跳 You jump, I stay)

3.1  Gradient , color, and shape match kernels

在某个空间里,有特征的完美表达形式,它具有区分度,能让我们的识别率达到近似百分之百,可惜,找不着。但我们曲线救国。通过核。

简单说下核的概念:想算两个像素高维特征(传说中的)之间相似性,但是完美映射到高维空间这个映射函数(看图),我找不着,那我就不能提取这个高维特征。后来我发现,直接用低维空间特征比方说,像素颜色三维,整吧整吧,就得到高维空间的特征距离了。φ不好写。所以用f来表示高斯核函数。K(color(z),color(z'))=f(z)f(z').


不过其实我想要的是单纯的f(z).但是得不到,所以只能退而求其次拉上个小伙伴。想知道更多可以看这里

  • 梯度match kernel

  • 位置核

衡量两个像素离得远近


z是patch中规格化的位置,二维向量,ie (0.3,0.6)

  • 梯度核

衡量两个像素的方向梯度相似度

不知道theta(z)怎么求?看下图:


这个方括号,是向量的意思,这也是个二维向量。先看(6),我们用图说话:


左图高中数学知识,你看,把theta加个z,表示是对z这个像素的数值,是不是就和我们的公式(6)一毛一样。公式(6)衡量了一个像素的方向orientation,那么两个像素之间的距离(蓝色向量长度)可以计算核函数了。

右图是local binary pattern.

注意到theta的模都被规格化成1了,向量规格化后,45度就不再是pi/4,(1,1), (2,2), 而是(sqrt(2),sqrt(2))了。所以务必规格化。

  • 规格化梯度模核normalized linear kernel

衡量像素对patch的贡献,和之前的一样一样的。数值大,说明这两个像素的差异对于两个patch差异影响大。

  • 颜色match kernel


以上这些都是可算的,没有上升到核函数的概念。下面将讨论核函数。但是本质上来讲只是为了说明合理性,或者是尽量具有说服力。所以领会精神就好。别害怕。


  • local binary pattern match kernel(shape 形状)

反映了以像素z为中心,3*3这块区域的形状,和像素z'为中心,3*3这块区域形状的差异。常数s(z)提取自z周围的偏差,我觉得是方差。向量b(z)是一个八维向量(1,1,0,1,0,0,1,1).




3.2  learning compact features

虽然我们已经表达出来两个patch相似性的度量方法:match kernel。但素鱿鱼计算代价昂贵,必须压缩下向量维度。公式(5)里面的展开成这样:


不要害怕,这个公式是内积,就是不能算而已,领会精神,投影到传说中的高斯特征向量空间里的内积。


公式(9)是拆出来的。从下面这个式子里,把patch P的部分单独拿出来,由于用了高斯核函数phi,fi,fai映射函数:

所以Fgrad(P)在无限维空间里。

左边是含有高斯核函数的向量内积,右边是常数,是我们熟悉的K(3.1)。

我们还是在和match kernel玩耍。只不过引入了核函数的概念。核函数要被我们表达成K,match kernel.

用有限维近似

空间坐标基底这个线代知识没忘吧?把Fgrad(P)向坐标基底分解就好啦((3,3)=3*(1,0)+3*(0,1))。基用像素特征找。



这个basis vector是x的高斯核函数投影高维向量,不过我们用采样到的,规格化的梯度向量去拟合它。

虽然x是二维的,但我们不要这个二维的,我们要d维的。也就是用d个二维向量x去生成d维的向量k0,然后去拟合无限维度的高斯核函数。公式(10)就是这个从二维到d维的过程。

为什么不从无限维到d维,因为具体数据在二维,而无限维只是一个概念,为了说明合理性的模型。

把有限维的近似在进行压缩

即使我们得到了大F,match kernel依旧是维度太高。

比方说,我们有256个shape(local binary pattern)的基向量(0,1,0,0,0,0,0,0),假设一个grid是5*5的,那么就是256*5*5=6400的维度,25指的是位置向量,25个格子,就有25种(0.4,0.4)(0.08,0.08)这样。密集的采样使我们得到了更全面更准确的无限维度近似,但不保证向量正交,也就是正交基,没有冗余。所以为了效率必须压缩。


我们采用KPCA(kernel principal component analysis)核主成份分析。一句话概括就是:

向量alpha的所有元素利用线性组合a1得到一个常数作为新向量beta的一个元素,再利用线性组合a2得到一个元素,想要多少个元素,就用多少线性组合。线性组合系数的选取包含了你的目的,比如说pca是使数据散布的最开,差异最大,方差最大。

推荐一个讲得比较好的pca,kpca视频,只需要高中知识:需要科学上网,但是中文讲解

https://www.youtube.com/watch?v=G2NRnh7W4NQ&t=1s


压缩好的向量中第t个数值,是之前其他向量元素的线性组合。


所以我们的最终形式就是:


猜你喜欢

转载自blog.csdn.net/u013249853/article/details/80002205
今日推荐