43 trang và 4 phần ( giới thiệu lý thuyết Code thực nghiệm trên mathlab) LỜI MỞ ĐẦU Trong thế giới ngày nay với sự phát triển mạnh mẽ của kỹ thuật số và mạng toàn cầu, vấn đề về đảm bảo an toàn thông tin cũng như vật chất ngày càng trở nên quan trọng và khó khăn. Một trong những phương pháp đơn giản nhất cũng là bài toán phức tạp nhất là xác định một người thông qua khuôn mặt từ đó cập nhật thông tin để đảm bảo an toàn thông tin cũng như tìm kiếm tội phạm. Trong nhiều năm qua có rất nhiều công trình nghiên cứu về bài Toán nhận dạng khuôn mặt người từ ánh đen trắng, xám đến ảnh màu như ngày hôm nay. Các nghiên cứu đi từ bài toán đơn giản ,mỗi ảnh chỉ có một khuôn mặt người nhìn vào thiết bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng. Cho đến ngày hôm nay bài Toán mở rộng cho ảnh màu, có nhiều tư thế thay đổi trong ảnh. Không những thế vậy mà còn mở rộng phạm vi từ môi trường xung quanh khá đơn giản cho đến môi trường xung quanh rất phức tạp nhằm đáp ứng nhu cầu của con người. Mục tiêu của đề tài “Nhận dạng khuôn mặt bằng matlab dùng thuật toán mạng nơron” là thực hiện chương trình tìm kiếm một bức ảnh có khuôn mặt một người trong tập ảnh cơ sở giống với khuôn mặt của người đó trong ảnh cần kiểm tra bằng ngôn ngữ matlab. GIỚI THIỆU ĐỀ TÀI 1.1 Đặt vấn đề Chúng ta đã biết, ngày nay phần lớn các thiết bị điện tử đều dần phát triển theo xu hướng tự động hóa, thông minh, càng hiểu ý con người, chúng giao tiếp với con người mà không cần mộtthiết bị trung gian nào, để làm được điều đó các thiết bị cảm biến, thuật toán nhận dạng ra đời ngày càng hiện đại hơn, chính xác hơn, an toàn và rất bảo mật, chúng có thể chúng nhận biết các hoạt động của con người, hình gián của con người và hoạt động theo ý muốn con người. Thì bài toán“Nhận dạng mặt người” là một trong số đó. 1.2 Lý do chọn đề tài Ngày nay các thiết bị sử dụng thuật toán xử lý ảnh được sử dụng ngày càng rộng rãi, với nhiều mục đích khác nhau. Dùng cho các hệ thống bảo mật như khóa bằng vân tay, giọng nói, giá mắt đến các thiết bị an ninh, truy tìm tội phạm..Xuất phát từ những yêu cầu thực tế trên người thực hiện tiến hành tìm hiểu và nghiên cứu đề tài : “NHẬN DẠNG MẶT NGƯỜI TRÊN MATLAB”. 1.3 Mục đích nghiên cứu Người thực hiện đề tài này nhằm mục đích: Tìm hiểu các thuật toán nhận dạng và xử lý ảnh màu, cấu trúc ảnh màu.à Nâng cao kỹ năng thiết kế và lập trình bằng ngôn ngữ matlab. Rèn luyện kỹ năng nghiên cứu, tìm hiểu tài liệu. 1.4 Giới hạn nghiên cứu của đề tài Với thời gian có hạn nên người nghiên cứu chỉ thực hiện nghiên cứu những vấn đề cơ bản sau: Nghiên cứu và tìm hiểu các thuật toán nhận dạng, và kiến trục của một mạng cụ thể là AlexNet. Nghiên cứu cấu trúc ảnh màu, các lệnh xử lý ảnh màu trên matlab 2022. Nghiên cứu giải thuật và thực hiện phần mền nhận dạng trên matlab DANH MỤC BẢNG
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN NHẬN DIỆN KHUÔN MẶT XÁC NHẬN DANH TÍNH SỬ DỤNG PHẦN MỀM MATLAB BỘ MƠN XỬ LÝ ẢNH Tp Hồ Chí Minh, tháng 05 năm 2023 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** Tp Hồ Chí Minh, tháng năm 2023 PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Họ tên sinh viên X Y Z Ngành: CNKT Điện tử - Viễn thông Giảng viên hướng dẫn: Q Tên đề tài: NHẬN DIỆN KHN MẶT XÁC NHẬN DANH TÍNH SỬ DỤNG PHẦN MỀM MATLAB Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Điểm: (Bằng chữ: ) Tp Hồ Chí Minh, tháng năm 2023 Giảng viên hướng dẫn (Ký & ghi rõ họ tên) MỤC LỤC LỜI MỞ ĐẦU GIỚI THIỆU ĐỀ TÀI DANH MỤC BẢNG DANH MỤC HÌNH ẢNH I TỔNG QUAN VỀ NHẬN DIỆN KHN MẶT VÀ THUẬT TỐN MẠNG NƠ-RON Phương pháp nhận diện khuôn mặt Thuật toán mạng nơ-ron Mạng Neural Network AlexNet 3.1 InPut 3.2 Kiến Trúc AlexNet 3.3 Overlapping Max Pooling 3.4 ReLu Nonlinearity 3.5 Reducing overfitting 10 3.5.1 Overfitting gì? 10 3.5.2 Augmentation 10 3.5.3 Data augmentation by mirroring 11 3.5.4 Data augmentation by random crops 11 3.5.5 Dropout 12 II BÀI TOÁN NHẬN DẠNG BẰNG MẠNG NƠ-RON TÍCH CHẬP 12 Cách Thức Hoạt Động 12 Nhận Diện Khuôn mặt 14 III ẢNH MÀU VÀ CÁC LỆNH XỬ LÝ ẢNH MÀU TRONG MATLAB 17 Giới thiệu ảnh số 17 1.1 Biểu diễn ảnh số 17 1.2 Ảnh màu 18 1.3 Các định dạng ảnh xử lý ảnh 20 Các kiểu hình ảnh Matlab 22 2.1 Ảnh số 22 2.2 Ảnh biểu diễn theo độ sáng 23 2.3 Ảnh nhị phân 23 2.4 Ảnh RGB 23 Chuyển đổi kiểu liệu 23 Các phép toán số học liệu ảnh 24 Các hàm hiển thị ảnh Matlab 25 Các hàm khác sử dụng đề tài 27 IV SƠ ĐỒ KHỐI VÀ CODE CHƯƠNG TRÌNH 29 Sơ đồ khối 29 Code chương trình 29 Collect data 29 2 Training data 30 Test data 31 Tạo giao diện Guide Matlab để thực việc nhận diện khuôn mặt 32 Kết thực nghiệm 35 3.1 Tương tác giao diện Guide matlab 37 TÀI LIỆU THAM KHẢO 38 LỜI MỞ ĐẦU Trong giới ngày với phát triển mạnh mẽ kỹ thuật số mạng toàn cầu, vấn đề đảm bảo an toàn thông tin vật chất ngày trở nên quan trọng khó khăn Một phương pháp đơn giản toán phức tạp xác định người thông qua khuôn mặt từ cập nhật thơng tin để đảm bảo an tồn thơng tin tìm kiếm tội phạm Trong nhiều năm qua có nhiều cơng trình nghiên cứu Tốn nhận dạng khn 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 từ toán đơn giản ,mỗi ảnh có khn mặt người nhìn vào thiết bị thu hình đầu tư thẳng đứng ảnh đen trắng Cho đến ngày hơm Tốn mở rộng cho ảnh màu, có nhiều tư thay đổi ảnh Khơng mà cịn mở rộng phạm vi từ môi trường xung quanh đơn giản môi trường xung quanh phức tạp nhằm đáp ứng nhu cầu người Mục tiêu đề tài “Nhận dạng khuôn mặt matlab dùng thuật tốn mạng nơron” thực chương trình tìm kiếm ảnh có khn mặt người tập ảnh sở giống với khuôn mặt người ảnh cần kiểm tra ngơn ngữ matlab GIỚI THIỆU ĐỀ TÀI 1.1 Đặt vấn đề Chúng ta biết, ngày phần lớn thiết bị điện tử dần phát triển theo xu hướng tự động hóa, thơng minh, hiểu ý người, chúng giao tiếp với người mà không cần mộtthiết bị trung gian nào, để làm điều thiết bị cảm biến, thuật toán nhận dạng đời ngày đại hơn, xác hơn, an tồn bảo mật, chúng chúng nhận biết hoạt động người, hình gián người hoạt động theo ý muốn người Thì tốn“Nhận dạng mặt người” số 1.2 Lý chọn đề tài Ngày thiết bị sử dụng thuật toán xử lý ảnh sử dụng ngày rộng rãi, với nhiều mục đích khác Dùng cho hệ thống bảo mật khóa vân tay, giọng nói, giá mắt đến thiết bị an ninh, truy tìm tội phạm Xuất phát từ yêu cầu thực tế người thực tiến hành tìm hiểu nghiên cứu đề tài : “NHẬN DẠNG MẶT NGƯỜI TRÊN MATLAB” 1.3 Mục đích nghiên cứu Người thực đề tài nhằm mục đích: Tìm hiểu thuật toán nhận dạng xử lý ảnh màu, cấu trúc ảnh màu.à Nâng cao kỹ thiết kế lập trình ngơn ngữ matlab Rèn luyện kỹ nghiên cứu, tìm hiểu tài liệu 1.4 Giới hạn nghiên cứu đề tài Với thời gian có hạn nên người nghiên cứu thực nghiên cứu vấn đề sau: Nghiên cứu tìm hiểu thuật toán nhận dạng, kiến trục mạng cụ thể AlexNet Nghiên cứu cấu trúc ảnh màu, lệnh xử lý ảnh màu matlab 2022 Nghiên cứu giải thuật thực phần mền nhận dạng matlab DANH MỤC BẢNG Bảng Các thông tin gọi hàm imfinfo 24 Bảng Các phép toán số học ảnh 25 Bảng 3 Các hàm xử lý hình ảnh khác Matlab 27 DANH MỤC HÌNH ẢNH Hình 1 Điều chỉnh ảnh 256px Hình AlexNet bao gồm convolution Layer Fully connected Layers Hình So sánh tốc độ huấn luyện ReLu Tanh Hình Giá trị bão hồ hàm Tanh Hình Hiệu ứng hình qua gương 11 Hình Rút trích kích thước 227*227 từ ảnh 256*256 11 Hình Mơ hình huấn luyện 12 Hình Tổng quan phương pháp nhận dạng khn mặt người mạng nơ ron tích Chập 13 Hình 2 Thiết kế mạng nơ-ron để xử lý ảnh 13 Hình Các giai đoạn tìm hiệu chỉnh 14 Hình Kết phát mẫu ảnh phương pháp tháp sâu 14 Hình Kiến trúc CNN sử dụng để trích xuất mơ tả cục cho nhiệm vụ phát điểm mốc khuôn mặt 15 Hình Ví dụ điểm mốc khuôn mặt 16 Hình Kết mẫu phương pháp liên kết khuôn mặt cho video JANUS 16 Hình Ảnh màu 17 Hình Các màu sở 18 Hình 3 Mơ hình màu RGB 19 Hình Ảnh GIF 21 Hình Ảnh dạng JPEG 22 Hình Q trình chung nhận dạng khn mặt 29 Hình Hình ảnh thu thập từ ứng dụng usbwebcam kích thước227x227 với 150 mẫu ảnh 35 Hình Model mạng tích chập nơ ron AlexNet dùng mathlab tính trọng số parameters mạng 36 Hình 4 Giao diện Guide 37 I TỔNG QUAN VỀ NHẬN DIỆN KHN MẶT VÀ THUẬT TỐN MẠNG NƠ-RON Phương pháp nhận diện khuôn mặt Dựa vào đặc điểm phương pháp nhận diện khuôn mặt người ảnh.Các phương pháp chia làm bốn hướng tiếp cận : Hướng tiếp cận tri thức: Mã hố hiểu biết người khuôn mặt thành luật Thông thường luật mô tả mối quan hệ đặc trưng Hướng tiếp cận dựa đặc trưng không thay đổi: Mục tiêu thuật Tố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 theo thời gian, không phụ thuộc vào biểu cảm khn mặt, vị trí đặt thiết bị thu hình hay điều kiện ánh sáng Hướng tiếp cận dựa so mẫu khớp: Dùng mẫu chuẩn khuôn mặt người để mô tả cho khuôn mặt người hay đặc trưng khuôn mặt 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 Hướng tiếp cận dựa diện mạo: Trái ngược so với mẫu khớp, mơ hình (hay mẫu) học từ tập ảnh huấn luyện trước Sau hệ thống xác định khn mặt người hay gọi hướng tiếp cận hướng tiếp cận theo phương pháp học Thuật toán mạng nơ-ron Mạng nơ ron nhân tạo (Artificial Neural Network ANN) chuỗi giải thuật lập trình, mơ dựa cách hoạt động mạng lưới thần kinh não sinh vật sống Mạng nơ ron nhân tạo sử dụng để tìm mối quan hệ tập liệu thông qua thiết kế kiến trúc chứa nhiều tầng ẩn (hidden layer), tầng lại chứa nhiều nơ ron Các nơ ron kết nối với độ mạnh yếu liên kết biểu qua trọng số liên kết Lập trình thơng thường làm nhiều phần mềm lớn, tính Tốn mơ vụ nổ hạt nhân siêu máy tính phịng thí nghiệm, tái tế bào cấp độ phân tử để phân tích thử nghiệm thuốc Một siêu máy tính tính Tốn nhiều tỉ phép tính giây, nhiên lập trình thơng thường lại gặp khó khăn việc nhận mẫu đơn giản, ví dụ nhận diện mặt người, điều mà não sinh học xử lý nhanh xác nhiều Áp dụng với kỹ thuật học sâu, mạng nơ ron nhân tạo áp dụng để giải vấn đề mà lập trình theo logic thơng thường khó giải Do đó, mạng nơ ron nhân tạo nhanh chóng trở nên phổ biến, xu nhiều lĩnh vực Mạng nơ-ron tích chập (CNN) mơ hình học sâu thành cơng lĩnh vực nhận dạng khuôn mặt, vùng hình ảnh khác ln sử dụng đồng thời trích xuất đặc trưng hình ảnh, thực tế, phần khác khn mặt đóng vai trị khác nhận diện khuôn mặt Mỗi khn mặt người có độc đáo nét đặc trưng riêng biệt Một hệ thống nhận diện mặt người thông thường bao gồm bốn bước xử lý sau: Phát khuôn mặt (Face Detection) Phân đoạn khn mặt (Face Alignment hay Segmentation) Trích chọn đặc trưng (Feature Extraction) Nhận diện (Recognition) hay Phân lớp khuôn mặt (Face Classification) Mạng Neural Network AlexNet 3.1 InPut Mạng AlexNet mơ hình giải toán phân lớp ảnh vào lớp 1000 lớp khác (vd gà, chó, mèo… ) Đầu mơ hình vector có 1000 phần tử Phần tử thứ i vector đại diện cho xác suất ảnh thuộc lớp thứ i Do đó, tổng phần tử vector Đầu vào mạng AlexNet ảnh RGB có kích thước 256x256 pixel Tồn ảnh tập train tập test có kích thước 256x256 Nếu ảnh khơng có kích thước 256x256, ảnh chuyển kích thước 256x256 Những hình có kích thước nhỏ 256 phóng bự lên đến kích thước 256, hình có kích thước lớn 256 cắt loại phần thừa để nhận hình có kích thước 256x256 Hình ví dụ việc điều chỉnh ảnh kích thước 256x256 - Khi chuyển đổi liệu với kiểu indexed, lưu ý thông tin ma trận địa bảng đồ màu giá trị màu nên lúc chuyển đổi Muốn chuyển ta phải dùng hàm imapprox để giẩm số màu cần biểu diễn ảnh xuống(bằng cách cho màu gần giống thành một) chuyển Tên thuộc Mô tả tính Filename Chuỗi chứa tên file FileModDate Ngày chỉnh file gần FileSize Số nguyên kích thước file(byte) Format Chuỗi cho biết định dạng ảnh FormatVersion Tên phiên định dạng ảnh Width Chiều rộng ảnh(pixel) Height Chiều cao ảnh(pixel) BitDepth Số bit pixel ColorType Cho biết kiểu ảnh(truecolor, indexed ) Bảng Các thông tin gọi hàm imfinfo Các phép toán số học liệu ảnh Các phép tốn bao gồm phép cơng, trừ, nhân chia Đây thao tác xử lý ảnh trước thực phép biến đổi phức tạp khác Người sử dụng sử dụng hàm số học mà Matlab cung cấp để tác động lên liệu ảnh Tuy nhiên Matlab hỗ trợ phép toán kiểu liệu double nên cần phải chuyển đổi kiểu trước thực Để đơn giản hơn, Matlab cung cấp hàm thực phép tốn số học chấp nhận bất kỳ kiểu liệu ảnh trả kết giá thuộc kiểu với toán hạng 24 Cú pháp Mô tả Trừ tương ứng phần tử y cho phần tử x, trả trị tuyệt đối z=imabsdiff(x,y) hiệu z=imadd(x,y,out_class) im2= imcomplement(im) Cộng hai ảnh, cộng ảnh với số, out_class kiểu liệu tổng Lấy bù ảnh im Chia phần tử x cho phần tử z=imdivide(x,y) y,kết làm tròn z=imlincomb(k1,a1,k2,a2…,out_class) Lấy tổ hợp tuyến tính z=k1*a1+k2*a2+… z=immultiply(x,y) Nhân hai ảnh, ảnh với số z=imsubtract(x,y) Trừ hai ảnh, ảnh với số Bảng Các phép toán số học ảnh Các hàm hiển thị ảnh Matlab Để hiển thị ảnh, Matlab cung cấp hàm image imagesc Ngoài ra, Image Processing Toolbox có hai hàm hiển thị khác imview imshow - Hàm image(x,y,c) hiển thị hình ảnh biểu diễn ma trận c kích thước mxn lên hệ trục tọa độ x,y véctơ xác định vị trí điểm c(1,1) c(m,n) - Hàm imagesc có chức tương tự hàm image, ngoại trừ việc liệu ảnh co giãn để sử dụng toàn đồ màu hành - Hàm imview cho phép hiển thị ảnh sổ riêng Java, gọi Image Viewer - Hàm imshow cho phép hiển thị ảnh Figure tự động thiết lập giá trị đối tượng image, axes, figure để hiển thị hình ảnh 25 Các hàm chuyển đổi loại ảnh kiểu liệu ảnh dither Tạo ảnh nhị phân hay ảnh RGB gray2ind Chuyển ảnh trắng đen thành ảnh indexed grayslice Chuyển ảnh trắng đen thành ảnh indexed lấy ngưỡng im2bw Chuyển ảnh thành ảnh kiểu liệu nhị phân im2double Chuyển ảnh thành ảnh kiểu liệu double im2uint16 Chuyển ảnh thành ảnh kiểu liệu uint16 im2uint8 Chuyển ảnh thành ảnh kiểu liệu uint8 imapprox Xấp xỉ ảnh indexed cách giảm số màu ind2gray Chuyển ảnh indexed thành ảnh gray scale ind2rgb Chuyển ảnh indexed thành ảnh RBG mat2gray Tạo ảnh gray scale từ ma trận rgb2ind Chuyển ảnh RBG thành ảnh indexed rgb2gray Chuyển ảnh RBG thành ảnh gray scale Các hàm truy xuất liệu ảnh imfinfo Truy xuất thông tin ảnh imread Đọc ảnh từ file xuất ma trận ảnh imwrite Lưu ma trận ảnh thành file ảnh Các hàm biến đổi hình học cp2tform Định nghĩa phép biến đổi hình học cặp tương ứng 26 imcrop Trích xuất phần ảnh imresize Thay đổi kích thước ảnh imrotate Thực phép quay ảnh imtranform Thực phép biến đổi hình học tổng quát maketform Định nghĩa phép biến đổi hình học tổng quát Bảng 3 Các hàm xử lý hình ảnh khác Matlab Các hàm khác sử dụng đề tài [filename,pathname]=uigetfile(filterspec,title): hiển thị hộp thoại chọn đường dẫn file Giá trị trả tên file, đường dẫn T=strcat(s1,s2,s3…): ghép chuỗi lại với nhau, trả chuỗi nối tiếp s1s2s3… strcmp(s1,s2): hàm so sánh, trả s1 giống s2, ngược lại trả T=dir(pathname): Lấy thông tin Folder bao gồm: số file chứa folder, tên file, ngày tạo, kích thước file… S=int2str(x): Chuyển đổi số kiểu integer thành chuỗi ký tự N=num2str(x): Chuyển đổi số(bất kỳ số nguyên thực) thành chuỗi ký tự D=size(a): Trả giá trị ma trận có dạng [x,y] kích thước ma trận a T=reshape(X,M,N): Trả ma trận có kích thước MxN với phần tử phần tử nằm ma trận X mean(X): Ma trận X có kích thước MxN, hàm trả ma trận có kích thước 1xN phần tử trung bình cột ma trận X mean(X,dim): với dim chiều lấy trung bình, dim lấy trung bình theo cột, dim lấy trung bình theo hàng Khơng có tham số dim mặc định dim double(X): Chuyển đổi gấp đơi xác giá trị ma trận X E=eig(X): Trả vector chứa giá trị riêng ma trận vuông X 27 [V, D] = eig(X): tạo ma trận đường chéo D giá trị riêng ma trận V có cột tương ứng vector riêng, đó: X * V = V * D diag(V,K): Trong V vector với thành phần N ma trận vuông kiểu N+ABS(K) với phần tử V đường chéo thứ K K = đường chéo chính, K> phía đường chéo K =c) khỏi vịng lặp % Phát khn mặt hình ảnh % Nếu có khn mặt phát % Nếu chụp đủ số lượng ảnh khuôn mặt yêu cầu break; else es=imcrop(e,bboxes (1,:)); % Cắt ảnh khn mặt từ hình ảnh chụp es=imresize(es,[227 227]); thước 227x227 % Resize ảnh khn mặt kích filename=strcat(num2str(temp),'.bmp'); ảnh khuôn mặt imwrite(es,filename); dạng file bmp temp=temp+1; imshow(es); drawnow; % Đặt tên cho file % Lưu ảnh khuôn mặt vào thư mục % Tăng biến tạm lên đơn vị % Hiển thị ảnh khuôn mặt cắt resize % Vẽ lại figure để hiển thị ảnh khuôn mặt end else % Nếu khơng có khn mặt phát imshow(e); drawnow; % Hiển thị hình ảnh chụp % Vẽ lại figure để hiển thị hình ảnh end end 2 Training data % Xóa biến cửa sổ đồ họa trước bắt đầu chạy clc clear all close all % Tắt cảnh báo có warning off % Tải mơ hình AlexNet g=alexnet; % Lấy thơng tin lớp mơ hình layers=g.Layers; 30 % Thay đổi lớp fully connected cuối mơ hình layers(23)=fullyConnectedLayer(3); % Thay đổi lớp phân loại cuối mơ hình layers(25)=classificationLayer; % Tạo imageDatastore chứa ảnh cho việc huấn luyện allImages=imageDatastore('PRJ','IncludeSubfolders', true, 'LabelSource','foldernames'); % Tạo tùy chọn cho việc huấn luyện mạng neural opts=trainingOptions('sgdm', 'InitialLearnRate',0.001, 'MaxEpochs', 20, 'MiniBatchSize', 64); % Huấn luyện mạng neural tập liệu lớp thêm vào myNet1=trainNetwork(allImages, layers, opts); % Lưu mạng neural huấn luyện save myNet1; Test data % Xóa biến, xóa hình tắt cảnh báo clc; clear all; close all; warning off; c = webcam; % Khởi tạo camera load myNet1; % Tải mơ hình mạng neuron tích chập đào tạo trước % Khởi tạo phát khuôn mặt faceDetector = vision.CascadeObjectDetector; % Lặp vô hạn để nhận diện khuôn mặt liên tục while true e = c.snapshot;% Chụp hình từ camera % Sử dụng phát khn mặt để xác định vị trí khn mặt ảnh bboxes = step(faceDetector, e); % Nếu phát khuôn mặt if (sum(sum(bboxes)) ~= 0) % Cắt ảnh để giữ lại khuôn mặt es = imcrop(e, bboxes(1,:)); % Resize ảnh để phù hợp với đầu vào mơ hình es = imresize(es, [227 227]); 31 % Phân loại khn mặt sử dụng mơ hình đào tạo label = classify(myNet1, es); % Hiển thị ảnh từ camera image(e); % Hiển thị nhãn khuôn mặt phân loại title(char(label)); % Hiển thị ảnh trực tiếp hình drawnow; else % Nếu khơng phát khuôn mặt, hiển thị ảnh từ camera thông báo "No Face Detected" image(e); title('No Face Detected'); drawnow; end end Tạo giao diện Guide Matlab để thực việc nhận diện khuôn mặt function varargout = FaceRecognition(varargin) % FACERECOGNITION MATLAB code for FaceRecognition.fig % FACERECOGNITION, by itself, creates a new FACERECOGNITION or raises the existing % singleton* % % H = FACERECOGNITION returns the handle to a new FACERECOGNITION or the handle to % the existing singleton* % % FACERECOGNITION('CALLBACK',hObject,eventData,handles, ) calls the local % function named CALLBACK in FACERECOGNITION.M with the given input arguments % % FACERECOGNITION('Property','Value', ) creates a new FACERECOGNITION or raises the % existing singleton* Starting from the left, property value pairs are % applied to the GUI before FaceRecognition_OpeningFcn gets called An % unrecognized property name or invalid value makes property application % stop All inputs are passed to FaceRecognition_OpeningFcn via varargin % % *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one % instance to run (singleton)" % % See also: GUIDE, GUIDATA, GUIHANDLES 32 % Edit the above text to modify the response to help FaceRecognition % Last Modified by GUIDE v2.5 14-May-2023 17:21:32 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @FaceRecognition_OpeningFcn, 'gui_OutputFcn', @FaceRecognition_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % - Executes just before FaceRecognition is made visible function FaceRecognition_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to FaceRecognition (see VARARGIN) % Choose default command line output for FaceRecognition handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes FaceRecognition wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line function varargout = FaceRecognition_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes on button press in start function start_Callback(hObject, eventdata, handles) % hObject handle to start (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB 33 % handles structure with handles and user data (see GUIDATA) global c; global loopFlag; loopFlag = true; c=webcam; while true if(loopFlag ==false) break; else e=c.snapshot; axes(handles.axes1); imshow(e); drawnow; end end % - Executes on button press in test function test_Callback(hObject, eventdata, handles) % hObject handle to test (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) FDetect=vision.CascadeObjectDetector; global loopFlag; global c ; while true if(loopFlag ==false) break; else e=c.snapshot; BB=step(FDetect,e); imshow(e); hold on; for i=1:size(BB,1) rectangle('Position',BB(i,:),'Linewidth',5,'LineStyle','','EdgeColor','r'); end hold off; drawnow; end end % - Executes on button press in pushbutton3 function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) c=webcam; load C:\Users\DELL\Desktop\myNet1; faceDetector=vision.CascadeObjectDetector; while true e=c.snapshot; bboxes=step(faceDetector,e); if(sum(sum(bboxes))~=0) es=imcrop(e,bboxes(1,:)); es=imresize(es,[227 227]); label=classify(myNet1,es); image(e,'Parent',handles.axes1); title(handles.axes1,char(label)); 34 drawnow; else image(e,'Parent',handles.axes1); title(handles.axes1,'No Face Detected'); end end % - Executes on button press in stop function stop_Callback(hObject, eventdata, handles) % hObject handle to stop (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close clear all warning off Kết thực nghiệm Kết sau chạy chương trình thu thấp data ( data-collection ) ta thu thập mẫu liệu để thực cho việc tranning Cái ảnh chụp sau test ( bạn phải cài ứng dụng USBWEBCAM add-ons Mathlab ) Hình Hình ảnh thu thập từ ứng dụng usbwebcam kích thước227x227 với 150 mẫu ảnh Sau thực việc chương trình tranning với epoch 20 times ta file “mynet1” mơ hình mạng nơ ron tích chập 35 Hình Model mạng tích chập nơ ron AlexNet dùng mathlab tính trọng số parameters mạng Mơ hình mơ hình AlexNet huấn luyện trước liệu ImageNet Mơ hình bao gồm 25 layers, bao gồm loại layer khác Convolutional layer, ReLU layer, Cross-Channel Normalization layer, Max Pooling layer, Grouped Convolutional layer, Fully Connected layer, Dropout layer, Softmax layer Classification layer Mơ hình bắt đầu với Image Input layer với kích thước đầu vào [227 227 3] mean liệu params.data.Mean Tiếp theo Convolutional layer với kernel size [11 11], stride [4 4] số lượng filter 96 Sau ReLU layer Cross-Channel Normalization layer Tiếp theo Max Pooling layer với kernel size [3 3] stride [2 2] Sau Grouped Convolutional layer với kernel size [5 5], stride số lượng filter 128 Tiếp theo ReLU layer Cross-Channel Normalization layer Sau Max Pooling layer với kernel size [3 3] stride [2 2] Tiếp theo Convolutional layer với kernel size [3 3], stride số lượng filter 384 Sau ReLU layer hai Grouped Convolutional layer với kernel size [3 3], 36 stride số lượng filter 192 128 Sau Max Pooling layer với kernel size [3 3] stride [2 2] Cuối cùng, mơ hình kết thúc với ba Fully Connected layer với số lượng neurons 4096, 4096 1000, kết hợp với hai Dropout layer Softmax layer để tính tốn xác suất lớp đầu 3.1 Tương tác giao diện Guide matlab Hình 4 Giao diện Guide Nhấn nút Start kích hoạt Cam thiết bị thơng qua ứng dụng USBWEBCAM add-ons MaTlab Nhấn nút Test chương trình tìm nhận dạng khn mặt Cuối góc xuất tên mssv tập liệu huấn luyện trước Giới hạn thực nghiệm sau test nhiều đối tượng ( thành viên nhóm ): nhược điểm trình thử nghiệm nhận mặt để xa dễ bị nhận diện nhầm 37 TÀI LIỆU THAM KHẢO ImageNet Classification with Deep Convolutional Neural Networks by Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton, 2012 R.M Bell and Y Koren Lessons from the netflix prize challenge ACM SIGKDD Explorations Newsletter, 9(2):75–79, 2007 A Berg, J Deng, and L Fei-Fei Large scale visual recognition challenge 2010 www.imagenet.org/challenges 2010 Nhận dạng khuôn mặt video mạng nơ ron tích chập Đồn Hồng Quang* , Lê Hồng Minh, Thái Dỗn Ngun Trung tâm Cơng nghệ Vi điện tử Tin học, Viện Ứng dụng Công nghệ Nghiên cứu trao đổi Research-Exchange of opinion MỘT PHƯƠNG PHÁP NHẬN DẠNG KHN MẶT DỰA TRÊN MẠNG NƠRON TÍCH CHẬP A FACE RECOGNITION METHOD USING CONVOLUTIONAL NEURAL NETWORK Dương Thăng Long, Bùi Thế Hùng 38