LDA人臉識(shí)別地matlab程序_第1頁
LDA人臉識(shí)別地matlab程序_第2頁
LDA人臉識(shí)別地matlab程序_第3頁
LDA人臉識(shí)別地matlab程序_第4頁
LDA人臉識(shí)別地matlab程序_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、實(shí)用文案LDAA臉識(shí)別的matlab程序以下是LDA白m文件函數(shù): 你稍稍改改就能用了!function eigvector, eigvalue, elapse = LDA(gnd,options,data)% LDA: Linear Discriminant Analysis% eigvector, eigvalue = LDA(gnd, options, data)% Input:%data - Data matrix. Each row vector of fea is a datapoint.%gnd - Colunm vector ofthe label information fo

2、r each%data point.%options - Struct value in Matlab. The fields in options%that can be set:%Regu - 1: regularized solution,%a* = argmax (a'X'WXa)/(a'X'Xa+ReguAlpha*I)%0: solve the sinularity problemby SVD %Default: 0%ReguAlpha - The regularization parameter.Valid%when Regu=1. Default

3、 value is0.1. % %ReguType - 'Ridge': Tikhonovregularization%'Custom': User provided%regularizationmatrix %Default: 'Ridge'%regularizerR - (nFea x nFea)regularization %matrix which should beprovided %if ReguType is 'Custom'.nFea is %the feature number of data%matrix%Fi

4、sherface - 1: Fisherface approach%PCARatio = nSmp - nClass%Default: 0%PCARatio - The percentage ofprincipal %component kept in the PCA%step. The percentage is%calculated based on the%eigenvalue. Default is 1%(100%, all the non-zero%eigenvalues%If PCARatio > 1, the PCAstep %will keep exactlyPCARat

5、io principle %components (does notexceed the %exact number of non-zero components).% Output:%eigvector - Each column is an embedding function, for anew%datapoint (row vector) x, y%will be the embedding result of x.%eigvalue - The sorted eigvalue of LDA eigen-problem.%elapse - Time spent on different

6、 steps% 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;%will be kept.=x*eigvector% % See also LPP, constructW, LGE %Reference:% P. N. Belhumeur, J. P. Hespanha, an

7、d D. J. Kriegman,掏 igenfaces% vs. fisherfaces: recognition using class specific linear% projection, ? IEEE Transactions on Pattern Analysis and Machine% Intelligence, vol. 19, no. 7, pp. 711-720, July 1997. % Deng Cai, Xiaofei He, Yuxiao Hu, Jiawei Han, and Thomas Huang,% "Learning a Spatially

8、Smooth Subspace for Face Recognition", CVPR'2007% Deng Cai, Xiaofei He, Jiawei Han, "SRDA: An Efficient Algorithm for% Large Scale Discriminant Analysis", IEEE Transactions on Knowledge and% Data Engineering, 2007.% version 2.1-June/2007% version 2.0 -May/2007% version 1.1-Feb/200

9、6% version 1.0 -April/2004% Written by Deng Cai (dengcai2 AT ) %if exist('data','var') global data;endif (exist('options','var') options =;endif isfield(options,'Regu') | options.Regu bPCA = 1;if isfield(options,'PCARatio') options.PCARatio

10、= 1;end elsebPCA = 0;if isfield(options,'ReguType') options.ReguType = 'Ridge'endif isfield(options,'ReguAlpha') options.ReguAlpha = 0.1;endendtmp_T = cputime;% = InitializationnSmp,nFea = size(data);if length(gnd) = nSmperror('gnd and data mismatch!');endclassLabel =

11、 unique(gnd);nClass = length(classLabel);Dim = nClass - 1;if bPCA & isfield(options,'Fisherface') & options.Fisherface options.PCARatio = nSmp - nClass;end if issparse(data)data = full(data);endsampleMean = mean(data,1);data = (data - repmat(sampleMean,nSmp,1);bChol = 0;if bPCA &

12、 (nSmp > nFea+1) & (options.PCARatio >= 1)DPrime = data'*data;DPrime = max(DPrime,DPrime');R,p = chol(DPrime);if p = 0bPCA = 0;bChol = 1;endend%=% SVD%= if bPCAif nSmp > nFea ddata = data'*data; ddata = max(ddata,ddata');eigvector_PCA, eigvalue_PCA = eig(ddata);eigvalue_

13、PCA = diag(eigvalue_PCA); clear ddata;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);%=if options.PCA

