快速稀疏表示分类的人脸识别算法
- 格式:docx
- 大小:41.96 KB
- 文档页数:8
快速稀疏表示分类的人脸识别算法
范自柱
【摘 要】经典的稀疏表示分类(Sparse Representation for Classification,SRC)算法是一种基于L1范数最小化问题,它在很多应用场合都能取得很好的分类效果,是目前备受关注的一类识别算法.然而,传统的SRC算法在求解L1范数最小化问题时,往往计算效率比较低.为有效解决这个问题,提出了一种快速有效的分类算法,它利用坐标下降方法来实现SRC算法.该方法既可以显著地提高计算效率,又可取得较好的分类结果.在不同人脸库上的实验表明,所提的算法具有良好的应用前景.%The
typical Sparse Representation for Classification(SRC)based on L1 norm
minimization is a very popular pattern recognition method due to its
desirable classification performance in many applications. Nevertheless,
the tradi-tional SRC method usually suffers from the low computational
efficiency. In order to deal well with this problem, this pa-per proposes an
efficient and effective approach based on coordinate descent algorithm,
which can significantly enhance the computational efficiency and achieve
good classification results. The experiments on popular face databases
demon-strate that the proposed approach is promising.
【期刊名称】《计算机工程与应用》
【年(卷),期】2017(053)009
【总页数】4页(P1-4)
【关键词】稀疏表示;坐标下降算法;分类;人脸识别 【作 者】范自柱
【作者单位】华东交通大学 理学院,南昌 330013
【正文语种】中 文
【中图分类】TP391.4
FAN Zizhu.
Computer Engineering andApplications,2017,53(9):1-4.
近年来,基于稀疏表示理论的分类算法(Sparse Representation for
Classification,SRC)是一种备受关注的模式识别方法[1-2],已被成功应用于人脸识别领域。Wright等人利用人脸图像的稀疏表示进行人脸识别[3-8],该方法对图像被腐蚀、遮挡及其他噪声具有较强的鲁棒性[9]。SRC运用了全体训练样本的稀疏线性组合来近似表示一个给定的测试样本。该线性组合中,与测试样本同类的训练样本系数不为零的概率很大,剩余的训练样本的系数一般为零或接近于零,即测试样本主要是由与它同类的训练样本表示或描述。在稀疏表示中,可通过求解L0范数解得非零的稀疏系数。然而,求解L0范数优化问题仍是一个NP难题,可用L1范数优化问题代替L0范数优化问题[10-11],来求解非零的稀疏表示系数,分类测试样本。
对于一个分类或识别算法,人们往往考虑如何提高该算法的识别率,却忽略它的计算效率。事实上,虽然SRC算法可以取得理想的识别结果,但是若该算法运用经典的L1范数优化方法(如l1_ls程序[11])来求解稀疏表示系数,该方法的计算效率会很低。即使是使用公开的人脸数据进行人脸识别实验,SRC也无法做到实时对测试样本分类。尤其在实际的人脸识别应用中,常采用的嵌入式系统无法满足该算法高计算复杂度的要求。人脸识别中的SRC方法几乎是目前计算效率最低的人脸识别方法。若要将SRC算法付诸到实际应用中,既要有良好的分类结果,又需要提高基于L1范数优化问题的计算速度[12]。因此,非常有必要对经典的SRC算法进行改进,提高计算效率。有鉴于此,本文利用坐标下降方法[13-14],提出了一种快速SRC(Fast SRC,FSRC)算法。在不同的公开人脸数据库上的实验表明,基于坐标下降方法的快速稀疏分类算法优于其他求解稀疏表示系数的方法,如l1_ls方法。它不仅明显提高了经典SRC算法的计算效率,而且取得了很好的识别结果。
这一部分先介绍经典的SRC算法,然后介绍本文所提的FSRC算法。
1.1 SRC算法
本节介绍经典的SRC算法。设共有N个来自c类的训练样本集X∈RD×N,X=[x1,x2,…,xN],其中xi∈RD×N(i=1,2,…,N )。对于给定的测试样本y∈RD,可用全部训练样本的稀疏线性组合来近似表示该测试样本。
经典的SRC算法的目的是利用L1范数最小化的优化问题求得稀疏解,则式(1)可转化为:
其中稀疏表示向量β=[β1,β2,…,βN]T,βi表示与第i个训练样本的稀疏表示系数,。若y为第k类(k=1,2,…,c)样本,那么属于该类训练样本的稀疏表示系数有很多是不为零的,属于其他类别的训练样本的稀疏表示系数大多为零或接近零。式(2)也等同于如下的L1范数最小化的优化问题。
其中,λ为重建误差与稀疏表示向量β之间的折中参数。
SRC算法的步骤如下:
(1)输入:训练样本X=[x1,x2,…,xN]∈RD×N与测试样本y∈RD。
(2)用L2范数将X的每一列向量及测试向量单位化。
(3)利用L1范数最小化问题求解β,
其中。 (4)计算残差
式中,k=1,2,…,c,其中新向量中的非零项仅是向量中的第k类训练样本的非零系数。
(5)输出:利用Identity(y)=argmin(rk(y))确定测试样本所属的类别。
1.2 FSRC算法
为提高经典SRC算法的分类效果与计算效率,本节基于坐标下降算法,提出了一种快速的稀疏表示分类算法。
当利用基于最小化L1范数优化问题的l1_ls程序求解稀疏表示系数时,该程序与其他的求解稀疏表示系数方法(如L1_同伦程序)一样,大大增加了SRC算法的计算复杂度,非常耗时。为了克服经典SRC算法的缺点,本文给出了一种快速稀疏表示算法,即FSRC分类算法。本文所提的算法是利用坐标下降方法求解稀疏表示向量β。
事实上,展开目标函数J(β),如下式所示:
其中(xi,xj)表示两样本xi与xj的内积。然后,求J(β)函数关于βi的偏导,有
其中,对每个样本xi、y进行L2范数单位化,令,则
因此,更新的系数 βi是无关于其他稀疏表示系数 βj(j≠i)的。设
则可以利用下式来计算稀疏表示系数βi。
其中,函数[⋅]+定义为:
逐个求得稀疏表示系数 βi(i=1,2,…,N)后,可得更新的稀疏表示β。
与SRC算法的分类方法一样,基于坐标下降算法先更新稀疏表示向量β,再利用SRC算法中步骤4和5,来分类测试样本y。
在上述的算法中,利用了式(8)来迭代更新系数向量β。然而,式(5)中向量β为初始化的稀疏表示向量βin。可以用下式得出βin。
其中I为单位矩阵,μ为很小的正常量。 本文所提的FSRC算法是很容易实现的。该算法中,需要确定迭代过程中的参数,也就是迭代次数T,每迭代一次,也就更新了一次系数向量β。通常,当T取值为5到10之间的整数时,可取得理想的分类结果。此算法中,设定T的值为5。
FSRC算法可如下。
(1)输入:训练样本X=[x1,x2,…,xN]∈RD×N与测试样本y∈RD。
(2)初始化:运用式(10)解得初始化的稀疏表示向量β,式(10)中的μ值设为0.01,迭代次数T的值为5,式(8)中的λ值设为1E-3。
(3)fori=1∶T
利用式(7)和式(8)来更新系数向量β。
end
(4)利用SRC算法中的步骤4和5,来分类测试样本y。
(5)输出:测试样本所属的类别。
在上述算法中,第三步所需的计算时间最多。与这一步相比,其他步计算时间基本可以忽略。容易看出,这一步的计算复杂度为O(TN2),其中,N为训练样本个数,式(7)中的内积可以预先计算保存到一个矩阵中。而经典的基于l1_ls算法的SRC的时间复杂度为O(NeD2)(e≥1.2,D为样本维数)[15]。在人脸识别领域,训练样本维数往往会高于其个数。因此,总体来说,本文所提算法的计算复杂度比经典SRC算法的低。
本文的实验是在AR与Extended Yale B(EYB)人脸数据库上进行的,目的是验证所提的快速FSRC人脸识别算法具有更高的计算效率与良好的分类效果。经典的SRC算法在实现过程中,使用了基于L1范数最小化问题的l1_ls算法[8],它也可使用其他的基于L1范数的程序来实现,如DALM[16],FISTA[17],PALM[16]和HOMO(同伦程序)[18],这里分别表示为SRC_l1_ls,SRC_DALM,SRC_PALM,SRC_FISTA与 SRC_HOMO。本文算法中的折中参数λ设定为0.01,利用主成分分析[19]PCA)算法来降低人脸图像的维数,以减少计算时间。本文的实验是在3.0 GHz CPU与4.0 GB RAM的Matlab R2011b软件平台上运行。
第一个实验采用AR人脸数据库。它包含了126个人的4 000幅人脸图像[20]。实验采用了120人,每个人26幅图像。这些图像裁剪成分辨率为20像素×25像素的图像。实验中,随机地将每类人脸图像分为训练图像与测试图像两部分。对每个人,将随机的N(N=3,4,5)幅图像作为训练样本,剩余的作为测试样本。
实验中,利用PCA算法将每幅人脸图像的维数降至120维,且随机地在每个子集上运行10次。表1给出了3个数据子集(表1中分别表示为N=3,4,5)上的分类精度(分类精度±标准差)。从表1中,可知FSRC算法优于其余SRC算法的分类精度。为了更好说明所提算法的计算效率,将每种算法随机地实现了一次。表2给出了所有参与比较算法的计算时间。从表2中可知,所提的算法FSRC远快于SRC_l1_ls,SRC_PALM 与SRC_HOMO这三种算法。虽然FSRC算法稍慢于SRC_DALM和SRC_FISTA算法,但却显然高于这两种算法的识别精度。
第二个实验采用的是Extended Yale B(EYB)[8]数据集,它包含38个人的2
414幅正面人脸图像。在各种可控制的实验室内的光照条件下,采集所用的人脸图像。随机选择每个人的3幅图像作为训练,剩余的作为测试。
实验中,利用PCA算法将每幅人脸图像的维数降至100维。同时,在所选子集(N=3)上,随机地运行10次。基于EYB数据集,图1得出了本文所有算法的识别率。该图可以证明,相比于其他算法,FSRC算法可取得最佳的识别结果。基于EYB数据集,图2给出了全部算法的计算时间(每种算法随机地运行一次)。从这些图表中,可得出与实验1相同的结论,即FSRC算法为一种快速且能取得良好分类结果的算法。