LDA人脸识别地matlab程序Word格式.docx

上传人:b****4 文档编号:16578538 上传时间:2022-11-24 格式:DOCX 页数:11 大小:16.78KB
下载 相关 举报
LDA人脸识别地matlab程序Word格式.docx_第1页
第1页 / 共11页
LDA人脸识别地matlab程序Word格式.docx_第2页
第2页 / 共11页
LDA人脸识别地matlab程序Word格式.docx_第3页
第3页 / 共11页
LDA人脸识别地matlab程序Word格式.docx_第4页
第4页 / 共11页
LDA人脸识别地matlab程序Word格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

LDA人脸识别地matlab程序Word格式.docx

《LDA人脸识别地matlab程序Word格式.docx》由会员分享,可在线阅读,更多相关《LDA人脸识别地matlab程序Word格式.docx(11页珍藏版)》请在冰豆网上搜索。

LDA人脸识别地matlab程序Word格式.docx

%whenRegu==1.Defaultvalueis0.1.

%ReguType-'

Ridge'

:

Tikhonovregularization

%'

Custom'

Userprovided

%regularizationmatrix

'

%regularizerR-(nFeaxnFea)regularization

%matrixwhichshouldbeprovided

%ifReguTypeis'

.nFeais

%thefeaturenumberofdata

%matrix

%Fisherface-1:

Fisherfaceapproach

%PCARatio=nSmp-nClass

0

%PCARatio-Thepercentageofprincipal

%componentkeptinthePCA

%step.Thepercentageis

%calculatedbasedonthe

%eigenvalue.Defaultis1

