Xác định khuôn mặt người dựa trên mạng nơron

75 534 3
Xác định khuôn mặt người dựa trên mạng nơron

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mạng neural và rút trích đặc điểm đặc trưng 2.1 Mạng neural Mô hình mạng nơ ron gồm 3 lớp: lớp nhập, lớp ẩn và lớp xuất. Mỗi nút trong lớp nhập nhận giá trị của một biến độc lập và chuyển vào mạng. Dữ liệu từ tất cả các nút trong lớp nhập được tích hợp và chuyển kết quả cho các nút trong lớp ẩn. Dữ liệu từ lớp ẩn sẽ tiếp tục đưa đến lớp xuấtViệc học trong mạng neural gồm có 3 bước chính:•Bước 1:Tính toán đầu ra•Bước 2:So sánh đầu ra với đầu vào mong đợi•Bước 3: Nếu chính xác thì giữ lại trọng số và kết thúc quá trình học. Ngược lại thì thay đổi trọng số rồi quay lại bước đầu tiên 2.2 Rút trích đặc trưng Trích rút đặc trưng của khuôn mặt bằng phương pháp FFT kết hợp với bộ lọc Gabor (Gabor filter). Phương pháp này gồm 2 bước chính:•Bước 1 : xác định vị trí của điểm đặc trưng•Bước 2: Tính toán vector đặc trưng.3. Chuẩn bị cơ sở dữ liệu Trong phần này, chúng em chuẩn bị 3 tập dữ liệu Tập face, nonface phục vụ cho quá trình huấn luyện mạng neural và tập ảnh cần để kiểm tra hệ thống Tập face và nonface được lấy từ nguồn chuyên phục vụ xác định khuôn mặt. Chúng đều là ảnh xám có kích thước chuẩn là 27x18 pixel.http:vasc.ri.cmu.eduidbimagesfacefrontal_imagesimages.html4. Áp dụng dò tìm khuôn mặt Áp dụng tập bộ dò tìm dựa trên mạng neural , và sau đó sử dụng một bộ phân xử kết hợp các đầu ra. Quá trình dò tìm sử dụng phương pháp chóp ảnh, chóp ảnh cho phép tìm kiếm mọi kích thước của khuôn mặt. Sử dụng 1 số giữa giá trị 1 và 1 để chỉ ra vị trí đâu là khuôn mặt, đâu không phải là khuôn mặt. Giá trị 1 tương ứng với vị trí là khuôn mặt và 1 tương ứng với vị trí không phải là khuôn mặt. Ngoài ra ta còn sử dụng giá trị ngưỡng để giúp cho việc phân loại trở nên chính xác hơn. Trong đồ án này ta lấy giá trị ngưỡng là 0.5. Tức là tất cả các mẫu dương sẽ chứa vị trí khuôn mặt, còn các mẫu âm chứa phong cảnh.5. Quá trình xây dựng và kết quả của phương pháp xác định khuôn mặt dựa trên mạng neural.5.1Các bước chính 1.Tạo cơ sở dữ liệu2.Thiết lập mạng neural cơ bản3.Tiến hành quá trình huấn luyện4.xác định vị trí khuôn mặtTa sử dụng matlab toolbox để xây dựng mạng neural cơ bản có 2160 lớp vào, 100 lớp ẩn và 1 lớp ra và tiến hành quá trình huấn luyện với 4 hàm cơ bản trainscg, traincgb, traincgp và traincgfTỉ lệ thành công của phương pháp được tính theo công thức:Tỉ lệ thành công(%)= 100%(tỉ lệ phát hiện sai(%) +tỉ lệ khuôn mặt khôngphát hiện(%)) 4

