焦健雄,孙利雷,徐 勇
1(电子科技大学 信息与通信工程学院,成都 610054)
2(贵州大学 贵州省公共大数据重点实验室,贵阳 550025)
3(贵州大学 计算机科学与技术学院,贵阳 550025)
4(哈尔滨工业大学 深圳研究生院,深圳 518055)
字典学习的目标,是学习一个过完备字典,从字典中选择少数的字典原子,通过选择的字典原子的线性组合来近似表示给定的原始信号.字典学习在图像降噪、复原、分类、超分辨率图像、图像压缩等图像领域有非常好的应用效果[1,2].
字典学习的鲁棒性非常重要[3],其不仅意味着学习获得的字典和特征可以有效抵抗噪声和奇异值,而且可以为模式分类任务带来令人满意的识别结果.利用适当的约束可以克服噪声和奇异值,相关标签和原子相关约束可以被用来达到这个目的[4].当字典学习算法或是其他算法应用于图像数据时,首先需要将每个图像转换为矢量表示形式[5],而转换方式则有多种,例如将图像矩阵的第一行到最后一行按照顺序连接为一个矢量,或者将图像矩阵的第一列到最后一列按照顺序连接为一个矢量.
字典学习的研究者大多数把精力用于寻找良好的分类算法和表示算法.然而,在固定算法条件下,寻找如何最好利用原始数据以达到最佳性能的方法很少被研究者注意.对于图像数据,原始图像的多重表示可以提供图像样本的不同观察视角,从而提高了数据的多样性[6],当相同字典学习算法应用于它们时,由于多重表示的互补性,很有可能获得更好的性能.多矢量表示和多视图[7]部分相似,但多矢量表示直接从原始图像生成,消耗的计算成本很小.
在人脸数据库中,原始样本的潜在样本对于计算机视觉和分类任务很有用,因为它们和真实面部图像非常像.比较典型的潜在样本包括虚拟面部样本和合成面部样本[8],例如,对称人脸图像获得真实人脸的对称结构[9],也可以通过复杂算法生成虚拟或合成面部样本[10].潜在的多个样本和多矢量表示都可以提供更多外观表示,而它们的不同点在于,潜在的多个样本意味着从原始样本中生成了新的替代样本,多矢量表示只是原始样本的不同排列结果.
2019年,徐勇将相同的字典学习算法应用于原始图像的多矢量表示,并在此基础上设计了一种鲁棒的字典学习方法[6].
通过对以上文献可以发现,虽然现有方法在人脸数据集上已经获得了较好的性能,但仍然存在没有充分利用原始图像信息的问题.为了解决这一问题,我们采用组合更多种原始图像的矢量表示应用到字典学习算法中,这种方法能够充分挖掘和利用表示多样性,提高字典学习算法的精度和鲁棒性.我们在本文分析不同组合矢量表示对字典学习算法性能的影响.在第2 节中阐述研究方法.在第3 节中展示研究方法的合理性.第4 节描述实验结果.第5 节提出一个简要的结论.
为了更加充分提取原始图像的判别特征,我们通过不同扫描方式提取原始图像的矢量表示,让机器能够从不同观察角度提取原始图像判别特征,配合合理的加权对数和方案,对分类准确率和鲁棒性进行改进.
本文研究方法的主要步骤如下:
步骤1.由原始图像直接生成N种矢量表示,每种矢量表示都是使用特定的转换方案生成.例如,将原始图像逐像素转换为矢量表示就是一种矢量表示可行方案[11,12].在下一节中,设置4 类基础矢量表示,每类基础矢量表示有4 种矢量表示,N=16.
步骤2.将相同的字典学习算法应用于原始图像的每种矢量表示.因为原始图像有N种矢量表示,我们有N种训练样本和测试样本,从而由相同字典学习算法生成N种训练样本和测试样本的特征.
步骤3.对这N种训练样本和测试样本的特征使用相同的分类算法,并且针对每种特征,获得所有测试样本相对不同类别的分类分数.
步骤4.对于测试样本,采用求和融合方案来添加该测试样本相对同一类别的分类分数.求和融合结果被称为该类别的测试样本的最终分数.求和融合方案以4 类基础矢量表示为基础并选择组合,获得15 种矢量表示组合方案,得到15 种分类分数.
研究方法的流程图如图1所示.
图1 研究方法的流程图
我们将在本小节介绍设计方法的详细信息.对于第r种样本,我们用表示矢量形式的第i个训练样本,用pr表示矢量形式的测试样本.和pr是由原始图像生成,使用字典学习算法获得的和pr的特征分别是和qr,对应的字典用Dr表示.
本文设计的矢量表示共有4 类基础矢量表示形式,每类基础矢量表示形式有4 种矢量表示产生方式,共16 种矢量表示产生方式.
图2 原始图像示意图
第1 类基础矢量表示形式:行/列顺序排列表示.
1)行顺序顺排列:row1→row2→···→rowm−1→rowm.
2)列顺序顺排列:col1→col2→···→coln−1→coln.
3)行顺序倒排列:rowm→rowm−1→···→row2→row1.
4)列顺序倒排列:coln→coln−1→···→col2→col1.
第2 类基础矢量表示形式:行/列倒序排列表示.
1)行倒序顺排列:Rrow1→Rrow2→···→Rrowm−1→Rrowm.
2)列倒序顺排列:Rcol1→Rcol2→···→Rcoln−1→Rcoln.
3)行倒序倒排列:Rrowm→Rrowm−1→···→Rrow2→Rrow1.
4)列倒序倒排列:Rcoln→Rcoln−1→···→Rcol2→Rcol1.
第3 类基础矢量表示形式:顺序行/列之字形排列表示.
1)顺序行之字形顺排列:row1→Rrow2→···→rowm−1→Rrowm.
2)顺序列之字形顺排列:col1→Rcol2→···→coln−1→Rcoln.
3)顺序行之字形倒排列:rowm→Rrowm−1→···→row2→Rrow1.
4)顺序列之字形倒排列:coln→Rcoln−1→···→col2→Rcol1.
第4 类基础矢量表示形式:倒序行/列之字形排列表示.
1)倒序行之字形顺排列:Rrow1→row2→···→Rrowm−1→rowm.
2)倒序列之字形顺排列:Rcol1→col2→···→Rcoln−1→coln.
3)倒序行之字形倒排列:Rrowm→rowm−1→···→Rrow2→row1.
4)倒序列之字形倒排列:Rcoln→coln−1→···→Rcol2→col1.
在步骤3)中,通过以下方式使用分类算法获得分数.训练样本的标签矩阵用L表示,L的第j行行向量Lj表示第j个训练样本的类别标签.如果第j个训练样本属于第j类,则Lj的第k个条目为1,所有其他条目为零.对于一种样本,所有样本的特征形成矩阵X.假设矩阵W可以将X近似转换为L,则XW=L.我们要求W具有最小范数,因此我们有的解,其中 γ是一个小的正常数.对于测试样本,使用lr=qrW计算其所需标签,然后我们用表示测试样本相对于第g类的得分.labelg是第g类的类标签,使用one-hot 编码形式.
在步骤4 中,求和融合方案的公式为:
求和融合方案以4 类基础矢量表示作为基础并对其进行选择组合,获得15 种矢量表示组合方案,得到15 种分类分数.
每一类矢量表示作为基础表示,用A1、A2、A3、A4 表示,将4 类基础表示进行组合,具体矢量表示组合方案为:
仅基础表示:A1,A2,A3,A4;
选取两种基础表示组合:
B1(A1+A2),B2(A1+A3),B3(A1+A4),
B4(A2+A3),B5(A2+A4),B6(A3+A4);
B5(A2+A4),B6(A3+A4);
选取3 种基础表示组合:
C1(A1+A2+A3),C2(A1+A2+A4),
C3(A1+A3+A4),C2(A2+A3+A4);
选取4 种基础表示组合:
D1(A1+A2+A3+A4).
本文充分利用原始图像数据的表示多样性,为同一对象提供了更多的外观,原始图像更多的矢量表示意味着获得对同一对象更全面的观察,更充分地利用了原始图像的信息.不同的矢量表示组合则意味着从同一对象的不同外观组合中进行字典学习,可以通过观察不同矢量表示组合下的性能,进而选择更好的矢量表示组合.
由于字典学习算法中的矩阵分解也进一步增加了原始图像多矢量表示的差异.具体来说,字典学习算法将原始样本矩阵P分解为字典矩阵D和特征矩阵X,不同D的差异和不同X的差异通常比不同P的差异大.基于字典的特征表示:
从式(2)可以直观看出来在矩阵分解之后,范数具有更大的范围,从而数据具有更大的差异.更多矢量表示组合意味着更多的训练样本以及更高的分类精确度.
采用的求和融合方案也是合理的.有两个方面原因:
1)将第二小的得分减去最小的得分作为权值是合理的,如果第二小的得分比最小的得分大很多,则分类决策具有很高的置信度[13].
2)本文中的得分表示相异程度,采用最小的得分确定测试样本的分类标签,得分越小意味着属于相应类别的可能性越高.并且求和融合公式采用得分的对数,不仅可以保持得分的数字顺序,而且扩大了得分的差异.
所以本文采用的求和融合方案可以保持小得分的主导作用,有利于正确分类.
本文采用多种原始图像不同的矢量表示意味着在实际中从不同观测角度观察对象.例如,行倒序顺排序是在镜子里观察观测对象;列倒序顺排序是从旋转180°的角度观察观测对象;之字形矢量表示则考虑人脸对称性,在不同时间左脸和右脸的信息会有细微变化,之字形矢量表示可以观察不同时间观测对象的面部信息.采用更多不同原始图像的矢量表示意味着拥有更大的观测对象数据集,也就意味着字典学习算法将获得更高的识别准确度.而随着数据集的扩大,训练时间也将变长,且与数据集大小成正比.
本文在K-SVD[14]、D-KSVD[15]、LC-KSVD[16]算法上实现不同矢量表示组合,并比较不同矢量表示组合下相同字典学习算法的性能,实验中采用扩展Yale B人脸数据库[17],AR 人脸数据库[18]和COIL 20 数据库[19],每种算法执行10 次,并记录平均分类精确度.
扩展Yale B 人脸数据库包含38 个人的2,414 张正面图像,这些图像是在各种光照条件和表情下拍摄的.每个人有59 到64 张图像,每张图像被转换为32×32 像素的大小.来自该数据库的一些面部图像在图3中示出.随机选择每个人的10 张图像作为训练样本,其余图像用于测试.对于K-SVD、D-KSVD、LC-KSVD算法,字典原子数从38 变为380,间隔为38.不同矢量表示组合在扩展Yale B 人脸数据库上K-SVD、LC-KSVD、D-KSVD 算法识别准确度分别如图4、图5和图6所示.其中,a1 表示行顺序顺排列矢量表示.
图3 扩展Yale B 人脸数据库的部分示例图像
图4 不同矢量表示组合在扩展Yale B 人脸数据库上K-SVD 算法识别准确度
图5 不同矢量表示组合在扩展Yale B 人脸数据库上LC-KSVD 算法识别准确度
图6 不同矢量表示组合在扩展Yale B 人脸数据库上D-KSVD 算法识别准确度
AR 人脸数据库包含126 个人超4000 张图像,这些图片分两次拍摄而得.采集环境中的摄像机参数、光照环境、摄像机距离等都是严格控制的.本文采用AR 人脸数据库的子集进行实验[11],包含120 人的3120张图像.每张AR 人脸图像的尺寸为40×50 像素.来自该数据库的一些面部图像在图7中示出.随机选择每个人的10 张图像作为训练样本,其余图像用于测试.对于K-SVD、D-KSVD、LC-KSVD 算法,字典原子数从120 变为1200,间隔为120.不同矢量表示组合在AR 人脸数据库上K-SVD、LC-KSVD、D-KSVD 算法识别准确度分别如图8、图9和图10所示.
图7 AR 人脸数据库的部分示例图像
图8 不同矢量表示组合在AR 人脸数据库上K-SVD 算法识别准确度
图9 不同矢量表示组合在AR 人脸数据库上LC-KSVD 算法识别准确度
COIL20 数据库包含不同光照条件下20 个物体的不同视角,每张图片尺寸为32×32 像素.来自该数据库的一些面部图像在图11中示出.随机选择每个人的10 张图像作为训练样本,其余图像用于测试.对于K-SVD、D-KSVD、LC-KSVD 算法,字典原子数从40 变为200,间隔为20.不同矢量表示组合在COIL20 数据库上KSVD、LC-KSVD、D-KSVD 算法识别准确度分别如图12、图13和图14所示.
图10 不同矢量表示组合在AR 人脸数据库上D-KSVD 算法识别准确度
图11 COIL20 数据库的部分示例图像
图12 不同矢量表示组合在COIL20 数据库上K-SVD 算法识别准确度
图13 不同矢量表示组合在COIL20 数据库上LC-KSVD 算法识别准确度
图14 不同矢量表示组合在COIL20 数据库上D-KSVD 算法识别准确度
本文提出一种基于矢量表示组合的字典学习方法,该方法通过充分利用人脸图像的多矢量表示提升分类模型的准确率和鲁棒性.通过在多个人脸数据集进行实验对比可以得出:相同数量的基础表示组合的得分融合数据相差很小,在各识别准确度的图中呈曲线簇;组合中的矢量表示种类越多样,字典学习算法的识别精确度越好,具有更好的鲁棒性.本文通过组合更多的原始图像矢量表示,充分挖掘和利用表示多样性,提高字典学习算法的分类精度.