秋雨思童年,落花念爱霖!一场秋雨的洗礼,让我们进入了真正能感觉得到的秋季。秋季是丰收的季节,不知朋友您收获如何?但是我相信您一定硕果累累,满载着各种成果、业绩和快乐继续向下一个目标努力前行。
今天我们来谈谈深度学习过程中的一些判别与共享关系。这也是一篇不错的paper(来自模式识别),并且通过实现和改进真的可以有一个较好的提升。
在图像表示中,为了编码类的相关性和类的具体信息,文章提出了一个深度判别和可共享的特征学习一个新局部特征的学习方法。该方法旨在分层学习特征变换滤波器组,将原始像素图像块变换为特征。
所学习的滤波器组被期望为:
(1)编码一些合适数量类别的普通图像;
(2)编码判别信息;
(3)在不同视觉等级分层提取图案。
特别是,在新框架的每一层,可共享的滤波器共同学习那些相似模式的类。滤波器的判别能力,通过使同一类的特征更加相近,而不同类的特征彼此远离来完成的。此外,还提出了两种选择方法的模型,为了更有效地迭代选择训练数据和有效地学习。根据实验结果,新框架可以达到非常有好的性能。
现在特征学习方法目的在于从原始像素图像数据中去自动学习数据自适应图像表示,然而这些方法在数据中提取和组织判别信息较差,大多数的学习框架都用无监督方式,但没有考虑到类标签的信息,这可是图像分类的关键。所以提出了在已存在的类别组中编码可共享信息,且判别模式在特征学习过程中拥有具体类。
于是建立一个多层特征学习框架:深度判别和共享的特征学习。
目的:分层学习变换滤波器组去将局部图像块的像素值变换为特征。在下图中,每一个特征学习层,目的是去学习一个过完备滤波器组,其可能涉及到不同类的块差异,同时在相似类中保持共享相关性和每一个类的判别力。直观地,这目标可以通过随机寻找训练块,对每个类单独学习滤波器组,然后连接在一起来完成。
但是有3个问题:
有些模式在一些类中是共享的,重复学习滤波器相当于类似的模式既没有内存压缩也没有效计算,同时特征维度随着类的数量成线性增长;
判别力不能被充分利用,因为类的具体特征是普遍的且不明显,不需与其他类比较;
图像被噪声和无意义的块影响,从随机采样的图像块中学习滤波器将会增加学习成本并降低性能。
训练过程:
a)原始图像输入或前层特征的输出,稠密提取图像块或局部特征(黄色块);b)选择样本训练(红色快);
c)进行新框架训练模块并学习滤波器组。
测试过程:
d)应用所学习的滤波器组W到原始输入图像或前层特征,对当前层稠密提取新框架特征;
e)进行LLC和SPM,然后变换局部特征到全局图像表示,并应用线性SVM去做最后的分类。
在新框架模块中,在全局滤波器组W中w1,w2,...,wD表示滤波器。在训练步骤,对于每一层,强制它去激活一个小子集的滤波器(被激活的滤波器已经用不同颜色强调),不同类可以分享相同的滤波器。最后,一个图像块Xi的新框架特征可以表示为fi=F(WXi)。
为了学习紧致和有效的滤波器组,在学习过程中,每一类都只能激活全局滤波器的一个子集。除了减小特征维度,共享滤波器也可以导致特征更鲁棒。图像属于不同类但是分享了相同的信息(例如在图像中,计算机房和办公室都含有电脑和桌子)。信息共享的数量取决于不同类之间的相似性。所以允许滤波器可以共享,意味着相同的滤波器可以通过一些类被激活。于是引入了一个二进制选择向量去自适应选择哪一个滤波器去共享并在哪类中。
为了提高判别力,强制将来自相同类的特征去更接近,将来自不同类的特征去远离。(例如,与办公室里书架相对应的块在计算机房很难找到)。然而来自相同类的局部块是非常多样化的。
因此,提出去测量相似性,通过强制一个块相似于相同类训练样本的一个子集。与此同时,不是所有不同类的局部块都需要分离。因此减少判别条件,允许通过不同类去共享相似的块,重点分离不相似的块。
为了提高滤波器的质量和学习过程的效率,提出两个样本选择方案去选择有效地训练数据。所提出的方法目的是去除普遍存在于不同类的训练块的噪声,并选择包含共享和判别的模式作为训练数据去学习滤波器组。拓展单层特征学习模块到分层结构。建立了3层学习框架。在结构中,先从小的原始像素值图像块(16x16)学习特征;然后对于更高的层,用一个大的区域(32x32和64x64,分别为第二层和第三层)卷积前层特征作为输入去PCA,并用降维数据(设置所有层维度都是300)作为输入去训练当前层的滤波器组(设置每一层去学习400个滤波器);最后结合3层所有学习到的特征作为新框架特征。
特征学习
直接从图像像素值中学习特征已经形成了热门的研究。这些方法能够学习数据自适应特征,它们很容易被扩展到分层结构中并学习多层图像的表示。
大多数都采用无监督方法去学习滤波器为了特征提取,但是该文章坚信判别信息才是分类的关键,并且判别的模式可以被学习用于图像表示;
ConvNets主要集中在逐步学习多层视觉模式,该文章的新框架主要集中在编码共享和判别的不同类的相关性到每一层的特征变换;
许多深度特征学习框架专注于高层图像表示,低层特征相对较弱,但该文章的新框架专注于编码类层次判别和共享的特性在块层次的局部特征。
判别训练
新框架专注于判别的学习滤波器,其将局部图像块变换为特征,并允许共享不同类之间的局部特征变换滤波器。所提出的样本选择方法可以得到更多提供信息的局部块层次的训练数据对于特征学习模块。
有些作者,在中层的目标部分滤波器被共享去表示大量的目标类对于目标检测,但是该文章只用弱监督图像层标签,并建立一个基于近邻的最大边缘方法去学习判别的特征变换矩阵。
深度判别和共享的特征学习
详细介绍新框架,然后提供一个交替优化策略。
单层新框架学习构成
全局无监督项
为了确保学习的滤波器组能够在原始数据进行特征变换后保存信息,引入全局构建项并建立一个自动编码:
共享模式学习项
上述全局无监督项可以达到较好的结果,但类信息没有被利用,类信息也是分类关键的问题,因此提出编码共享信息,其存在相似类之间,利用这些类的训练数据去共同学习共享的滤波器。
为实现目标,对每个类引入稀疏二进制向量ac∈RD去指示 每行的选择状态,类c的共享约束项如下:
其中,Wc表示类别c选定的滤波器,Nc是类c训练块的数量。||ac||0项是用来强制稀疏,所以只有少数W的行被激活。
算法1:深度判别和共享特征学习
判别信息编码项
为了增强特征的判别力,进一步引入一个假设项,就是判别特征应该更接近相同类的特征。假设三个状态{Xi,Xi+,Xi-},其中Xi表示训练块,Xi+表示从相同类随机选择的“正”块,Xi-表示从另一些类随机选择的“负”块,采用基于‘块到类(patch-to-class)’距离度量的最近邻方法。
其中K表示为最近邻块集合中最近邻的数量,本文固定其为5,且δ表示为间隔,该文章设置它为1。
优化新框架目标函数
结合上述三个学习构成,构成完整的新框架目标函数:
需要同时优化全局滤波器变换矩阵W和类的具体滤波器选择向量ac。该函数不能同时优化,如果固定其中一个,则目标函数成为凸函数。于是本文采用一个交替优化策略去迭代更新W和ac。
样本选择模型
学习特征不仅依赖于学习结构与参数,而且还依赖于输入数据的质量。为了选择训练块集,且其含有潜在的共享和判别模式,同时也不包括常见的噪声块。为了这个目的,提出两个有判别的样本训练数据选择方法:最近邻法(NN)和支持向量机(SVM)。
1) 最近邻法(NN)
本文选择最近邻方法去删除在许多类可能普遍存在的块,定义最后的“到达分数”如下:
2)SVM
SVM方法比NN方法快且内存消耗小,但是有较小的性能下降。用线性SVM去迭代改善选择方法对于每一次聚类,主要有2步骤:
基于NN与基于SVM样本选择对比
做了简单的比较:性能、计算成本和内存成本
1)性能:NN有1-3%的提升、SVM有0.15-1.5%的提升;
2)计算成本:对于NN最耗时是算法2中的第一步:覆盖集搜索,对于SVM最耗时的是算法3中的第2、3步:SVM训练和测试最耗时,但是采用了GPU并行计算,简短很多时间,所以SVM耗时少;
3)内存成本:对于NN,需要所有训练块都在内存中,为了让每一个块被覆盖集搜索到,为了减低内存成本,我们被X分成几个子群,
NN的方法可以达到较高的精确度,但是SVM方法可以处理速度快且用较小的内存成本,但是性能会有一点下降。
实验与分析
数据集和实验设置
数据集:Scene 15、UIUC Sports和MIT Indoor
1)Scene 15:包括4485张图像,15类室外与室内场景图,每一类有200-400张灰色图像。每一类用100张训练,其余测试;
2)UIUC Sports:包括1579张图像,8类体育分类,每一类包括137-250张图像。每一类用70张训练,其余测试;
3)MIT Indoor:包括15620张图像,67类室内场景。每一类用80张训练,20张测试;
4)PASCAL VOC 2012:有5717张训练图像包括了13609个目标,有5823张验证图像包括了13841个目标。一共有标签图像11540,没有用额外的训练数据。在测试过程中,10991未标签的图像被提供,通过上传分类的分数到PASCAL VOC评估服务器得到分类结果。
为了变换局部特征到全局图像表示,利用LLC框架和SPM。相结合可以导致良好的分类结果。
LLC:利用局部约束线性编码去编码局部特征,进行最大池化和线性SVM;
SPM:利用粗糙的空间结构信息,把来自不同空间池化区域的池化特征全部链接。
与其他特征比较
1)hang-crafted 特征:SIFT、HOG、LBP、GIST和CENTRISY;
2)无监督方式的基本特征,没有编码判别或共享信息,用随机权重和RICA方法来提取特征;
3)先进的Caffe特征。
可视化比较:
左边为重构独立成分分析,右边为新框架模型。
最终的结果(VOC 2012):
Github稍后就会共享一些简答的源码实现。敬请期待!