14、Ratio > 1idx = options.PCARatio;if idx < length(eigvalue_PCA)eigvalue_PCA = eigvalue_PCA(1:idx);eigvector_PCA = eigvector_PCA(:,1:idx);endelseif options.PCARatio < 1sumEig = sum(eigvalue_PCA);sumEig = sumEig*options.PCARatio;sumNow = 0;for idx = 1:length(eigvalue_PCA)sumNow = sumNow + eigva

15、lue_PCA(idx);if sumNow >= sumEig break;end end eigvalue_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); elseddata = data*data'ddata = max(ddata,ddata');eigvector, eigva

16、lue_PCA = eig(ddata);eigvalue_PCA = diag(eigvalue_PCA);clear ddata;maxEigValue = max(eigvalue_PCA);eigIdx = find(eigvalue_PCA/maxEigValue < 1e-12);eigvalue_PCA(eigIdx)=;eigvector(:,eigIdx)=;junk, index = sort(-eigvalue_PCA);eigvalue_PCA = eigvalue_PCA(index);eigvector = eigvector(:, index);%=if o

17、ptions.PCARatio > 1idx = options.PCARatio;if idx < length(eigvalue_PCA)eigvalue_PCA = eigvalue_PCA(1:idx);eigvector = eigvector(:,1:idx);endelseif options.PCARatio < 1sumEig = sum(eigvalue_PCA);sumEig = sumEig*options.PCARatio;sumNow = 0;for idx = 1:length(eigvalue_PCA) sumNow = sumNow + ei

18、gvalue_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',nFea,1);data = eigvector;clear eigvector;endelseif bCholDPrime = data'*data;% o

19、ptions.ReguAlpha = nSmp*options.ReguAlpha;switch lower(options.ReguType)case lower('Ridge')for i=1:size(DPrime,1)DPrime(i,i) = DPrime(i,i) + options.ReguAlpha; endcase lower('Tensor')DPrime = DPrime +options.ReguAlpha*options.regularizerR;case lower('Custom')DPrime = DPrime +

20、options.ReguAlpha*options.regularizerR;otherwiseerror('ReguType does not exist!');endDPrime = max(DPrime,DPrime');endendnSmp,nFea = size(data);Hb = zeros(nClass,nFea);for i = 1:nClass,index = find(gnd=classLabel(i);classMean = mean(data(index,:),1);Hb (i,:) = sqrt(length(index)*classMean

21、;endelapse.timeW = 0;elapse.timePCA = cputime - tmp_T;tmp_T = cputime;if bPCAdumpVec,eigvalue,eigvector = svd(Hb,'econ');eigvalue = diag(eigvalue);eigIdx = find(eigvalue < 1e-3);eigvalue(eigldx)=;eigvector(:,eigIdx)=;eigvalue = eigvalue.A2;eigvector =eigvector_PCA*(repmat(eigvalue_PCA,1,l

22、ength(eigvalue).*eigvector); elseWPrime = Hb'*Hb;WPrime = max(WPrime,WPrime');dimMatrix = size(WPrime,2);if Dim > dimMatrixDim = dimMatrix;endif isfield(options,'bEigs')if options.bEigsbEigs = 1;elsebEigs = 0; end elseif (dimMatrix > 1000 & Dim < dimMatrix/10) | (dimMatrix > 500 & Dim < dimMatrix/20) | (dimMatrix > 250 & Dim < di

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論