?? facetrain.m
字號:
% Author: Scott Sanner% Email: ssanner@cs.stanford.edu% Course: CS223B, Winter% Desc: Main training implementation of the Rowley-Beluja-Kanade face detector%% For now, just a script... make it so that a picture filename can be passed%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Setup%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Neural net constantsFACE_T = 0.9;FACE_F = -0.9;% Load the image oval maskMASK = buildmask;NI = size(find(MASK),1);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Image Loading%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Load the face images, normalize, and set training vectorsFACES = loadimages('./scaled/s', {'01' '02' '04' '07' '11' '99'}, ... {'c' 'l' 'r' 'n' 'g'}, 'PNG', 1);FACES = augmentlr(FACES);[NORM_FACES, SHADING] = normalize(FACES, MASK);% Expand image set hereFACEV = buildimvector(NORM_FACES, MASK);FACER = buildresvector(NORM_FACES, FACE_T);% Load the non-face images, normalize, and set training vectorsNFACES = loadimages('./scaled/n', ... {'01' '02' '03' '04' '05' '06' '07' '08' '09' '10' '11' '12' '13' '14' ... '15' '16' '17' '18' '19' '20' '21' '22' '23' '24' '25' '26' '27' '28' ... '29' '30' '31' '32' '33' '34' '35' '36' '37' '38' '39' '40'}, ... {'x'}, 'PNG', 1);NFACES = augmentlr(NFACES);NFACES = augmentud(NFACES);[NORM_NFACES, NSHADING] = normalize(NFACES, MASK);% Expand image set hereNFACEV = buildimvector(NORM_NFACES, MASK);NFACER = buildresvector(NORM_NFACES, FACE_F);% Test imagesAmyBW = double(imread('./scaled/AmyBW.JPG'));GradBW = double(imread('./scaled/GradBW.JPG'));HeadsBW = double(imread('./scaled/HeadsBW.JPG'));% Display images% showimages(NORM_FACES, 5, 10, 1, 50, 1);% showimages(NORM_NFACES, 5, 5, 1, 25, 2);% pause;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Neural Net Training%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Build a neural net and train itNET = createnn(NI, 25, 1, FACE_F, FACE_T);[NET,PERF, ERR] = trainnn(NET,[NFACEV FACEV], [NFACER FACER], .10, 500);figure(1); plot(PERF(:,1),PERF(:,2),'b-',PERF(:,1),PERF(:,3),'r-');figure(2); plot(ERR (:,1),ERR (:,2),'b-',ERR (:,1),ERR (:,3),'r-');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Performance Testing%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Test performance - for now just test on original images; extend to% an image pyramid and return upper left corner of all 27x18 face % bounding boxesNUM_FACES = size(FACES,2);NUM_NFACES = size(NFACES,2);t0 = clock; ferr = 0;for i=1:NUM_FACES, TEST = classifynn(NET, FACES{i}, MASK,1,1); fprintf(1, '(Target, Test, Match): (%f,%f,%d)\n', FACE_T, TEST, TEST > 0); ferr = ferr + (TEST < 0);endnferr = 0;for i=1:NUM_NFACES, TEST = classifynn(NET, NFACES{i}, MASK,1,1); fprintf(1, '(Target, Test, Match): (%f,%f,%d)\n', FACE_F, TEST, TEST < 0); nferr = nferr + (TEST > 0);endfprintf(1, '\n(Face Err, Nonface Err, Total Err): (%1.3f,%1.3f,%1.3f)\n', ... ferr./NUM_FACES, nferr./NUM_NFACES, (ferr + nferr)./(NUM_FACES + NUM_NFACES));fprintf(1, 'Time to classify %d images: %5.3f\n', NUM_FACES+NUM_NFACES, etime(clock,t0));%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -