.9 Kết quả nhậndạng khi cú nhiễu

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu phương pháp nhận dạng mặt người dựa trên PCA LDA và mạng neural luận văn ths truyền dữ liệu và mạng máy tính (chuyên ngành đào tạo thí điểm) (Trang 77 - 86)

KẾT LUẬN Những kết quả luận văn đạt được:

- Tỡm hiểu được một cỏch tổng quan cỏc mụ hỡnh nhận dạng mặt người. Cú một cỏch nhỡn cú hệ thống về cỏc phương phỏp trớch trọn đặc trưng phục vụ cho quỏ trỡnh nhận dạng mặt người.

- Bằng cỏch kết hợp cỏc phương phỏp phõn tớch thống kờ và phương phỏp biến đổi hỡnh thỏi luận văn đó đạt được một phương phỏp khỏ hiệu quả đối với bài toỏn nhận dạng mặt người. Phương phỏp PCA và LDA trớch chọn những đặc trưng mang tớnh thống kờgiỳp hệ thống cú được những thụng tin đặc trưng tương đối đầy đủ của mỗi người.

- Đối với mỗi phương phỏp phõn tớch, sau khi được trớch chọn, cỏc đặc trưng sẽ được chuyển tới một mạng nơron lan truyền ngược để huấn luyện, mỗi phương phỏp cú một mạng riờng. Cỏc tham số trong quỏ trỡnh huấn luyện như số đặc trưng được trớch chọn, số nơron ẩn của mỗi mạng, dạng hàm kớch hoạt của mạng đó được lựa chọn sau rất nhiều thử nghiệm để cú được những giỏ trị phự hợp nhất đối với hệ thống về thời gian tớnh toỏn cũng như độ chớnh xỏc.

- Khi thực hiện nhậndạng, ảnh đầu vào sẽ được trớch chọn đặc trưng, cỏc đặc trưng này sẽ được đưa vào từng mạng nơron tương ứng với mỗi phương phỏp phõn tớch.Đầu ra của từng mạng sẽ là người tương ứng với kết quả của mỗi phương phỏp. Cỏc kết quả riờng lẻ này cú thể khỏc nhau, chỳng sẽ được so sỏnh với nhau dựa vào khoảng cỏch Euclide với ảnh đầu vào, kết quả của hệ thống sẽ là kết quả nào cú khoảng cỏch ngắn nhất. Bằng việc kết hợp như vậy, hệ thống đó tận dụng được tối đa những ưu điểm của từng phương phỏp phõn tớch, đồng thờiưu điểm của phương phỏp này đó bổ khuyết cho nhược điểm của phương phỏp kia, giỳp hệ thốngđạt được hiệu quả tốt nhất.

Mặc dự hệ thống đó đạt được độ chớnh xỏc khỏ cao, tuy nhiờn vẫn cũn một tỉ lệ nhỏ chưa chớnh xỏc do hệ thống chưa đỏnh giỏ được toàn bộ những đặc trưng của mặt người.

Hướng phỏt triển:

Trong những nghiờn cứu tiếp theo nhằm phỏt triển hoàn thiện hệ thống hơn, việc nhận dạng cú thể kết hợp thờm cỏc phương phỏp phõn tớch khỏc như nhận dạng mắt, nhận dạng miệng hay nhận dạng mũi là những đặc trưng quan trọng của khuụn mặt.

Hệ thống cú thể ỏp dụng cho việc nhận dạng sinh viờn trong phũng thi với danh sỏch cho trước, giỳp phũng thanh tra khảo thớ nhanh chúng xỏc định những sinh viờn nghi ngờ thi hộ. Đầu vào cho hệ thống là ảnh mặt người được lấy ra từ modul nhận dạng vựng mặt người (sử dụng thư viện Open CV kết hợp matlab), chuẩn hoỏ và tiền xử lý ảnh mặt người cần nhận dạng để đưa vào hệ thống với mạng nơron đó luyện theo danh sỏch và thư viện ảnh cho trước. Hệ thống sẽ nhanh chúng đưa ra kết luận ảnh mặt người đầu vào cú thuộc trong danh sỏch hay khụng.

TÀI LIỆU THAM KHẢO

1. PhạmViệt Bỡnh, Đỗ Năng Toàn,Xử ảnh.Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội, 2008.

2. Lương Mạnh Bỏ, Nguyễn Thanh Thuỷ, Nhập mụn xử lý ảnh số, Nhà xuất bản Khoa học và Kỹ thuật, 2002

3. Ben Krửse, Patrick van der Smagt (1996), An introduction to Neural Networks, The University ofAmsterdam.

