LDA人脸识别的matlab程序_第1页
LDA人脸识别的matlab程序_第2页
LDA人脸识别的matlab程序_第3页
LDA人脸识别的matlab程序_第4页
LDA人脸识别的matlab程序_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、% % % % %Valid%0.1.%regularizati on% matrix%provided%nFea is%Fisherface1: Fisherface approachmatLDA以下是LDA的m文件函数: 你稍稍改改就能用了!fun cti on eigvector, eigvalue, elapse = LDA(g nd,opti on s,data) % LDA: Lin ear Discrim inant An alysis% % eigvector, eigvalue = LDA(gnd, options, data) %In put:data -Data matr

2、ix. Each row vector of fea is a data point.gnd -Colunm vector of the label in formatio n for each data point.options - Struct value in Matlab. The fields in options that can be set:%Regu 1: regularized soluti(a'X'WXa)/(aXXa+ReguAlpha*l)a* = argmax %SVD0: solve the sinu larity problem%byDefau

3、lt: 0ReguAlpha - The regularizati on parameter.whe n Regu=1. Default value isReguType 'Ridge': Tikh onov'Custom': User provided regularizati onDefault: 'Ridge' regularizerR (nFea x nF ea) regularizati on matrix which should beif ReguType is 'Custom,.the feature nu mber of

