一维傅里叶变化定义如下:
其中,f 为输入信号,ξξ 表示分解得到的各个波的频率,f̂ (f,ξ)f^(f,ξ) 为变换后的信号。公式中的 e−i2πxξe−i2πxξ 表示一个复数波
一维 Gabor 核
一维Gabor核由一个高斯核与一个复数波的乘积定义:
其中,
将复数波s(t)=ei(2πf0t)s(t)=ei(2πf0t)代入式中,得到:
上面最后一步得到了 Gabor 核的复数表示,我们就可以按实部和虚部将其拆分为实核和虚核,在很多应用中,我们只需要应用 Gabor核的实数部分即可:
Gabor 核的傅里叶变换
将 Gabor 核套入一维傅里叶变换中,得到 Gabor 核的傅里叶变换
上式中出现了 ω̂ (f−f0/a) 的形式,这里需要补充高斯核一个很有趣的性质:ω̂ (f)=ω(f)=e^−πf^2。根据这个性质,上式中的 ω̂ (f−f0/a)也可以写作 ω(f−f0/a),二者可以自由转换。
Gabor核傅里叶变换后是这样一个形式:
这个形式可以看做是一个复数波,它的幅度
Gabor核相当于在频率域应用了一个高斯核窗口。假设我们这时有了一个信号的频率域:fin(f),那么我们直接用频率域的Gabor核 Gabor^ 与其相乘,就实现了对 f0 频率邻域范围内的滤波效果:输入信号频率离这个 Gabor 核的 f0 越远,则乘上Gabor核之后的结果就越小,尤其是当 fin 在 f0 的 3σ 区间外时,这个频率几乎可以忽略不计。于是,最终能保留下来的信号就都是 f0频率附近的信号了。
滤波公式:
给我们任意一个输入信号,我们先用傅里叶变换将其变换到频率域得到fin^,再用 Gabor 核的傅里叶变换结果与之相乘,就是频域滤波的结果了。
不过我们大可不必这么麻烦,因为有卷积定理:
gabor特征:
用 Gabor 核和输入信号卷积就可以得到输入信号在某频率邻域附近的响应结果 响应结果来实现频域滤波,又可以用它来描述信号的频率信息。Gabor特征就是用Gabor核来描述信号的频率信息,从而作为信号的特征的。二维复数波
于初始相位对Gabor核影响不大,因此可以将其省略
二维高斯函数
考虑全面的话,高斯函数还要有(顺时针)旋转
所以,
二维的Gabor核
二维高斯函数与二维复数波相乘
各个参数含义如下:
(x0,y0): 高斯核的中心点θ: 高斯核的旋转方向(顺时针)(σx,σy): 高斯核两个方向上的尺度(u0,v0): 频域坐标K: 高斯核的幅度(magnitude)的比例介绍
通常有8个方向,5个尺度
从图1a和图2a可以清楚看出,每一列为尺度变化,一共有5个尺度。每一行为方向变化,一共有五个方向。
例子
把人脸图像分别用对应的实部虚部滤波器进行滤波,再进行平方相加开根号。就可以得到人脸的Gabor特征了,如图2待提取的人脸图像
优化
这个特征太大!(1)不适合存储。(2)有很多不需要的特征,导致维数灾难。
一种特征降维的方法,称为pooling池化,
1)对特征图可以进行max pooling | mean polling |Stochastic-pooling
mean-pooling
即对邻域内特征点只求平均:假设pooling的窗大小是2x2, 在forward的时候,就是在前面卷积完的输出上依次不重合的取2x2的窗平均,得到一个值就是当前mean pooling之后的值。backward的时候,把一个值分成四等分放到前面2x2的格子里面就好了。举例:
forward: [1 3; 2 2] -> [2] backward: [2] -> [0.5 0.5; 0.5 0.5]
max-pooling
即对邻域内特征点取最大。forward的时候你只需要把2x2窗子里面那个最大的拿走就好了,backward的时候你要把当前的值放到之前那个最大的位置,其他的三个位置都弄成0。举例:
forward: [1 3; 2 2] -> 3 backward: [3] -> [0 3; 0 0]
Stochastic-pooling
通过对像素点按照数值大小赋予概率,再按照概率进行亚采样,在平均意义上,与mean-pooling近似,在局部意义上,则服从max-pooling的准则 只需对feature map中的元素按照其概率值大小随机选择,即元素值大的被选中的概率也大。而不像max-pooling那样,永远只取那个最大值元素
例子
假设feature map中的pooling区域元素值如下:
3*3大小的,元素值和sum=0+1.1+2.5+0.9+2.0+1.0+0+1.5+1.0=10 方格中的元素同时除以sum后得到的矩阵元素为:
每个元素值表示对应位置处值的概率,现在只需要按照该概率来随机选一个,方法是:将其看作是9个变量的多项式分布,然后对该多项式分布采样即可,theano中有直接的multinomial()来函数完成。当然也可以自己用01均匀分布来采样,将单位长度1按照那9个概率值分成9个区间(概率越大,覆盖的区域越长,每个区间对应一个位置),随机生成一个数后看它落在哪个区间。
比如如果随机采样后的矩阵为:
则这时候的poolng值为1.5
使用stochastic pooling时(即test过程),其推理过程也很简单,对矩阵区域求加权平均即可。比如对上面的例子求值过程为为:
在反向传播求导时,只需保留前向传播已经记录被选中节点的位置的值,其它值都为0,这和max-pooling的反向传播非常类似。
比较
特征提取的误差主要来自两个方面:
(1)邻域大小受限造成的估计值方差增大;
(2)卷积层参数误差造成估计均值的偏移。
mean-pooling能减小第一种误差,更多的保留图像的背景信息, max-pooling能减小第二种误差,更多的保留纹理信息。应用
窗口滑动卷积的时候,卷积值就代表了整个窗口的特征。因为滑动的窗口间有大量重叠区域,出来的卷积值有冗余,进行最大pooling或者平均pooling就是减少冗余。
平移不变性 如果人们选择图像中的连续范围作为池化区域,并且只是池化相同(重复)的隐藏单元产生的特征,那么,这些池化单元就具有平移不变性 1、连续范围 2、池化相同隐藏单元产生的特征
而平移不变性,就是一个特征,无论出现在图片的那个位置,都会识别出来。所以平移不变性不是pooling带来的,而是层层的权重共享带来的。
2)
关键点采样(SIFT,SURF关键点都可以)定点采样,坏处在于不知道采的特征是否具体代表性。Adaboost等方法特征选择方法选择特征。gabor特征其实就是gabor核跟输入信号卷积,得到的相应结果实现频域滤波,作为信号的特征。
通常使用一系列不同频率的gabor核与图像卷积,得到图像上的每个点和附近区域的频率分布。