4. Kresimir Delac, Mislav Grgic (2007),“PCA and LDA based Neural Networks

for Human Face Recognition”, Face Recognition, ISBN 978-3-902613-03-5, I-

Tech, Vienna, Austria.

5. Ethan Png (2004), Morphological Shared-Weight Neural Network for Face Recognition, University of Manchester Institute of Science and Technology.

6. Lindsay I.Smith (2002), A Tutorial on Principal Components Analysis, Cornell

University, USA.

7. William K.Pratt (2007), Digital Image Processing, John Wiley & Sons, Inc.,

Publication.

8. W.Zhao, R.Chellappa, P.J.Phillips, A.Rosenfeld (2003),“Face Recognition - A

Literature Survey”, ACM Computing Surveys, Vol. 35 (No. 4).

9. V.M.C.F.S.a.L. Chiara Turati (2006), "Newborns face recognition: Role of inner and outer facial features. Child Development".

PHỤ LỤC

Mó nguồn file PCA-based.m %===PCA-based approach

Data=struct('number',struct('image',[])); %Tap anh goc %---Lay du lieu anh

for PsnId=1:NumPsn for ImgId=1:NumImg

TmpImg=imread(['train_images\s' num2str(PsnId) '\' num2str(ImgId) '.pgm']); %Lay du lieu goc

Data(PsnId).number(2*ImgId-1).image=TmpImg;

Data(PsnId).number(2*ImgId).image=imrotate(TmpImg',270); end

end

%---Thuc hien PCA

DatMat=[]; %Ma tran du lieu anh huan luyen for PsnId=1:NumPsn

for ImgId=1:NumImg*2

TmpImg=reshape(Data(PsnId).number(ImgId).image',[MxN 1]); DatMat=horzcat(DatMat,TmpImg); %Xep cac anh thanh tung cot end

end

DatMat=double(DatMat);

min_frac=1e-5; %Chi lay cac eigenvector co eigenvalue co y nghia lon hon min_frac so voi variance cua tap du lieu

[DatNorm,MeanDat_P,StdDat_P]=prestd(DatMat); [DatTrans,TransMat_P]=prepca(DatNorm,min_frac); save MeanDat_P;

save StdDat_P; save TransMat_P;

%---Xay dung mang noron %Khoi tao va huan luyen mang

Net=newff(minmax(DatTrans),[NumHid NumOut],{'tansig' 'logsig'},'traingda'); Net.trainParam.min_grad=min_grad;

Net.trainParam.epochs=epochs; Net.trainParam.show=10000; Net=train(Net,DatTrans,TarVec); %Luu cac tham so cua mang IW_P=Net.IW{1}; save IW_P; LW_P=Net.LW{2}; save LW_P; b_P1=Net.b{1}; save b_P1; b_P2=Net.b{2}; save b_P2;

Mó nguồn file LDA-based.m %===LDA-based approach

Data=struct('number',struct('image',[])); %Tap anh goc %---Lay du lieu anh

for PsnId=1:NumPsn for ImgId=1:NumImg

TmpImg=imread(['train_images\s' num2str(PsnId) '\' num2str(ImgId) '.pgm']); %Lay du lieu goc

Data(PsnId).number(2*ImgId-1).image=TmpImg;

Data(PsnId).number(2*ImgId).image=imrotate(TmpImg',270); end

end

%---Thuc hien PCA

DatMat=[]; %Ma tran du lieu anh huan luyen for PsnId=1:NumPsn

DatMat=horzcat(DatMat,TmpImg); %Xep cac anh thanh tung cot end

end

DatMat=double(DatMat);

min_frac=1e-5; %Chi lay cac eigenvector co eigenvalue co y nghia lon hon min_frac so voi variance cua tap du lieu

[DatNorm,MeanDat_L,StdDat_L]=prestd(DatMat); [DatTrans,TransMat_L]=prepca(DatNorm,min_frac); save MeanDat_L;

save StdDat_L; save TransMat_L; %---Thuc hien LDA dim=size(DatTrans,1); meanD=mean(DatTrans,2); Sw=zeros(dim,dim); Sb=zeros(dim,dim); for i=1:NumPsn meanC=mean(DatTrans(:,(i-1)*NumImg*2+1:i*NumImg*2),2); for j=1:NumImg*2 tmp=DatTrans(:,(i-1)*NumImg*2+j)-meanC; Sw=Sw+tmp*tmp'; end tmp=meanC-meanD; Sb=Sb+tmp*tmp'; end Sw=Sw/(NumPsn*NumImg*2); Sb=Sb/NumPsn; [tmpEigVec,tmpEigVal]=eig(pinv(Sw)*Sb); EigVec_L=[]; for i=1:size(tmpEigVal,1) if tmpEigVal(i,i)>1e-10

EigVec_L=horzcat(EigVec_L,tmpEigVec(:,i)); end end EigVec_L=EigVec_L'; DatTrans=EigVec_L*DatTrans; save EigVec_L;

%---Xay dung mang noron %Khoi tao va huan luyen mang

Net=newff(minmax(DatTrans),[NumHid1NumOut],{'tansig''logsig'}, 'traingda'); Net.trainParam.min_grad=min_grad;

Net.trainParam.epochs=epochs; Net.trainParam.show=10000; Net=train(Net,DatTrans,TarVec); %Luu cac tham so cua mang IW_L=Net.IW{1}; save IW_L; LW_L=Net.LW{2}; save LW_L; b_L1=Net.b{1}; save b_L1; b_L2=Net.b{2}; save b_L2;

Mó nguồn file Recognize.m

%===Su dung mang noron de nhan dang anh function [Result]=Recognize(FileName,handles) globalvar;

tDat=[]; %Cac anh can nhan dang for PsnId=1:2

TmpImg=imread(['test_images\s' num2str(PsnId) '\' num2str(1) '.pgm']); TmpImg=reshape(TmpImg',[MxN 1]);

tDat=horzcat(tDat,TmpImg); end

tDatStd=trastd(tDat,MeanDat_P,StdDat_P); tDatTrans=trapca(tDatStd,TransMat_P); %Su dung mang noron PCA_based

Net=newff(minmax(tDatTrans),[NumHid NumOut],{'tansig' 'logsig'}); Net.IW{1}=IW_P; Net.LW{2}=LW_P; Net.b{1}=b_P1; Net.b{2}=b_P2; ImgI=imread(FileName); NewDat=double(reshape(ImgI',[MxN 1])); %Tien xu ly anh NewDatStd=trastd(NewDat,MeanDat_P,StdDat_P); NewDatTrans=trapca(NewDatStd,TransMat_P); ResultP=sim(Net,NewDatTrans); ResultPR=round(ResultP);

%Su dung mang noron LDA_based

tDatStd=trastd(tDat,MeanDat_L,StdDat_L); tDatTrans=trapca(tDatStd,TransMat_L); tDatTrans=EigVec_L*tDatTrans; NewDatStd=trastd(NewDat,MeanDat_L,StdDat_L); NewDatTrans=trapca(NewDatStd,TransMat_L); NewDatTrans=EigVec_L*NewDatTrans;

Net=newff(minmax(tDatTrans),[NumHid1 NumOut],{'tansig' 'logsig'}); Net.IW{1}=IW_L;

Net.LW{2}=LW_L;

Net.b{1}=b_L1;Net.b{2}=b_L2; ResultL=sim(Net,NewDatTrans); ResultLR=round(ResultL);

%---Tong hop ket qua

TmpI=reshape(ImgI',[MxN 1]); TmpI=double(TmpI);

TmpI=trastd(TmpI,MeanDat_P,StdDat_P); TmpI=trapca(TmpI,TransMat_P);

if MapP==0 MapP=1; end

if MapP>NumPsn MapP=NumPsn; end

ImgO=imread(['train_images\s' num2str(MapP) '\1.pgm']); TmpO=reshape(ImgO',[MxN 1]); TmpO=double(TmpO); TmpO=trastd(TmpO,MeanDat_P,StdDat_P); TmpO=trapca(TmpO,TransMat_P); distP=sum((TmpI-TmpO).^2).^0.5; TmpI=reshape(ImgI',[MxN 1]); TmpI=double(TmpI); TmpI=trastd(TmpI,MeanDat_L,StdDat_L); TmpI=trapca(TmpI,TransMat_L); TmpI=EigVec_L*TmpI; if MapL==0 MapL=1; end

if MapL>NumPsn MapL=NumPsn; end

ImgO=imread(['train_images\s' num2str(MapL) '\1.pgm']); TmpO=reshape(ImgO',[MxN 1]); TmpO=double(TmpO); TmpO=trastd(TmpO,MeanDat_L,StdDat_L); TmpO=trapca(TmpO,TransMat_L); TmpO=EigVec_L*TmpO; distL=sum((TmpI-TmpO).^2).^0.5; if MapP==MapL %|| MapP==MapM Result=MapP; else Result=MapL; end

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu phương pháp nhận dạng mặt người dựa trên PCA LDA và mạng neural luận văn ths truyền dữ liệu và mạng máy tính (chuyên ngành đào tạo thí điểm) (Trang 77 - 86)