4、 data matrix%n ClassPCARatio = n Smp -Default: 0%prin cipal%PCAPCARatioThe perce ntage ofcomp onent kept in the%step%PCARatio prin ciple%exceed thestep. The perce ntage is calculated based on the eige nv alue. Default is 1 (100%, all the non-zero eige nv alues will be kept. If PCARatio > 1, the P

5、CAwill keep exactlycomp onents (does not%comp onen ts).%exact nu mber of non-zero%new% % % % %Output:eigvector - Each colu mn is an embedd ing function, fordata point (row vector) x, y = x*eigvector w川 be the embedd ing result of x.eigvalue -The sorted eigvalue of LDA eige n-problem.elapse -Time spe

6、 nt on diff ere nt steps% Examples:% % % % % % % %fea = ran d(50,70);gnd = on es(10,1);o nes(15,1)*2;o nes(10,1)*3;o nes(15,1)*4; opti ons =;opti on s.Fisherface = 1;eigvector, eigvalue = LDA(gnd, options, fea);Y = fea*eigvector;% See also LPP, con structW, LGE %Refere nee:% P. N. Belhumeur, J. P. H

7、espanha, and D. J. Kriegman, 掏 igenfaces% vs. fisherfaces: recog niti on using class specific lin ear% projection, ? IEEE Transactions on Pattern Analysis and Machine% Intelligenee, vol. 19, no. 7, pp. 711-720, July 1997.% Deng Cai, Xiaofei He, Yuxiao Hu, Jiawei Han, and Thomas Hua ng,% "Lear n

8、ing a Spatially Smooth Subspace for Face Recog niti on”, CVPR2007%De ng Cai, Xiaofei He, Jiawei Han, HSRDA: An Efficie nt Algorithm for%Large Scale Discrim inant An alysis", IEEE Tran sact ions on Kno wledgeand% Data Engin eeri ng, 2007.%version 2.1-Ju ne/2007%version 2.0-May/2007%version 1.1-F

9、eb/2006%version 1.0-April/2004% Writte n by Deng Cai (de ngcai2 AT )%if exist('data7var') global data;endif (exist('optio ns'/var') optio ns =;endif isfield(options,'Regu') | -options.Regu bPCA = 1;if isfield(optio ns, p CARatio*)optio ns.PCARatio = 1;endelsebP

10、CA = 0;if isfield(opti on s/ReguType*)opti on s.ReguType = 'Ridge1; endif isfield(opti on s/ReguAlpha*)opti on s.ReguAlpha = 0.1; endendtmp_T = cputime;% = In itializati onn Smp ,nF ea = size(data);if len gth(g nd) = n Smperror(*g nd and data mismatch!1); end classLabel = uniq ue(g nd); n Class

11、= len gth(classLabel); Dim = n Class - 1;if bPCA & isfield(optio ns/Fisherface1) & opti on s.Fisherface opti on s.PCARatio = n Smp - n Class;end if issparse(data)data = full(data);endsampleMea n = mean( data,1);data = (data - repmat(sampleMea n,n Smp,1);bChol = 0;if bPCA & (n Smp > nF

12、ea+1) & (optio ns.PCARatio >= 1) DPrime = data'*data;DPrime = max(DPrimeQPrime,);R,p = chol(DPrime);if p = 0bPCA = 0;bChol = 1;endend%= %SVD%= if bPCAif n Smp > nFeaddata = data'*data;ddata = max(ddata,ddata');eigvector_PCA, eigvalue_PCA = eig(ddata); eigvalue_PCA =diag(eigvalu

13、e_PCA); clear ddata;maxEigValue = max(abs(eigvalue_PCA); eigldx = fin d(eigvalue_PCA/maxEigValue < 1e-12); eigvalue_PCA(eigldx)=; eigvector_PCA(:,eigldx)=;junk, in dex = sort(-eigvalue_PCA); eigvalue_PCA = eigvalue_PCA(i ndex); eigvector_PCA = eigvector_PCA:, i ndex);%=if options.PCARatio > 1i

14、dx = optio ns.PCARatio;if idx < Ie ngth(eigvalue_PCA)eigvalue_PCA = eigvalue_PCA(1 :idx);eigvector_PCA = eigvector_PCA(:,1 :idx);endelseif optio ns.PCARatio < 1sumEig = sum(eigvalue_PCA); sumEig = sumEig*options.PCARatio; sumNow = 0;for idx = 1 :le ngth(eigvalue_PCA) sumNow = sumNow + eigvalue

15、_PCA(idx); if sumNow >= sumEigbreak;endendeigvalue_PCA = eigvalue_PCA(1 :idx);eigvector_PCA = eigvector_PCA(:,1 :idx);end %=eigvalue_PCA = eigvalue_PCA.A-.5;data = (data*eigvector_PCA).*repmat(eigvalue_PCA nSmp,1); else ddata = data*data'ddata = max(ddata,ddata');eigvector, eigvalue_PCA =

16、 eig(ddata); eigvalue_PCA = diag(eigvalue_PCA);clear ddata;maxEigValue = max(eigvalue_PCA);eigldx = fin d(eigvalue_PCA/maxEigValue < 1e-12);eigvalue_PCA(eigldx)=;eigvector(:,eigldx)=;junk, in dex = sort(-eigvalue_PCA); eigvalue_PCA = eigvalue_PCA(i ndex); eigvector = eigvector(:, in dex);%=if opt

17、io ns.PCARatio > 1idx = optio ns.PCARatio;if idx < Ie ngth(eigvalue_PCA)eigvalue PCA = eigvalue_PCA(1 :idx); eigvector = eigvector(:,1 :idx);endelseif options.PCARatio < 1sumEig = sum(eigvalue_PCA);sumEig = sumEig*optio ns.PCARatio; sumNow = 0;for idx = 1 :le ngth(eigvalue_PCA)sumNow = sumN

18、ow + eigvalue_PCA(idx);if sumNow >= sumEigbreak;endendeigvalue_PCA = eigvalue_PCA(1 :idx); eigvector = eigvector(:,1 :idx);end%= eigvalue_PCA = eigvalue_PCA.A-.5;eigvector_PCA = (data'*eigvector).*repmat(eigvalue_PCA', nF ea,1);data = eigvector; clear eigvector;end elseif -bCholDPrime = d

19、ataf*data;%opti on s.ReguAlpha = n Smp*opti on s.ReguAlpha;switch lower(optio ns.ReguType) case lower(,Ridge,)for i=1 :size(DPrime,1)DPrime(i,i) = DPrime(iJ) + opti on s.ReguAlpha; end case lower(*Te nsor')DPrime = DPrime + opti on s.ReguAlpha*opti on s.regularizerR; case lower(,Custom,)DPrime =

20、 DPrime + opti on s.ReguAlpha*opti on s.regularizerR; otherwise error(fReguType does not exist!1); endDPrime = max(DPrimeJDPrime,); end endn Smp ,nF ea = size(data);Hb = zeros( nClass, nF ea);for i = 1 :n Class,in dex = fin d(g nd=classLabel(i);classMea n = mea n(data(i ndex,:),1);Hb (i,:) = sqrt(le

21、 ngth(i ndex)*classMea n;endelapse.timeW = 0;elapse.timePCA = cputime - tmp_T;tmp_T = cputime;if bPCAdumpVec,eigvalue,eigvector = svd(Hb/ec on');eigvalue = diag(eigvalue); eigldx = fin d(eigvalue < 1e-3);eigvalue(eigldx)=; eigvector(:,eigldx)=;eigvalue = eigvalue.A2;eigvector =eigvector_PCA*(

22、repmat(eigvalue_PCA,1,le ngth(eigvalue).*eigvector); elseWPrime = Hb'*Hb;WPrime = max(WPrime,WPrime');dimMatrix = size(WPrime,2);if Dim > dimMatrixDim = dimMatrix;endif isfield(opti on s;bEigs')if opti on s.bEigsbEigs = 1;elsebEigs = 0;endelseif (dimMatrix > 1000 & Dim < dimMatrix/10) |

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论