资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
模式识别课程报告基于SRC_RSC算法的遮挡人脸图像识别的实验研究学 年: _201x学年第x学期_姓 名:xxxx学号: xxxxxxxxxx专业:xxxxxxxxxx指导教师: xxxxx提交日期:_201x年x月xx日1. 算法简介1.1 SRC算法简介基于基于稀疏表达的分类算法(Sparse Recognitionbased Classification,简称SRC算法),是人脸识别领域最经典的算法之一,最初是 由John Wright, Allen Y . Ya ng等 人在 2008 年的Robust Face Recognition via Sparse Representation一文中将 SRC 算法应用到人脸识别领域,使用该算法可以大大增强人脸的识别率,包括对含有噪声的人脸图像、有遮挡物的人脸图像、进行伪装的人脸图像、不同曝光的人脸图像、不同面目表情的人脸图像等多个场景下通过SRC算法对特定的人脸图像进行识别。人脸的稀疏表示是基于光照模型。即一人脸图像,可以用数据库中同一个人所有的人 脸图像的线性组合表示。而对于数据库中其它人的脸,其线性组合的系数理论上为零。由于数据库中一般有很多个不同的人脸的多图像,如果把数据库中所有的图像的线性组合来表示这给定的测试人脸,其系数向量是稀疏的。因为除了这和同一个人的人脸的图像组合系数不为零外,其它的系数都为零。以上所述即为 SRC识别人脸图像的原理。不过在该模型下导出了基于稀疏表示的另 外一个很强的假设条件,即所有的人脸图像必须是事先严格对齐的,否则,稀疏性很难满足。换言之,对于表情变化,姿态角度变化的人脸都不满足稀疏性这个假设。所以,经典的稀疏脸方法很难用于真实的应用场景。稀疏脸很强的地方在于对噪声相当鲁棒,相关文献表明, 即使人脸图像被 80%的随机噪声干扰,仍然能够得到很高的识别率。稀疏脸另外一个很强 的地方在于对于部分遮挡的情况,例如戴围巾戴眼镜等,仍然能够保持较高的识别性能。 上述两点,是其它任何传统的人脸识别方法所不具有的。1.2 RSC算法简介鲁棒的稀疏编码算法 (Robust Sparse Codi ng,简称RSC算法),是通过求解Lasso问题,进而求解稀疏编码问题,是SRC的改进算法之一,具有极强的应用性,最初是由Me ng Yan g, Lei Zha ng 等人在 2011 年的Robust Sparse Codi ng for Face Recog ni tio n一文中将RSC算法应用到人脸识别领域。该文作者没有直接求解稀疏编码问题,而是求解Lasso问题,因为Lasso问题的解和稀疏编码的解是等价的。在传统的SRC框架下,编码误差使用L2数来度量的,这也就意味着编码误差满足高斯分布,然而,当人脸图像出现遮 挡和噪声污染的情况下,并非如此。在字典学习框架下,这样的字典是有噪声的。该文作者 对原始Lasso问题进行改进,求解加权L1数约束的线性回归问题。人脸识别的鲁棒稀疏编码的稀疏表示识别方法将稀疏表示的保真度表示为余项的L2数,但最大似然估计理论证明这样的假设要求余项服从高斯分布,实际中这样的分布可能并不成立,特别是当测试图像中存在噪声、遮挡和伪装等异常像素,这就导致传统的保真度表达式所构造的稀疏表示模型对上述这些情况缺少足够的鲁棒性。而最大似然稀疏表示识别模型则基于最大似然估计理论,将保真度表达式改写为余项的最大似然分布函数,并将最大似然问题转化为一个加权优化问题,在稀疏表示的同时引入代表各像素不同权值的矩阵, 使得该算法对于图像中包含异常像素的情况表现出很好的鲁棒性。此算法的关键还在于权重系数的确定,文中采用的是logistic函数,而具体的实现则是通过迭代估计学习得到。该方法基于这样一个事实:被遮挡或噪声干扰的像素点赋予较小的 权重,而其它像素点的权重相对较大。具体迭代算法采用经典的迭代重加权算法框架,当然部嵌入的稀疏编码的求解过程。此算法在50%遮挡面积的情况下取得的更好更满意的结果。但是文中没有比较计算时间上的优略而直说和SRC框架差不多。2. 算法步骤2.1 SRC算法步骤具体的 SRC 算法步骤如 Spare Represe ntatio n-based Classificati on (SRC) 所示Algorithm 1 : Sparse Representatinn-bac 0.)2: Normalize the columns of A to have unit /:2-nornL3 Solve the -minimization problem:也=arg tiiin |i subject to Ax = y.(Or alternatively, solve1 = arg min |x|i subject to Ax yj|j )4: Compute the residuals 珥(期)=|# _ 4&(总1)|?for i 1,斤.5: Output: ideniityfy I ;irg min, j f (y).2.2 RSC算法步骤稀疏编码模型等同于求解LASSO问题,LASSO问题模型如公式1所示min |jf - PaII-; s.t, ct 0 ,是一个常数,表示被编码的信号,表示含有m个dj列向量的字典集,a是编码系数向量,在我们人脸识别问题中,dj表示训练人脸样本,字典集D表示训练集。加权Lasso问题的目标函数描述如公式2 所示II2iriin2 (y Doc sx. | q 丄壬巧具体的 RSC 的算法步骤可以用LRSC (Iteratively Reweighted SparseCodi ng)算法步骤表示如下Algorithm 1 Iteralively Reeighted Sparse CodingInput: Normalized test sample y with unit 仏-nonn, dictionary D (each column of D has unit Zj-nonn) and yt! initialized asOutput: otStart from f 1;【:Compute residual E =y l/rec2: Estimate weights aswhere p】and 川aie parameters estimated in the tti iteration (please refer to Section 4for the setting of them).3: Sparse ctxling:ct* = ni(y Dal I s.t. |a|L 17)=a*;&】)十 丁严)(a or一1);where 0 帀 1 is the step size, and a suitable should make刀二阳(广) :=:作山一丄)卅) can be searclied h)ni 1 U)() by the standard line-search process 卜(Since bothand o+ belong K)theconvex set Q = |a|h r、a will also beoim loQ-s Compute rhe reconstnicted test sample: 射鹽=De,and let 1 = + L6: Go back to step I uniil (he condition of convergence (described in Section 3.2) is met, or the maximal number of iterations is reached.3. M ATLAB 程序3.1 SRC算法MATLAB 代码表示fun cti onpreabel=SRC(train_sample,train_label,test_sample,ClassNum)l=eye(size(tra in _sample,1);et_tra in=tra in _sample I; test_tol=size(test_sample,2);train _tol=le ngth(tra in _label);pre_label=zeros(1,test_tol);for i=1:test_toly=test_sample(:,i);xp = l1_ls(et_trai n,y ,1e-3,quiet ,true);tra in _x=xp(1:tra in _tol,:);err=xp(train_tol+1:e nd,:);test_clea n= y-err;%构造sparse 矩阵,大小为train_tol*ClassNum,最多有length(train_x)个非零值W=sparse(,train_tol,ClassNum,le ngth(train_x);%得到每类对应的系数for j=1:ClassNumin d=(j=trainabel);W(in d,j)=tra in _x(i nd);end%计算测试样本和每类重构样本之间的残差temp=train_sample*W-repmat(test_clea n,1,ClassNum);residual=sqrt(sum(temp.A2);%把测试样本分在最小残差对应的类别中,i ndex=mi n( residual);pre_label(i)=in dex;End3.2 RSC算法MATLAB代码表示fun cti onid = RSC (D,D_labels,y,mean_x,ll)class num = 100;%类别数目 %niter = 10;%进行10次迭代运算 % disc_set,disc_value,Mea nm age=Eige nface_f(D,260);% disc_value = sqrt(disc_value);% mean_x= Meanmage+0.001*disc_set*disc_value;% mean_x= mean( D,2);lambda = 100;sigma = 0.5;iter= 120;beta = 0.1;residual= (y-mean_x).A2;%计算
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号