LỜI CAM ĐOAN Chúng tên : Võ Như Thông 07DT3 Lê Thị Cẩm Vân 07DT4 Sinh viên : Khoa Điện Tử-Viễn Thông, khóa 07 Đại Học Bách Khoa Đà Nẵng Đề tài : Xác định khuôn mặt người dựa mạng Nơ-ron Chúng xin cam đoan đồ án tốt nghiệp không chép hoàn toàn đồ án hay đề tài nghiên cứu khoa học Nếu vi phạm xin chịu hoàn toàn trách nhiệm trước nhà trường khoa Đà nẵng, Ngày 20 tháng năm 2012 Sinh viên thực Võ Như Thông 07DT3 Lê Thị Cẩm Vân 07DT4 Trang i MỤC LỤC LỜI CAM ĐOAN i MỤC LỤC ii CÁC TỪ VIẾT TẮT iii DANH MỤC CÁC HÌNH VẼ .iv LỜI MỞ ĐẦUvi 1.6 Kết luận chương xiii 4.4 Kết luận chương xxxviii 5.1 Giới thiệu chương xxxix 5.4 Chương trình tạo mạng Nơ-ron đơn giản .xl 5.5 Chương trình huấn luyện phân lớp xli 5.5.1 Trainscg xli 5.5.2 Traincgb, traincgf, traincgp xlii 5.6 Tổng kết chương xlii CHƯƠNG 6: KẾT QUẢ MÔ PHỎNG .xlii 6.1 Giới thiệu chương xlii 6.2 Kết với TRAINSCG xliii 6.3 Kết với TRAINCGB xlv 6.6 So sánh kết .li 6.8 Kết thu thay đổi số Nơ-ron lớp ẩn với hàm traincgb liii 6.9 Kết thu thay đổi số Nơ-ron lớp ẩn với hàm traincgf liv 6.10 Kết thu thay đổi số Nơ-ron lớp ẩn với hàm traincgp lv 6.11 So sánh kết hàm thay đổi số Nơ-ron lớp ẩn .lvi 6.12 Kết luận chương .lvii HƯỚNG PHÁT TRIỂN ĐỀ TÀI lvii PHỤ LỤC 60 Trang ii CÁC TỪ VIẾT TẮT FFT : Fast Fourier Transform PCA : Principal Component Analysis MLP : Multi Layer Perception TRAINSCG: Scaled Cọnjugate Gradient Backpropagation TRAINCGB: Conjugate gradient backpropagation with Powell-Beale restarts TRAINCGP: Conjugate gradient backpropagation with Polak-Ribiére updates TRAINCGF: Conjugate gradient backpropagation with Fletcher-Reeves updates Trang iii DANH MỤC CÁC HÌNH VẼ Hình 1.1 Ví dụ xác định khuôn mặt Hình 2.1 Một số mẫu mặt người làm sở liệu hệ thống xác định khuôn mặt Hình 2.2 Một sỗ mẫu mặt người làm sở liệu cho hệ thống xác định Hình 2.3 Các mẫu dùng để kiểm tra Hình 2.4 Trái: Mẫu khuôn mặt chuẩn Phải: Các vị trí đặc trưng Hình 2.5 Các mẫu khuôn mặt thẳng Hình 2.6 Các bước việc tiền xử lí windown Hình 2.7 Phân đoạn ảnh với thuật toán E Hình 3.1 Mô hình mạng Nơ-ron Hình 3.2 Mạng Nơ-ron truyền thẳng lớp Hình 3.3 Mạng Nơ-ron truyền thẳng nhiều lớp Hình 3.4 Ảnh thực phép biến đổi FFT Hình 3.5 Biến đổi lọc Gabor Hình 3.6 Ví dụ đáp ứng khuôn mặt dựa lọc Gabor Hình 3.7 Các điểm đặc trưng khuôn mặt người trích từ đáp ứng lọc Gabor Hình 3.8 Các bước thực trình rút trích đặc trưng Hình 4.1 Thuật toán dò tìm khuôn mặt Hình 4.2 Ảnh minh họa chưa sử dụng heuristic Hình 4.3 Kết sử dụng heuristic Hình 4.4 Ảnh minh họa việc đánh cửa sổ sử dụng Heuristic Hình 4.5 AND đầu từ hai mạng vị trí tỷ lệ khác cải thiện độ xác dò tìm Hình5.1 Lưu đồ bước chương trình Trang iv Hình 5.2 Lưu đồ chương trình tạo sở liệu Hình 5.3 Cấu trúc mạng Nơ-ron Hình 6.1 Các ảnh kiểm tra với phương pháp trainscg Hình 6.2 Bảng thống kê số liệu ứng dụng phương pháp trainscg Hình 6.3 Các ảnh kiểm tra với phương pháp traincgb Hình 6.4 Bảng thống kê số liệu ứng dụng phương pháp traincgb Hình 6.5 Các ảnh kiểm tra với phương pháp traincgf Hình 6.6 Bảng thống kê số liệu ứng dụng phương pháp traincgf Hình 6.7 Các ảnh kiểm tra với phương pháp traincgp Hình 6.8 Bảng thống kê số liệu ứng dụng phương pháp traincgp Hình 6.9 kết phương pháp Trang v LỜI MỞ ĐẦU Trong năm gần đây, ứng dụng trí tuệ nhân tạo ngày phát triển đánh giá cao Một lĩnh vực quan tâm trí tuệ nhân tạo nhằm tạo ứng dụng thông minh, có tính người nhận dạng Đối tượng cho việc nghiên cứu nhận dạng phong phú đa dạng Trong đề tài em chọn đối tượng khuôn mặt Khuôn mặt đóng vai trò quan trọng trình giao tiếp người với người, mang lượng thông tin giàu có, chẳng hạn xác định giới tính, tuổi tác, trạng thái cảm xúc người đó, khảo sát chuyển động đường nét khuôn mặt biết người muốn nói gì.Trong hệ thống nhận dạng người trình xác định khuôn mặt người đánh giá bước khó khăn quan trọng so với bước lại hệ thống Do đó, xác định khuôn mặt điều quan trọng cần thiết Đó lí để em chọn đề tài : “XÁC ĐỊNH KHUÔN MẶT NGƯỜI DỰA TRÊN MẠNG NƠ-RON” Đề tài chia thành chương với nội dung sau: • Chương 1: Giới thiệu tổng quan hệ thống xác định khuôn mặt người Trong chương này, đồ án trình bày mô định nghĩa toán xác định khuôn mặt Nêu khó khăn tồn phương pháp xác định khuôn mặt Đồng thời xây dựng theo hướng tiếp cận dựa diện mạo Cụ thể ứng dụng mạng Nơ-ron • Chương : Chuẩn bị sở liệu bước tiền xử lý Trong chương trình bày sở xây dựng tập sở liệu giai đoạn tiền xử lí để nâng cao chất lượng hình ảnh • Chương 3: Mạng Nơ-ron rút trích đặc điểm đặc trưng khuôn mặt Trong chương trình trình bày hai kĩ thuật quan trọng hệ thống xác định Trang vi khuôn mặt: Mạng Nơ-ron kĩ thuật rút trích đặc trưng phương pháp FFT kết hợp với lọc Gabor • Chương : Dò tìm khuôn mặt Trong chương tổng hợp kĩ thuật nhằm xác định vị trí khuôn mặt • Chương 5: Lưu đồ thuật toán • Chương 6: Kết mô phương pháp xác định khuôn mặt người dựa mạng Nơ-ron Mặc dù cố gắng nhiều, thời gian có hạn, khả dịch hiểu tài liệu chưa tốt nên nội dung đồ án tránh khỏi thiếu sót, mong bảo, góp ý thầy cô bạn Em xin chân thành cảm ơn thầy cô khoa Điện tử-Viễn thông, Đại học bách khoa Đà Nẵng tận tình dạy bảo, truyền đạt nhiều kiến thức quí báu cho chúng em Đặc biệt em xin gửi lời cảm ơn chân thành đến Tiến Sĩ Bùi Thị Minh Tú tận tình giúp đỡ dẫn, định hướng đề tài cho em suốt thời gian làm đồ án tốt nghiệp Chương 1: TỔNG QUAN VỀ HỆ THỐNG XÁC ĐỊNH KHUÔN MẶT NGƯỜI 1.1 Giới thiệu chương Hơn thập kỷ qua có nhiều công trình nghiên cứu toán xác định khuôn mặt người từ ảnh đen trắng, xám đến ảnh màu ngày hôm Các nghiên cứu Trang vii từ toán đơn giản, ảnh có khuôn mặt người nhìn thẳng vào thiết bị thu hình đầu tư thẳng đứng ảnh đen trắng Cho đến ngày hôm toán mở rộng cho ảnh màu, có nhiều khuôn mặt ảnh, có nhiều tư thay đổi ảnh Không mà mở rộng phạm vi từ môi trường xung quanh đơn giản (trong phòng thí nghiệm) môi trường xung quanh phức tạp (như tự nhiên) nhằm đáp ứng nhu cầu thật nhiều người 1.2 Hệ thống xác định khuôn mặt ứng dụng 1.2.1 Định nghĩa Xác định khuôn mặt người (Face Detection) kỹ thuật máy tính để xác định vị trí kích thước khuôn mặt người ảnh Kỹ thuật nhận biết đặc trưng khuôn mặt bỏ qua thứ khác, như: tòa nhà, cối, thể… Hệ thống xác định khuôn mặt Input output Hình 1.1 Ví dụ xác định khuôn mặt 1.2.2 Một số lĩnh vực ứng dụng xác định khuôn mặt Xác định khuôn mặt ứng dụng nhiều lĩnh vực: * Hệ thống tương tác người máy (điều kiển máy tính qua cử động khuôn mặt) * Hệ thống nhận dạng người (giúp cho quan an ninh quản lý tốt người) * Hệ thống quan sát, bảo vệ, quản lý việc vào cho quan công ty Trang viii * Hệ thống trợ giúp lái xe, hệ thống phân tích cảm xúc khuôn mặt, hệ thống nhận dạng khuôn mặt cho máy ảnh kỹ thuật số 1.3 Một số phương pháp xác định khuôn mặt người Hiện có nhiều phương pháp xác định khuôn mặt người, dựa vào tính chất phương pháp, ta chia làm bốn hướng tiếp cận sau: o Hướng tiếp cận dựa tri thức: Mã hóa hiểu biết người loại khuôn mặt người thành luật Thông thường luật mô tả quan hệ đặc trưng o Hướng tiếp cận dựa đặc trưng không thay đổi: Mục tiêu thuật toán tìm đặc trưng mô tả cấu trúc khuôn mặt người mà đặc trưng không thay đổi tư khuôn mặt, vị trí đặt thiết bị thu hình điều kiện ánh sáng thay đổi o Hướng tiếp cận dựa so khớp mẫu: Dùng mẫu chuẩn khuôn mặt người (các mẫu chọn lựa lưu trữ) để mô tả cho khuôn mặt người hay đặc trưng khuôn mặt (các mẫu phải chọn cho tách biệt theo tiêu chuẩn mà tác giả định để so sánh) Các mối tương quan liệu ảnh đưa vào mẫu dùng để xác định khuôn mặt người o Hướng tiếp cận dựa diện mạo: Trái ngược hẳn với so khớp mẫu, mô hình (hay mẫu) học từ tập ảnh huấn luyện trước Sau hệ thống (mô hình) xác định khuôn mặt người Hay số tác giả gọi hướng tiếp cận hướng tiếp cận theo phương pháp học 1.3.1 Hướng tiếp cận dựa tri thức Trong hướng tiếp cận này, luật phụ thuộc lớn vào tri thức tác giả nghiên cứu toán xác định khuôn mặt người Đây hướng tiếp cận dạng topdown Dễ dàng xây dựng luật để mô tả đặc trưng khuôn mặt quan hệ tương ứng Trang ix Ví dụ: khuôn mặt thường có hai mắt đối xứng qua trục thẳng đứng khuôn mặt có mũi, miệng Các quan hệ đặc trưng mô tả quan hệ khoảng cách vị trí Thông thường tác giả trích đặc trưng khuôn mặt trước tiên để có ứng viên, sau ứng viên xác định thông qua luật để biết ứng viên khuôn mặt ứng viên khuôn mặt Thường áp dụng trình xác định để giảm số lượng xác định sai 1.3.2 Hướng tiếp cận dựa đặc trưng không thay đổi Đây hướng tiếp cận theo kiểu bottom-up Các tác giả cố gắng tìm đặc trưng không thay đổi khuôn mặt người để xác định khuôn mặt người Dựa nhận xét thực tế, người dễ dàng nhận biết khuôn mặt đối tượng tư khác điều kiện ánh sáng khác nhau, phải tồn thuộc tính hay đặc trưng không thay đổi Có nhiều nghiên cứu xác định đặc trưng khuôn mặt có khuôn mặt ảnh hay không Các đặc trưng như: lông mày, mắt, mũi, miệng, đường viền tóc trích phương pháp xác định cạnh Trên sở đặc trưng này, xây dựng mô hình thống kê để mô tả quan hệ đặc trưng xác định tồn khuôn mặt ảnh 1.3.3 Hướng tiếp cận dựa dựa so khớp mẫu Trong so khớp mẫu, mẫu chuẩn khuôn mặt (thường khuôn mặt chụp thẳng) xác định trước xác định tham số thông qua hàm Từ ảnh đưa vào, tính giá trị tương quan so với mẫu chuẩn đường viền khuôn mặt, mắt, mũi miệng Thông qua giá trị tương quan mà tác giả định có hay tồn khuôn mặt ảnh Hướng tiếp cận có lợi dễ cài đặt, không hiệu tỷ lệ, tư thế, hình dáng thay đổi 1.3.4 Hướng tiếp cận dựa diện mạo Trang x TÀI LIỆU THAM KHẢO while (1==1) choice = menu(' XAC DINH KHUON MAT ', ' TAO CO SO DU LEIU ', ' THIET LAP MANG NO-RON ', HUAN LUYEN MANG NO-RON ', ' KIEM TRA ANH ', ' THOAT '); ' if (choice ==1) IMGDB = loadimages; end if (choice == 2) createffnn end if (choice == 3) net = trainnet(net,IMGDB); end if (choice == 4) pause(0.001); [file_name file_path] = uigetfile ('*.jpg'); if file_path ~= im = imread ([file_path,file_name]);[m n t] = size(im); while m > 400 || n > 400 im = imresize(im, 0.9); [m n t] = size(im); end try im = rgb2gray(im); end TÀI LIỆU THAM KHẢO tic im_out = imscan (net,im); toc figure;imshow(im_out,'notruesize'); end end if (choice == 5) clear all; clc; close all; return; end end * Chương trình con: * Trainnet function NET = trainnet(net,IMGDB) net.trainFcn = 'trainscg'; %net.trainFcn = 'traincgb'; %net.trainFcn = 'traincgp'; %net.trainFcn = 'traincgf'; net.trainParam.lr = 0.4; net.trainParam.epochs = 400; net.trainParam.show = 10; net.trainParam.goal = 1e-3; T{1,1} = cell2mat(IMGDB(2,:)); P{1,1} = cell2mat(IMGDB(3,:)); net = train(net,P,T); TÀI LIỆU THAM KHẢO save net net NET = net; %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Loadimage function IMGDB = loadimages face_folder = 'face/'; %DIA CHI TAP ANH FACE non_face_folder = 'non-face/'; %DIA CHI TAP ANH NON-FACE file_ext = '.png'; out_max = 0.9; out_min = -0.9; if exist('imgdb.mat','file') load imgdb; else IMGDB = cell (3,[]); end fprintf ('Loading Faces '); folder_content = dir ([face_folder,'*',file_ext]); nface = size (folder_content,1); for k=1:nface string = [face_folder,folder_content(k,1).name]; image = imread(string); [m n] = size(image); if (m~=27 || n~=18) continue; end f=0; for i=1:length(IMGDB) if strcmp(IMGDB{1,i},string) TÀI LIỆU THAM KHẢO f=1; end end if f==1 continue; end fprintf ('.'); IM {1} = im2vec (image); IM {2} = im2vec (fliplr(image)); IM {3} = im2vec (circshift(image,1)); IM {4} = im2vec (circshift(image,-1)); IM {5} = im2vec (circshift(image,[0 1])); IM {6} = im2vec (circshift(image,[0 -1])); IM {7} = im2vec (circshift(fliplr(image),1)); IM {8} = im2vec (circshift(fliplr(image),-1)); IM {9} = im2vec (circshift(fliplr(image),[0 1])); IM {10} = im2vec (circshift(fliplr(image),[0 -1])); for i=1:10 IMGDB {1,end+1}= string; IMGDB {2,end} = out_max; IMGDB (3,end) = {IM{i}}; end end fprintf ('\nLoading non-faces '); folder_content = dir ([non_face_folder,'*',file_ext]); nnface = size (folder_content,1); for k=1:nnface TÀI LIỆU THAM KHẢO string = [non_face_folder,folder_content(k,1).name]; image = imread(string); [m n] = size(image); if (m~=27 || n~=18) continue; end f=0; for i=1:length(IMGDB) if strcmp(IMGDB{1,i},string) f=1; end end if f==1 continue; end fprintf ('.'); IM {1} = im2vec (image); IM {2} = im2vec (fliplr(image)); IM {3} = im2vec (flipud(image)); IM {4} = im2vec (flipud(fliplr(image))); for i=1:4 IMGDB {1,end+1}= string; IMGDB {2,end} = out_min; IMGDB (3,end) = {IM{i}}; end end fprintf('\n'); save imgdb IMGDB; TÀI LIỆU THAM KHẢO %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Imscan function im_out = imscan (net,im) close all SCAN_FOLDER = 'imscan/'; % CAC THAM SO UT_FOLDER = 'imscan/under-thresh/'; TEMPLATE1 = 'template1.png'; TEMPLATE2 = 'template2.png'; Threshold = 0.5; DEBUG = 0; warning off; delete ([UT_FOLDER,'*.*']); delete ([SCAN_FOLDER,'*.*']); if (DEBUG == 1) mkdir (UT_FOLDER); mkdir (SCAN_FOLDER); end [m n t]=size(im); C1 = mminmax(double(im)); C2 = mminmax(double(imread (TEMPLATE1))); C3 = mminmax(double(imread (TEMPLATE2))); Corr_1 = double(conv2 (C1,C2,'same')); Corr_2 = double(conv2 (C1,C3,'same')); Cell.state = int8(imregionalmax(Corr_1) | imregionalmax(Corr_2)); Cell.state(1:13,:)=-1; Cell.state(end-13:end,:)=-1; Cell.state(:,1:9)=-1; Cell.state(:,end-9:end)=-1; Cell.net = ones(m,n)*-1; TÀI LIỆU THAM KHẢO [LUTm LUTn]= find(Cell.state == 1); imshow(im); hold on plot(LUTn,LUTm,'.y');pause(0.01); while (1==1) [i j] = find(Cell.state==1,1); if isempty(i) break; end imcut = im(i-13:i+13,j-9:j+8); Cell.state(i,j) = -1; Cell.net(i,j) = sim(net,im2vec(imcut)); if Cell.net(i,j) < -0.95 for u_=i-3:i+3 for v_=j-3:j+3 try Cell.state(u_,v_)=-1; end end end plot(j,i,'.k');pause(0.01); continue; elseif Cell.net(i,j) < -1*Threshold plot(j,i,'.m');pause(0.01); continue; elseif Cell.net(i,j) > 0.95 plot(j,i,'.b');pause(0.01); TÀI LIỆU THAM KHẢO for u_=i-13:i+13 for v_=j-9:j+9 try Cell.state(u_,v_)=-1; end end end elseif Cell.net(i,j) > Threshold plot(j,i,'.g');pause(0.01); elseif Cell.net(i,j) < Threshold plot(j,i,'.r');pause(0.01); end for i_=-1:1 for j_=-1:1 m_=i+i_; n_=j+j_; if (Cell.state(m_,n_) == -1 || Cell.net(m_,n_)~=-1) continue; end imcut = im(m_-13:m_+13,n_-9:n_+8); Cell.net(m_,n_) = sim(net,im2vec(imcut)); if Cell.net(m_,n_) > 0.95 plot(n_,m_,'.b');pause(0.01); for u_=m_-13:m_+13 for v_=n_-9:n_+9 try Cell.state(u_,v_)=-1; TÀI LIỆU THAM KHẢO end end end continue; end if Cell.net(m_,n_) > Threshold Cell.state(m_,n_) = 1; plot(n_,m_,'.g');pause(0.01); if (DEBUG == 1) imwrite(imcut,[SCAN_FOLDER,'@',int2str(m_),',',int2str(n_),' (',int2str(fix(Cell.net(m_,n_)*100)),'%).png']); end else Cell.state(m_,n_) = -1; plot(n_,m_,'.r');pause(0.01); if (DEBUG == 1) imwrite(imcut,[UT_FOLDER,'@',int2str(m_),',',int2str(n_),' (',int2str(fix(Cell.net(m_,n_)*100)),'%).png']); end end end end end %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ hold off figure;imshow (Cell.net,[]); xy_ = Cell.net > Threshold; TÀI LIỆU THAM KHẢO xy_ = imregionalmax(xy_); xy_ = imdilate (xy_,strel('disk',2,4)); [LabelMatrix,nLabel] = bwlabeln(xy_,4); CentroidMatrix = regionprops(LabelMatrix,'centroid'); xy_ = zeros(m,n); for i = 1:nLabel xy_(fix(CentroidMatrix(i).Centroid(2)), fix(CentroidMatrix(i).Centroid(1))) = 1; end xy_ = drawrec(xy_,[27 18]); im_out (:,:,1) = im; im_out (:,:,2) = im; im_out (:,:,3) = im; for i = 1:m for j=1:n if xy_(i,j)==1 im_out (i,j,1)=0; im_out (i,j,2)=255; im_out (i,j,3)=0; end end end %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Im2vec function IMVECTOR = im2vec (W27x18) load gabor; W27x18 = adapthisteq(W27x18,'Numtiles',[8 3]); TÀI LIỆU THAM KHẢO Features135x144 = cell(5,8); for s = 1:5 for j = 1:8 Features135x144{s,j} = ifft2(G{s,j}.*fft2(double(W27x18),32,32),27,18); end end Features135x144 = abs(cell2mat(Features135x144)); Features135x144 (3:3:end,:)=[]; Features135x144 (2:2:end,:)=[]; Features135x144 (:,3:3:end)=[]; Features135x144 (:,2:2:end)=[]; Features45x48 = premnmx(Features135x144); IMVECTOR = reshape (Features45x48,[2160 1]); %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Create_gabor close all; clear all; clc; G = cell(5,8); for s = 1:5 for j = 1:8 G{s,j}=zeros(32,32); end end for s = 1:5 for j = 1:8 TÀI LIỆU THAM KHẢO G{s,9-j} = gabor([32 32],(s-1),j-1,4*pi/5,sqrt(2),3*pi/2); end end figure; for s = 1:5 for j = 1:8 subplot(5,8,(s-1)*8+j); imshow(real(G{s,j}),[]); end end for s = 1:5 for j = 1:8 G{s,j}=fft2(G{s,j}); end end save gabor G %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Gabor function Psi = gabor (w,nu,mu,Kmax,f,sig) m = w(1); n = w(2); K = Kmax/f^nu * exp(i*mu*pi/8); Kreal = real(K); Kimag = imag(K); NK = Kreal^2+Kimag^2; Psi = zeros(m,n); for x = 1:m TÀI LIỆU THAM KHẢO for y = 1:n Z = [x-m/2;y-n/2]; Psi(x,y) = (sig^(-2))*exp((-.5)*NK*(Z(1)^2+Z(2)^2)/(sig^2))* (exp(i*[Kreal Kimag]*Z)-exp(-(sig^2)/2)); end end %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Create_ffnn net = network; net.numInputs = 1; net.numLayers = 2; net.biasConnect = [1;1]; net.inputConnect = [1; ]; net.layerConnect = [0 ; ]; net.outputConnect = [0 1]; net.targetConnect = [0 1]; netInputs = ones (2160,2); netInputs (1:2160,1)= -1; net.inputs{1}.range = netInputs; net.layers{1}.size = 100; net.layers{2}.size = 1; net.layers{1:2}.transferFcn = 'tansig'; net.layers{1:2}.initFcn = 'initnw'; net.initFcn = 'initlay'; net.performFcn = 'msereg'; net.trainFcn = 'trainscg'; %net.trainFcn = 'traincgb'; TÀI LIỆU THAM KHẢO %net.trainFcn = 'traincgp'; %net.trainFcn = 'traincgf'; net = init(net) save net net %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Drawrec function out = drawrec (in,w) [m n]=size(in); [LUTm LUTn]=find(in); out = zeros (m,n); for i =1:size(LUTm,1) try out (LUTm(i),LUTn(i))=0; end try out (LUTm(i)-14:LUTm(i)+13,LUTn(i)-9)=1; end try out (LUTm(i)-14:LUTm(i)+13,LUTn(i)+8)=1; end try out (LUTm(i)-14,LUTn(i)-9:LUTn(i)+8)=1; end try out (LUTm(i)+13,LUTn(i)-9:LUTn(i)+8)=1; end TÀI LIỆU THAM KHẢO end %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Minimax function output = mminmax(input) max_ = max(max(input)); min_ = min(min(input)); output = ((input-min_)/(max_-min_) - 0.5) * 2; [...]... toán xác định khuôn mặt Việc xác định khuôn mặt người có những khó khăn nhất định như sau: • Tư thế khuôn mặt (pose): của khuôn mặt đối với máy ảnh như: nhìn thẳng, nhìn nghiêng hay nhìn từ trên xuống Cùng trong một ảnh có thể có nhiều khuôn mặt ở những tư thế khác nhau • Nội dung khuôn mặt: khuôn mặt chứa đầy đủ các thông tin như: mắt, mũi, miệng, hay thiếu một vài đặc trưng nào đó • Trạng thái khuôn. .. trọng của khuôn mặt, đồng thời tiến hành phân tích độ nhạy để lọc bỏ các thông tin dư thừa • Dò tìm: các khuôn mặt tiềm năng đã chuẩn hoá về vị trí, tư thế, và độ sáng trong hai bước đầu tiên được khảo sát để xác định chúng có thực sự là khuôn mặt hay không Quyết định này được thực hiện bằng mạng Nơ-ron đã huấn luyện với nhiều ảnh mẫu khuôn mặt và không khuôn mặt • Quyết định: Kết hợp nhiều mạng để có... một quyết định có biểu diễn đối tượng hay không Huấn luyện mạng neural để dò tìm khuôn mặt là một công việc nhiều thách thức, vì khó khăn trong việc phân chia các ảnh “không khuôn mặt Không như việc nhận dạng khuôn mặt, trong đó các lớp phân biệt là các khuôn mặt khác nhau Đối với việc phát hiện khuôn mặt các lớp phân biệt bao gồm: lớp “ảnh có chứa khuôn mặt và lớp“ảnh không chứa khuôn mặt Dễ dàng... vị trí, hướng, và tỷ lệ các khuôn mặt Việc canh biên được tính trực tiếp từ các ảnh Và nó tạo ra không gian ảnh khuôn mặt tối thiểu Cường độ ảnh khuôn mặt có thể biến đổi nhiều, làm cho một số khuôn mặt khó canh biên với nhau Ta dùng giải pháp gán nhãn thủ công các mẫu khuôn mặt Bước tiếp theo là dùng thông tin này để canh biên các khuôn mặt với khuôn mặt khác Trước hết định nghĩa canh biên giữa hai... trúc mạng đều quá lớn ,vì vậy khi áp dụng vào trường hợp cụ thể phải xác định rõ ràng số lượng tầng ,số lượng node , tỉ lệ … cho từng trường hợp Theo đánh giá của các chuyên gia thì phương pháp xác định mặt người bằng mang nơ-ron của Rowel đối với ảnh xám là tốt nhất Một mạng đa tầng được dùng để học các mẫu khuôn mặt và không phải là khuôn mặt từ các ảnh tương ứng ( dựa trên quan hệ về cường độ và mặt. .. dụng cụ thể trong bài toán xác định khuôn mặt thẳng , sẽ được trình bày trong chương 4 Trang xxix Chương 4: DÒ TÌM KHUÔN MẶT 4.1 Giới thiệu chương Trong chương này em sẽ trình bày thuật toán mạng Nơ-ron cơ bản dùng để xác định khuôn mặt thẳng Thuật toán thực hiện bằng cách áp dụng một hay nhiều mạng Nơ-ron trực tiếp với các phần của ảnh đầu vào, sau đó quyết định kết quả Mỗi mạng được huấn luyện để xem... một vài đặc trưng nào đó • Trạng thái khuôn mặt: Các nét mặt khác nhau trên khuôn mặt như: vui, buồn, tức giận, ngạc nhiên, … 1.5 Hướng tiếp cận được thử nghiệm trong đồ án Trong đề tài xác định khuôn mặt người, em sẽ đi theo hướng tiếp cận dựa trên diện mạo Cụ thể là em sẽ trình bày phương pháp tiêu biểu của phương pháp máy học đó là: Mạng Nơ-ron 1.5.1 Mạng Nơ-ron nhân tạo Trang xi Là một hệ thống... với ảnh khuôn mặt có sẵn Nói chung việc huấn luyện khuôn mặt ở đây không có gì nói thêm Vấn đề ở đây là chiến thuật huấn luyện ảnh không phải khuôn mặt Vì thực tế cho thấy số lượng ảnh không khuôn mặt lớn hơn ảnh có khuôn mặt rất nhiều Để huấn luyện toàn bộ số ảnh này thật là khó khăn Chính vì vậy một chiến lược giảm bớt ảnh không khuôn mặt là cần thiết 4.2.2 Huấn luyện ảnh không phải khuôn mặt Chiến... Chiến thuật luyện mạng học ảnh không phải khuôn mặt được xây dựng trên những nhận xét sau đây:  Nếu ta gán cho mỗi ảnh không khuôn mặt một trọng số gọi là giá trị tương ứng với xác suất một mạng có thể nhận nhầm nó là ảnh khuôn mặt Dễ nhận thấy, Trang xxxii giá trị của các cửa sổ không khuôn mặt là không giống nhau Vì khi tiến hành nhận biết, sẽ có một số cửa sổ nhận nhầm là khuôn mặt và một số sẽ... sổ, gọi xác suất thực sự lần lượt của khuôn mặt và không phải là P (face) và P (nonface) Sử dụng thuật toán Bayes để tìm ra xác suất thực sự của khuôn mặt P(face|window) = NNOutput P ( face) NNOutput P ( face) + (1 − NNOutput ) P (nonface) [3] Ta sẽ phân lớp cửa sổ là khuôn mặt nếu như P(face|window) >0.5 4.3 Nâng cao chất lượng và cải thiện tốc độ xác định khuôn mặt Hệ thống phát hiện khuôn mặt sau

Ngày đăng: 24/06/2016, 17:35

Từ khóa liên quan

Mục lục

  • LỜI CAM ĐOAN

  • MỤC LỤC

  • CÁC TỪ VIẾT TẮT

  • DANH MỤC CÁC HÌNH VẼ

  • LỜI MỞ ĐẦU

    • 1.6 Kết luận chương

    • 4.4 Kết luận chương

    • 5.1 Giới thiệu chương

    • 5.4 Chương trình con tạo mạng Nơ-ron đơn giản

    • 5.5 Chương trình con huấn luyện và phân lớp

      • 5.5.1 Trainscg

      • 5.5.2 Traincgb, traincgf, traincgp

      • 5.6 Tổng kết chương

      • CHƯƠNG 6: KẾT QUẢ MÔ PHỎNG

        • 6.1 Giới thiệu chương

        • 6.2 Kết quả với TRAINSCG

        • 6.3 Kết quả với TRAINCGB

        • 6.6 So sánh kết quả

        • 6.8 Kết quả thu được khi thay đổi số Nơ-ron trong lớp ẩn với hàm traincgb

        • 6.9 Kết quả thu được khi thay đổi số Nơ-ron trong lớp ẩn với hàm traincgf

        • 6.10 Kết quả thu được khi thay đổi số Nơ-ron trong lớp ẩn với hàm traincgp

        • 6.11 So sánh kết quả của 4 hàm trên khi thay đổi số Nơ-ron trong lớp ẩn

        • 6.12 Kết luận chương

Tài liệu cùng người dùng

Tài liệu liên quan