朱强军,汪慧兰,张广海
(1.安徽师范大学皖江学院 电子工程系,安徽 芜湖 241008;2.安徽师范大学 物理与电子信息学院,安徽 芜湖 241000)
随着智能科学技术的发展,生物特征识别技术受到前所未有的关注,人脸识别技术作为生物特征的一种,由于非干扰性、唯一性等优点在安防、门禁系统、金融等领域中有着重大的应用前景.目前人脸识别技术主要包含4种类别:基于几何特征的方法[1],基于代数特征的方法[2],基于模板的方法[3],基于人工神经网络的方法[4].这些人脸识别方法各有优点,但都需要大量的样本训练,才能有较好的识别效果.1张人脸图像含有丰富的信息,但只有部分信息在识别过程中起关键作用,因此,在识别前,需要对人脸图像进行预处理,提取有用的特征信息,从而提高人脸识别速度、精度.主成分分析法(Principal Component Analysis,PCA)[5]是将高维空间数据映射到低维空间,实现数据的降维,减少了冗余的数据,保留了原始数据的独特性,这样既方便了计算,又有利于分类.支持向量机(Support Vector Machine,SVM)[6-7]分类器能够向高维空间映射,具有良好的泛化能力,在解决非线性以及小样本问题上具有良好的效果,但这些效果会受到核函数及核函数参数制约,特别是SVM的参数制约着人脸识别算法的精度.国内外专家学者已经这方面展开的大量的研究,但至今没有一种公认统一的最优方法.因此,本文提出了一种快速主成分分析法联合优化参数支持向量机分类器相结合的算法(Algorithm combining fast PCA with optimized parameter SVM classifier,fast PCA-SVM),通过实验验证,该算法优于传统的人脸识别算法.
主成分分析法主要是降低数据维度,并保持原有的数据特征.假设有n个d维空间样本向量构成矩阵X=(x1,x2,…,xn),其中xi=(xi1,xi2,…,xin)T∈Rd,将它们降低到d′(d′ (1) 则在d′维空间中该向量可以表示成: (2) 2) 在d′维空间内平方误差准则函数为: (3) (4) 在PCA算法中,当维度d比较高时,计算的复杂度非常高,计算消耗大量时间,还会因计算量过大导致内存不足而出错.因此,本文采用快速PCA算法. 设Zn×d为样本矩阵X的每个样本减去样本均值m后得到的矩阵,协方差矩阵为S=(ZTZ)d×d与矩阵R=(ZZT)n×n有相同的非零本征值.正常情况下,样本个数n远远小于样本维度d,所以矩阵R的大小也远远小于矩阵S的大小.假设矩阵R=(ZZT)n×n本征向量为v,则有(ZZT)v=λv,等式两侧同时左乘ZT,变换得到(ZTZ)(ZTv)=λ(ZTv),即S(ZTv)=λ(ZTv),得到协方差矩阵S本征向量ZTv,也就是说通过计算尺寸小的矩阵R本征向量能到尺寸大的S本征向量,从而大幅度降低PCA算法的计算量. 支持向量机是一种新的模式识别方法,它在解决小样本问题上有着独特的优势,应用广泛[8].该算法主要将线性不可分数据映射到高维空间变成线性可分,寻找最优的超平面,并且使得分类后数据尽可能地远离超平面,该超平面分类效果较好.人脸识别本质是一个非线性分类问题,可以采用核函数支持向量机算法对人脸分类,其流程如下. 设训练样本D={(x1,y1),(x2,y2),…,(xn,yn)},xi∈Rm,yk∈{1,-1},k=1,2…n.其中xi是为第i样本的多维特征向量. 1) 选择非线性核函数K(xi,yj)以及错误分类惩罚参数C,构造目标函数. (5) (6) 5) 获得最优分类超平面f(x)=sgn{(w*·x)+b*}. 在寻优优化方法中,交叉验证法是一种常用适用于数据量不大的数据集、能有效避免过学习和欠学习状态出现的优化算法[9].因此,通过K折交叉验证(K-fold cross-validation method,K-CV)算法联合改进的网格搜索法[10]优化SVM分类器的核函数参数和惩罚系数.K-CV算法是将原始数据分成K组,依次每组数据作为测试集,剩下K-1组数据的作为训练集,通过验证获得K个分类模型分类精度的平均值,该平均值作为K-CV算法下的分类器的分类精度,也是分类器的性能指标.通过增加网格搜索步长,即大步长搜索,结合K-CV算法粗略的判断核函数参数γ和惩罚系数C的范围,优化SVM;在粗略判断的核函数参数γ和惩罚系数C的范围内,减小网格搜索步长精准搜索,即小步长搜索,优化SVM,获得最优的核函数参数γ和惩罚系数C,该方法可以提高SVM参数搜索速度.SVM参数最优化过程如图1所示. 图1 SVM参数最优化过程Fig.1 SVM parameter optimization process 结合主成分分析法和支持向量机技术,提出一种新的人脸识别算法,该算法利用快速的主成分分析法提取人脸图像特征并降维处理,通过交叉验证联合改进的网格搜索法优化支持向量机分类器参数,将提取的人脸特征训练分类器,获得支持向量机分类器模型.为了验证算法,将人脸库分别两组:一组为训练样本,另一组为测试样本.训练样本分别取每类i幅图像,每类剩下j幅图像构成测试样本,分别对算法进行训练和测试,求出平均人脸识别率.算法主要步骤如下. 1) 读入人脸库所有图像,将其分成训练样本和测试样本,利用fast PCA提取人脸特征并降维. 2) 在不同的维度和分组数条件下,利用交叉验证算法和改进的网格搜索算法寻找SVM最优参数,确定最佳维度、最优分组数和最优参数. 3) 将步骤1)获得训练样本人脸特征和步骤2)获得的最优参数对SVM分类器进行训练. 4) 将步骤1)获得测试样本人脸特征,输入SVM分类器中测试. 5) 计算测试中人脸识别率,调整训练样本数目和测试样本数目,重复上述步骤,计算平均人脸识别率. 实验采用ORL人脸数据库,ORL数据库共有400幅人脸图像,每人10幅,图像大小为119×92,ORL人脸库中部分人脸图像如图2所示.实验采用Matlab R2017b编程环境,在配置为Intel(R)Core2-E7500、2.93 GHz、4 G内存、64位Win7操作系统的计算机上进行. 图2 ORL人脸库中部分人脸图像Fig.2 Some face images in ORL face database 设定将每幅图像降到60维以下,通过fast PCA算法对人脸图像进行降维并提取特征,采用最大最小规格化处理到[-1,1]范围内,结合K-CV算法优化参数的SVM模型,确定最优维度以及最优分组K.实验将人脸图像从5维度到60维度,每隔5维度取1次,共计12组;实验分组K值从3依次取到22,共计20组;在不同的维度和不同分组下,人脸识别率随着维度变化和分组值变化关系如表1所示. 表1 人脸识别率随着维度变化和分组值变化关系(人脸识别率/%)Tab.1 The relationship between the face recognition rate and the change of the dimensionality and the change of the grouping value (face recognition rate/%) 从表1中可知,45、50、55维能达到最高的识别率99.00%,并且有K≥9时,人脸识别率不再随着K变化而变化.从表1中还能得到各维度与人脸平均识别率关系,如表2所示. 表2 维度与人脸平均识别率关系Tab.2 Relationship between dimensions and average face recognition rate 从表2可知,人脸图像降至45维度时人脸平均识别率最高,达到98.7875%.因此,通过fast PCA算法将人脸图像降维至45维度,采用9-CV算法优化SVM参数. 传统的网格搜索法是一种最基本的参数优化算法[11],该算法在指定参数范围情况下,小步长搜索时速度慢、耗时长等缺点.通过K-CV算法联合改进的网格搜索法优化SVM的惩罚参数C和核函数参数γ,克服了传统的网格搜索法的缺点,提高了训练样本较少时人脸识别率和系统的泛化能力. 首先,采用大步长网格搜索,缩小待优化参数的范围.假设惩罚参数C和核函数参数γ的范围都设置为[2-8,28],步长设为1,获得最优C和γ的值随着K值的变化关系、参数搜索结果等高线图、参数搜索结果3D视图.最优C和γ的值随着K值的变化关系如表3所示,K=9时,参数搜索结果等高线图如图3所示,参数搜索结果3D视图如图4所示. 表3 最优的C和γ取值随着K值的变化关系(大步长)Tab.3 The optimal values of C and γ vary with the value of K (large step size) 由表3、图3和图4可知,K=9时,获得最优C和γ的值,即C=2、γ=0.125;C的范围为[2-1,23],γ的范围为[2-5,20].此时,人脸识别率达到99.00%. 图3 参数搜索结果等高线图 图4 参数搜索结果3D视图Fig.3 Contour map of parameter search results Fig.4 3D view of parameter search results 其次,采用小步长搜索,确定最优参数.在参数缩小的范围内,即C在[2-1,23]范围内、γ在[2-5,20]范围内,设定步长为0.2,重新搜索,获得最优的C和γ值随着K值的变化关系如表4所示. 表4 最优的C和γ值随着K值的变化关系(小步长)Tab.4 The optimal values of C and γ vary with the value of K (small step size) 从表4可知,当K=9时,获得最优C和γ的值,即C=1.148 7、γ=0.094 7.此时,人脸识别率达到99.00%. 在最优分组K=9的情况下,设C的范围为[20,22],γ的范围为[2-5,20],步长都设为0.2,分别用不同的网格算法搜索最优参数,统计6次搜索到最优参数消耗平均时间如表5所示.从表5可知,在相同的识别率条件下,改进后的算法寻找最优参数耗时大幅度降低. 表5 算法寻优时间比较Tab.5 Comparison of algorithm optimization time 在ORL人脸库上对算法进行测试,从每个人中选择i(i=1,2,…,8,9)幅图像作为训练样本,在最优参数下,对SVM进行训练,获得SVM模型,剩下的j(j=10-i)幅作为测试样本,依次标记为i+1幅,i+2幅,…,10幅,测试结果如表6所示,平均识别率与训练样本数之间关系如图5所示. 表6 测试结果Tab.6 Test results % 由表6、图5可知,当训练样本数超过5幅/人时,识别率为100%;当训练样本数只有1幅/人时,识别率能达到87.78%,该算法平均识别率为96.94%.该平均识别率比文献[12]、文献[13]、文献[14]、文献[15]、文献[16]、文献[17]中的人脸识别率分别提高了3.94%、8.92%、0.69%、5.94%、0.61%、2.34%、3.44%.由此可见,该算法与一般的SVM算法及PCA算法比较,平均识别率提高了0.61%~8.92%,具有更高的识别率.不同的人脸识别算法比较如表7所示. 图5 平均识别率与训练样本数之间关系Fig.5 The relationship between the average recognition rate and the number of training samples 表7 不同人脸识别算法比较Tab.7 Comparison of different face recognition algorithms 通过改进传统的人脸识别PCA算法,获得fast PCA算法,结合SVM技术实现新人脸识别算法.该算法利用交叉验证法和改进的网格搜索法寻找SVM的最优参数、fast PCA降维的最佳维度以及交叉验证的最优分组.在最优的条件下,重新对SVM进行训练.在ORL人脸库上实验验证,该算法提高了SVM参数搜索效率,在训练样本较少时,保持较高的识别率,当每类训练样本超过5幅时,识别率为100%,算法平均识别率为96.94%,与一般算法比较具有更高的识别率.1.2 快速PCA算法
1.3 支持向量机(SVM)算法
2 SVM参数最优化
3 算法实现
4 实验过程与结果分析
4.1 最佳维度和最优分组K的确定
4.2 参数优化
4.3 优化时间比较
4.4 算法测试与算法比较
5 结论