%(100%,allthenon-zero

%eigenvalueswillbekept.

%IfPCARatio>

1,thePCAstep

%willkeepexactlyPCARatioprinciple

%components(doesnotexceedthe

%exactnumberofnon-zerocomponents).

%Output:

%eigvector-Eachcolumnisanembeddingfunction,foranew

%datapoint(rowvector)x,y=x*eigvector

%willbetheembeddingresultofx.

%eigvalue-ThesortedeigvalueofLDAeigen-problem.

%elapse-Timespentondifferentsteps

%Examples:

%fea=rand(50,70);

%gnd=[ones(10,1);

ones(15,1)*2;

ones(10,1)*3;

ones(15,1)*4];

%options=[];

%options.Fisherface=1;

%[eigvector,eigvalue]=LDA(gnd,options,fea);

%Y=fea*eigvector;

%SeealsoLPP,constructW,LGE

%Reference:

%P.N.Belhumeur,J.P.Hespanha,andD.J.Kriegman,揈igenfaces

%vs.fisherfaces:

recognitionusingclassspecificlinear

%projection,�IEEETransactionsonPatternAnalysisandMachine

%Intelligence,vol.19,no.7,pp.711-720,July1997.

%DengCai,XiaofeiHe,YuxiaoHu,JiaweiHan,andThomasHuang,

%"

LearningaSpatiallySmoothSubspaceforFaceRecognition"

CVPR'

2007

%DengCai,XiaofeiHe,JiaweiHan,"

SRDA:

AnEfficientAlgorithmfor

%LargeScaleDiscriminantAnalysis"

IEEETransactionsonKnowledgeand

%DataEngineering,2007.

%version2.1--June/2007

%version2.0--May/2007

%version1.1--Feb/2006

%version1.0--April/2004

%WrittenbyDengCai(dengcai2ATcs.uiuc.edu)

if~exist('

data'

'

var'

globaldata;

end

if(~exist('

options'

))

options=[];

if~isfield(options,'

Regu'

)|~options.Regu

bPCA=1;

if~isfield(options,'

PCARatio'

options.PCARatio=1;

end

else

bPCA=0;

ReguType'

options.ReguType='

;

ReguAlpha'

options.ReguAlpha=0.1;

tmp_T=cputime;

%======Initialization

[nSmp,nFea]=size(data);

iflength(gnd)~=nSmp

error('

gndanddatamismatch!

'

);

classLabel=unique(gnd);

nClass=length(classLabel);

Dim=nClass-1;

ifbPCA&

isfield(options,'

Fisherface'

)&

options.Fisherface

options.PCARatio=nSmp-nClass;

ifissparse(data)

data=full(data);

sampleMean=mean(data,1);

data=(data-repmat(sampleMean,nSmp,1));

bChol=0;

(nSmp>

nFea+1)&

(options.PCARatio>

=1)

DPrime=data'

*data;

DPrime=max(DPrime,DPrime'

[R,p]=chol(DPrime);

ifp==0

bChol=1;

%======================================

%SVD

ifbPCA

ifnSmp>

nFea

ddata=data'

ddata=max(ddata,ddata'

[eigvector_PCA,eigvalue_PCA]=eig(ddata);

eigvalue_PCA=diag(eigvalue_PCA);

clearddata;

maxEigValue=max(abs(eigvalue_PCA));

eigIdx=find(eigvalue_PCA/maxEigValue<

1e-12);

eigvalue_PCA(eigIdx)=[];

eigvector_PCA(:

eigIdx)=[];

[junk,index]=sort(-eigvalue_PCA);

eigvalue_PCA=eigvalue_PCA(index);

eigvector_PCA=eigvector_PCA(:

index);

%=======================================

ifoptions.PCARatio>

1

idx=options.PCARatio;

ifidx<

length(eigvalue_PCA)

eigvalue_PCA=eigvalue_PCA(1:

idx);

1:

elseifoptions.PCARatio<

sumEig=sum(eigvalue_PCA);

sumEig=sumEig*options.PCARatio;

sumNow=0;

foridx=1:

length(eigvalue_PCA)

sumNow=sumNow+eigvalue_PCA(idx);

ifsumNow>

=sumEig

break;

eigvalue_PCA=eigvalue_PCA.^-.5;

data=(data*eigvector_PCA).*repmat(eigvalue_PCA'

nSmp,1);

else

ddata=data*data'

[eigvector,eigvalue_PCA]=eig(ddata);

maxEigValue=max(eigvalue_PCA);

eigvector(:

eigvector=eigvector(:

eigvector_PCA=(data'

*eigvector).*repmat(eigvalue_PCA'

nFea,1);

data=eigvector;

cleareigvector;

if~bChol

%options.ReguAlpha=nSmp*options.ReguAlpha;

switchlower(options.ReguType)

case{lower('

)}

fori=1:

size(DPrime,1)

DPrime(i,i)=DPrime(i,i)+options.ReguAlpha;

Tensor'

DPrime=DPrime+options.ReguAlpha*options.regularizerR;

otherwise

ReguTypedoesnotexist!

Hb=zeros(nClass,nFea);

fori=1:

nClass,

index=find(gnd==classLabel(i));

classMean=mean(data(index,:

),1);

Hb(i,:

)=sqrt(length(index))*classMean;

elapse.timeW=0;

elapse.timePCA=cputime-tmp_T;

ifbPCA

[dumpVec,eigvalue,eigvector]=svd(Hb,'

econ'

eigvalue=diag(eigvalue);

eigIdx=find(eigvalue<

1e-3);

eigvalue(eigIdx)=[];

eigvalue=eigvalue.^2;

eigvector=eigvector_PCA*(repmat(eigvalue_PCA,1,length(eigvalue)).*eigvector);

WPrime=Hb'

*Hb;

WPrime=max(WPrime,WPrime'

dimMatrix=size(WPrime,2);

ifDim>

dimMatrix

Dim=dimMatrix;

ifisfield(options,'

bEigs'

ifoptions.bEigs

bEigs=1;

bEigs=0;

if(dimMatrix>

1000&

Dim<

dimMatrix/10)|(dimMatrix>

500&

dimMatrix/20)|(dimMatrix>

250&

dimMatrix/30)

ifbEigs

%disp('

useeigstospeedup!

option=struct('

disp'

0);

ifbChol

option.cholB=1;

[eigvector,eigvalue]=eigs(WPrime,R,Dim,'

la'

option);

[eigvector,eigvalue]=eigs(WPrime,DPrime,Dim,'

[eigvector,eigvalue]=eig(WPrime,DPrime);

[junk,index]=sort(-eigvalue);

eigvalue=eigvalue(index);

index);

ifDim<

size(eigvector,2)

1:

Dim);

eigvalue=eigvalue(1:

size(eigvector,2)

i)=eigvector(:

i)./norm(eigvector(:

i));

elapse.timeMethod=cputime-tmp_T;

elapse.timeAll=elapse.timePCA+elapse.timeMethod;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1