Sử dụng mạng nơron tích chập trong nhận dạng biểu cảm khuôn mặt và ứng dụng hỗ trợ giám sát dạy học tại trường thpt trần nhân tông

98 18 0
Sử dụng mạng nơron tích chập trong nhận dạng biểu cảm khuôn mặt và ứng dụng hỗ trợ giám sát dạy học tại trường thpt trần nhân tông

Đ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

ĐÔ THỊ THU HÀ TRƯỜNG ĐẠI HỌC MỜ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN CÔNG NGHỆ THÔNG TIN LUẬN VÀN TỐT NGHIỆP THẠC sĩ Ngành/Chuyên ngành: CÔNG NGHỆ THÔNG TIN SỬ DỤNG MẠNG NƠRON TÍCH CHẬP TRONG NHẬN DẠNG BIẾU CẢM KHUÔN MẬT VÀ ÚNG DỤNG HỎ TRỢ GIÁM SÁT DẠY HỌC TẠI TRƯỜNG THPT TRẦN NHÂN TÔNG ĐỎ THỊ THU HÀ KHÓA 2019 - 2021 HÀ NỘI - 2023 TRƯỜNG ĐẠI HỌC MỜ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ĐỎ THỊ THƯ HÀ SỬ DỤNG MẠNG NƠRON TÍCH CHẬP TRONG NHẬN DẠNG BIẾU CẢM KHN MẬT VÀ ỨNG DỤNG HÔ TRỌ GIÁM SÁT DẠY HỌC TẠI TRƯỜNG THPT TRẦN NHÂN TÔNG Ngành/Chuyên ngành: CÔNG NGHỆ THÔNG TIN Mã đề tài: 1437 Giảng viên hướng dẫn: TS Duong Thăng Long LUẬN VÀN TỐT NGHIỆP THẠC sĩ HÀ NỘI - 2023 LỜI CAM ĐOAN Tên là: Đồ Thị Thu Hà Sinh ngày: 11/04/1987 Mã học viên: 19K10010002 Lớp cao học 1910K.02 trường Đại học Mở Hà Nội Hiện công tác tại: Trường THPT Tran Nhân Tông, Hà Nội Tác già xin cam đoan đề tài: "Sừ dụng mạng nơron tích chập nhận dạng hiếu cám khn mặt ứng dụng hỗ trợ giám sát dạy học trường THPT Trần Nhân Tông" thầy giáo TS Dương Thăng Long hướng dẫn công trinh nghiên cứu riêng tác giả Các kết quà đạt luận văn trung thực sản phấm riêng cá nhân, không chép cúa người khác chưa cơng bố bat kì hình thức trước Nội dung luận vãn có tham khào sừ dụng số thông tin, tài liệu sách, tạp chí trích dẫn thích rõ nguồn danh mục Tài liệu tham khào phục vụ cho việc phân tích, nhận xét, đánh giá Nếu phát có bất ki gian lận nào, tác giả xin hoàn toàn chịu trách nhiệm nội dung luận văn minh Hà Nội, ngày 11 tháng 04 năm 2023 Tác giả luận văn Đỗ Thị Thu Hà LỜI CẢM ƠN Đe hồn thành đề tài luận văn thạc sĩ này, bên cạnh nỗ lực cố gắng cùa bán thân, tác giã nhận hướng dẫn nhiệt tình cúa q Thầy, Cơ động viên úng hộ gia đinh, đồng nghiệp bạn bè suốt thời gian học tập nghiên cứu thực luận văn thạc sĩ Tác giã xin bày tị lịng kính trọng biết ơn sâu sắc đến tồn q Thầy, Cơ Trường Đại học Mờ Hà Nội tận tình truyền đạt kiến thức quý báu tạo điều kiện thuận lợi cho tác giã trình học tập nghiên cứu trường Tác già xin chân thành căm ơn Ban giám hiệu tập thể cán giáo viên trường quận Hai Bà Trưng - Hà Nội: Trường THPT Thăng Long, Trường THPT Trần Nhân Tông, Trung tâm giáo dục nghề nghiệp - giáo dục thường xuyên Hai Bà Trưng; tập lớp 11A9, 11A10, 11A12 trường THPT Trần Nhân Tông - Hà Nội, lớp 11 A3 trường THPT Thăng Long Ban phụ huynh em học sinh không ngừng hợp tác, hồ trợ cho tác già suốt thời gian học tập, nghiên cứu thực luận văn tốt nghiệp Đặc biệt, tác giả xin chân thành cảm ơn Thầy giáo - TS Dương Thăng Long, người tận tâm việc định hướng, đạo giúp đỡ mặt chuyên môn để tác giá hồn thành luận văn Cuối cùng, tác giã xin chân thành cám ơn đến gia đình, anh chị, bạn đồng nghiệp học viên lớp cao học 18M - CT52, 1810K.02, 1910K.02 hồ trợ cho tác già nhiều đế tác giả học tập, nghiên cứu thực đề tài luận vãn thạc sĩ cách hồn chình Tác giả xin chân thành cảm ơn! ii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii DANH MỤC CÁC KÍ HIỆU, CHÙ VIÉT TẢT vi DANH MỤC CÁC BẢNG BIÊU vii DANH MỤC CÁC HÌNH ẢNH viii MỞ ĐÀU xi CHƯƠNG GIỚI THIỆU VÈ MẠNG NƠRON TÍCH CHẬP VÀ NHẬN DẠNG BIẾU CẢM KHN MẠT Ị ì Mạng nơron (Neural Network — NN) ì 1.1.1 Mạng nơron nhân tạo 1.1.2 Một số kiểu mạng nơron 1.1.3 Các ứng dụng cùa mạng nơron 1.2 Tìm hiêu mạng nơron tích chập 1.2.1 Định nghĩa 1.2.2 Cấu trúc tồng quát mạng nơron tích chập 10 1.2.3 Các mạng nơron tích chập tiêu biếu 17 1.2.4 Các phương pháp học mạng nơron 20 1.3 Biêu cảm khuôn mặt hệ thông nhận dạng biêu căm khuôn mặt 23 1.4 Một số hướng tiếp cận nhận dạng biếu cám khuôn mặt 24 1.5 Kết luận chương 27 CHƯƠNG THIẾT KẾ MƠ HÌNH NHẬN DẠNG BIẾU CẢM KHUÔN MẶT DỤA TRÊN KIÊN TRÚC MẠNG DENSENET 29 2.1 Thiết kế mơ hình mạng cho biểu cám khn mặt sử dụng DenseNet 29 2.1.1 Tồng quan 29 2.1.2 Mơ hình nhận dạng cám xúc dựa mơ hình CNN 34 iii Phương pháp tiền xử lý ánh đầu vào 37 2.2 2.2.1 Khới tạo mẫu tổng hợp (Synthetic sample generation) 37 2.2.2 Phép quay 38 2.2.3 Cắt tia hình ánh (Image Cropping) 39 2.2.4 Lấy mẫu xuống (Down-sampling) 39 2.2.5 Chuấn hóa cường độ (Intensity normalization) 40 Xây dựng mơ hình nhận dạng hiểu cám khuôn mặt 40 2.3 2.3.1 Tiền xử lý ãnh đầu vào 40 2.3.2 Xây dựng dừ liệu kịch bán thử nghiệm .41 2.4 Kết luận chương 44 CHƯƠNG XÂY DỤNG CHNG TRÌNH MÔ PHỎNG VÀ KÉT QUẢ THỤC NGHIỆM 45 Ị Phán tích hài tốn 45 3.2 Công cụ xây dựng phần mềm 47 3.2.1 Ngơn ngữ lập trình Python 47 3.2.2 Các thư viện sứ dụng 47 3.3 Mơ hình nhận dạng biểu cảm khn mặt dựa kiến trúc mạng DenseNet ứng dụng hỗ trợ giám sát dạy học 50 3.3.1 Đánh giá mạng DcnscNct 50 3.3.2 ứng dụng xây dựng mơ hình hỗ trợ giám sát biếu cãm khuôn mặt trinh giáng dạy 53 3.3.3 MohinhLDFER 55 3.3.1 Kết thừ nghiệm 58 3.4 Thực nghiệm chương trình 62 3.4.1 Nhận dạng biếu cảm khuôn mặt học sinh qua hình ânh 63 3.4.2 Nhận dạng biếu cảm khuôn mặt học sinh qua video quay sẵn 65 3.4.3 Nhận dạng biếu căm khuôn mặt học sinh qua camera trực tiếp 66 3.5 Kết thực nghiệm 68 3.6 Ket luận chương 70 iv KÉT LUẬN VÀ KIẾN NGHỊ 71 4.1 Kết luận 71 4.2 Kiến nghị 72 DANH MỤC TÀT LIỆU THAM KHÁO 74 PHỤ LỤC 76 V DANH MỤC CÁC KÍ HIỆU, CHỮ VIÉT TẮT STT Từ viết tắt ANN BN CNN CONV CSDL Tiếng Việt Tiếng Anh Artifical Neural Network Mạng thẩn kinh nhân tạo Batch Normalization Chuẩn hóa hàng loạt Convolution Neural Network Mạng thần kinh tích chập Lớp nơron tích chập Convolution Cơ sớ liệu DAE Deep Autoencoder Bộ mã hóa sâu DBN Deep Belief Network Mạng học sâu niềm tin DenseNet Dense connected Mạng thần kinh tích chập FER Facial Expression Nhận dạng biểu cảm khuôn 10 ILSVRC ImageNet Large Scale Visual Thử thách nhận diện trực 11 LBP Local Binary Patterns Mầu nhị phân cục Light-DcnseNct Architecture- Kiến trúc Light-DcnseNet 12 LDFER 13 LMS based for Facial Expressions Learning Management dựa nhận dạng biếu Hệ thông quản lý học tập 14 MLP MultiLayer Perceptron Mạng thần kinh truyền Multi-task Cascaded Mạng tích chập xếp tầng đa Convolutional Networks Principal Component tác vụ Phép phân tích thành phần 15 MTCNN 16 PCA 17 RBFN Radial Basis Function Mạng hàm sở bán kính 18 RELU Rectified Linear Unit Hàm kích hoạt 19 RcsNct Residual Network Mạng thẩn kinh dư 20 RMSE Root Mean Square Error Lỗi trung binh bình 21 RNN Recurrent Neural Network Mạng thần kinh hồi quy 22 SVM Support Vector Machine Máy vectơ hồ trợ 23 THPT 24 TLU 25 FC 26 VGG Trung học phố thông Threshold Logic Unit Đơn vị logic ngưỡng Fully Connected Lớp kết nối đầy đũ Visual Geometry Group Nhóm hình học thị giác vi DANH MỤC CÁC BẢNG BIẺƯ Bàng 2.1: Báng phân loại thái cực từ cảm xúc khuôn mặt 32 Bàng 2.2: số ảnh cùa tập liệu [3] 42 Bâng 2.3: Các tham so chạy thừ nghiệm [3] 44 Bảng 3.1: So sánh độ lớn mơ hình [9] 58 Bảng 3.2: Kết quà liệu kiểm tra (Dtc) [3] 61 Bâng 3.3: So sánh kết mơ hình [3] 62 Bàng 3.4: Báng liệu tổng hợp kết quà nhận dạng tiết học 69 vii DANH MỤC CÁC HÌNH ẢNH Hình 1.1: cấu tạo mạng nơron sinh học Hình 1.2: Minh họa mạng Nơron Hình 1.3: Kiến trúc mạng nơron nhân tạo [3] Hình 1.4: Cách hoạt động cùa nơron Hình 1.5: Mạng Perceptron Hình 1.6: Phân chia khơng gian đầu vào Perceptron [5] Hình 1.7: Mạng Feed Forward Neural Networks Hình 1.8: Mạng MultiLayer Perceptron Hình 1.9: Mạng Radial Basis Function Neural Networks Hình 1.10: Mạng Recurrent Neural Networks Hình 1.11: Luồng CNN xử lý hình ảnh đầu vào 10 Hình 1.12: Cấu trúc tổng quát mạng nơron tích chập [2] 11 Hỉnh 1.13: Minh hoạ tích chập ma trận ảnh [2] 12 Hình 1.14: Max pooling với lọc 2x2 15 Hình 1.15: Mạng Densenet (2016) [3] 17 Hình 1.16: Khối lớp tích chập với kết nối 18 Hình 1.17: Các tham sổ chi tiết cấu trúc mạng DenseNet [2] 18 Hình 1.18: Mơ hình huấn luyện mạng có giám sát [4] .21 Hình 1.19: Mơ hình huấn luyện mạng khơng giám sát [4] 22 Hình 1.20: Mơ hình huấn luyện mạng tăng cường [4] .22 Hình 1.21: Mơ hình phát cảm xúc khn mặt truyền thống 24 Hình 1.22: Mơ hình phát cảm xúc khn mặt đại [2] .25 Hình 1.23: Phân tích mức xám PC A - Principal Component Analysis [10] 25 Hình 1.24: Biếu đồ Histogram of Oriented Gradients - HOG [6] 26 Hình 1.25: Hệ thống phân loại SVM sử dụng để nhận dạng biếu cám khuôn mặt [6] 26 Hình 1.26: CNN nhận dạng cảm xúc khn mặt 27 Hình 2.1: Minh họa kiến trúc DenseNet [3] 31 viii Đế kiếm nghiệm chương trinh có tính xác thực cao hơn, tác già tiến hành đặt webcam trước lớp học đe chương trinh đưa kết quà nhận dạng Từ thống kê kết biếu căm học sinh buối học đó: Hình 3.23: Thực nghiệm chng trình theo thịi gian thực thơng qua webcam lóp học 11A10, 11A12 trường THPT Trần Nhân Tông 3.5 Kết thực nghiệm Tác giả tiến hành thực nghiệm thống kê lại kết nhận dạng buối học Trong tiết học có 45 phút Tương ứng, tác giá chia bước thời gian 15s/ lần nhận dạng Mồi lần nhận dạng, chương trinh sè tiến hành thực thi nhận dạng khuôn mặt, lưu dừ liệu khn mặt kết nhận dạng Ta có kết nhận dạng cùa tồn khn mặt học sinh trình học theo thời gian thực thống kê số lượng số lượng biểu càm tiêu cực/tích cực họe sinh Từ tiết học 45 phút, chương trinh bóc tách tổng cộng 180 ánh/học sinh sau lưu lại vào file đế thống kê liệu Băng 3.4 bàng thống kê biếu căm học sinh tiết dạy 45 phút Trong đó: “1” kí hiệu cho biếu căm tích cực cùa học sinh, “0” kí hiệu cho biếu cảm tiêu cực cùa học sinh, “X” kí hiệu cho việc chương trình khơng nhận dạng biếu cảm: 68 Bảng 3.4: Bảng liệu tồng họp kết nhận dạng tiết học 15 30 45 60 90 150 2565 2580 2595 2610 2625 2640 2655 2670 2685 2700 1OS 120 135 X X X 0 0 0 0 0 X 0 1 X X 1 X 0 X X 0 X X 1 X 0 X X X X X 1 X > X X 1 1 X X X 75 1 X 0 X X ỉ ỉ ỉ X X X X 0 c X X 1 0 1 X 1 X 0 X X X X ỉ ỉ ỉ X X ỉ X 1 X 1 X 1 1 1 X X X X 0 X 1 X 0 X X 1 X 1 X 10 X * 1 1 1 0 X X 0 X 11 0 X 1 1 X 1 X X X 1 ũ 12 X X X X 0 X 1 X 1 1 1 13 1 1 0 1 X X X X 1 X X ■ : 14 X X ° ỉ X 0 X ỉ ỉ 0 ỉ X ỉ 0 X 15 0 X 0 X 1 X 1 1 1 16 0 X X X 1 1 X X 1 17 x 1 1 X X 0 X 1 1 18 c X X 0 1 1 1 1 0 19 1 X 1 1 X X 1 20 0 X 1 X 1 1 X X 21 ỉ X ỉ ỉ ỉ X X 1 1 1 ỉ 22 1 1 1 1 1 X X 1 23 1 X ỉ X X 0 1 X X 1 24 1 0 1 X X 0 1 0 1 1 25 X X X X X X X 1 X 1 1 Từ bảng liệu, đánh giá chất lượng giáng từ thống kê số lượng biếu cảm cùa học sinh qua công thức: „ _ , , Táng cảm xúc tích cực Trung bỉnh cảm xúc tieh cực = —Tông 77—cảm —— -—— " xúc (3.7) Với trung binh biểu cảm tích cực > 0,5, ta đánh giá chất lượng buồi dạy hiệu quả, trung binh biêu cảm tích cực < 0,5 có nghĩa dạy chưa hiệu quà Còn (3.7) cho kết 0,5 thi học đạt kết binh thường Từ Bàng liệu 3.4, ta kết quà sau: Result 2552 611 X Medium 0.661 Hình 3.24: Kết thống kê từ tiết học đưọ'c thực nghiệm 69 3.6 Kết luận chuong Trong chương 3, tác giá tiến hành phân tích tốn xây dựng modules mơ hình LDFER huấn luyện đế áp dụng vào chương trình ứng dụng, thử nghiệm thực nghiệm ba hỉnh thức: ánh, video camera Với kết thứ nghiệm, kết nhận dạng mơ hình LDRFER quan tập liệu thử nghiệm, đạt mức thấp 99.08% tập liệu JAFFE, cao 100% tập liệu OuluCASIA So sánh với kết khác cho thấy mô hình LDFER cao tập liệu JAFFE OuluCASIA, cao thứ hai tập dừ liệu CK.+ Mơ hình LDFER áp dụng cho kết q tốt ứng dụng Đặc biệt, the nhẹ nên dễ dàng tích hợp hệ thống có lực tính tốn khơng địi hịi q cao, phù hợp với đa dạng điều kiện thực tế cho kết tốt toán ứng dụng Với kết quà thực nghiệm, chương trinh đưa kết q xác có thống kê kết theo thời gian thực Từ đó, hồ trợ công tác thống kê đánh giá chất lượng buổi học 70 KẾT LUẬN VÀ KIẾN NGHỊ 4.1 Kết luận Luận văn có kết luận thức sau đây: Một khía cạnh quan trọng cùa luận văn nhấn mạnh vào việc phát biểu cảm tích cực tiêu cực cúa học sinh trình học tập đế đánh giá mức độ hứng thú học sinh học Nhờ đó, giáo viên điều chinh phương pháp giăng dạy cách hiệu phù hợp với môn học, giảng đối tượng học sinh Nghiên cứu nhận dạng biếu cảm khuôn mặt đà trở thành lĩnh vực quan trọng trí tuệ nhân tạo công nghệ phát triến Đe tài cung cấp cách tiếp cận độc áp dụng việc đánh giá chất lượng buổi học Ket quà nghiên cứu chứng minh tiềm công nghệ nhận dạng biểu cảm khuôn mặt đế đánh giá chất lượng buối học dựa phản ứng biểu cảm học sinh Thơng qua phân tích đánh giá độ xác cùa phương pháp nhận dạng biếu căm khuôn mặt, nghiên cứu chứng minh khà công nghệ việc tự động đánh giá biếu cám học sinh cách khă thi mặt kỹ thuật, thời gian môi trường học tập thực tế, đảm báo tính khách quan Nhờ đó, q trình học tập cùa học sinh có thẻ ghi nhận chi tiết, biếu đạt thông qua biếu cám suốt q trình học Neu có bất thường, hệ thống có thề tồng hợp báo cáo cho giáo viên, người quàn lý hồ trợ để nhắc nhờ giúp học sinh đạt kết quà học tập tốt Kết thực nghiệm trường THPT Trần Nhân Tông, quận Hai Bà Trưng, Hà Nội cho thay tính khả thi hiệu quà luận văn Ngồi việc phát biểu cảm tích cực tiêu cực cùa học sinh trình học tập trực tuyến trường, mơ hình áp dụng cho ngân hàng, siêu thị lĩnh vực khác Với dừ liệu đau vào ãnh chụp khách hàng họ đến phòng giao dịch, siêu thị, cứa hàng, thu thập qua camera hỗ trợ giám sát, thơng qua mơ hình nhận dạng biếu cảm khn mặt, phát biểu càm hài lịng khơng hài lịng khách hàng sử dụng dịch vụ, 71 mua sắm, vận động ngân hàng, siêu thị, đế nắm bát tâm trạng khách hàng Từ đó, đưa phân tích giái pháp phù hợp nham mang lại trãi nghiệm cá nhân hóa cải thiện dịch vụ phục vụ khách hàng Hình 4.1: Giao diện phát triển đề tài Tuy nhiên, với thời gian có hạn việc hạn chế mặt thiết bị, chương trình tác già xây dựng cịn nhiều điểm hạn chế Có kể đến việc thống kê chất lượng dạy theo thời gian thực, chưa xử lý nghiệp vụ phức tạp cảnh báo chất lượng dạy, ti lệ nhận dạng học sinh phía xa camera thấp hay giao diện cùa chương trinh chưa đa dạng hữu nghiệm đế thao tác Trong tương lai, tác giả cải tiến tích hợp lai ghép kiến trúc đạt chất lượng cao trích chọn đặc trưng mơ hình thừ nghiệm tập liệu phức tạp đổ đánh giá 4.2 Kiến nghị Từ kết nghiên cứu thí nghiệm ứng dụng đạt trên, đề tài đề xuất số vấn đề sau: Tích hợp hệ thống nhận diện biêu cảm khn mặt vào quy trình đánh giá chất lượng buối học: Hệ thống nhận diện biểu cảm khn mặt tích hợp vào quy trình đánh giá chất lượng buổi học trường học tố chức giáo dục Việc giúp đánh giá mức độ hứng thú, tham gia, tương tác 72 học sinh lớp học, từ đưa nhận xét khuyến nghị cụ để thiện chất lượng buổi học Áp dụng nhận diện biếu cảm khuôn mặt để đánh giá chất lượng trình học tập trực tuyến: Hệ thong nhận diện biếu cám khn mặt có thê sir dụng đe đánh giá chất lượng trình học tập trực tuyến, đo lường hài lòng, tương tác học sinh qua biếu biểu cảm khuôn mặt Điều giúp hiếu rõ trải nghiệm học tập học sinh đưa cải tiến phù hợp Nâng cấp hệ thống: Đề triển khai hệ thống cần có thiết bị xứ lý hình ảnh tốc độ cao máy tính phải có xứ lý đồ họa có cấu hỉnh cao (GPU) nhàm đáp ứng cho thực thi tính tốn kiến trúc mạng CNN 73 DANH MỤC TÀI LIỆU THAM KHẢO Tài liệu Tiếng Việt [ ] Bùi Thế Hùng, Dương Thăng Long - Một phương pháp nhận dạng khuôn mặt dựa mạng nơ ron tích chập, Tạp chí khoa học Viện Đại học Mở Hà Nội, số 58,2019 [2] Bùi Thế Hùng - Luận văn thạc sĩ: Phương pháp nhận dạng khuôn mật dựa mạng nơron học sâu ứng dụng ghi nhận cản vào Viện khoa học công nghệ quân sự, Trường Đại học Mớ Hà Nội, 2019 [3] Dương Thăng Long, Đồ Thị Thu Hà, Trần Văn Nam: Mơ hình mạngnơron tích chập the nhẹ dựa kiến trúc DenseNet cho nhận dạng biếu cám khuôn mặt ứng dụng ho trự đánh giá q trình học tập trực tuyến, Tạp chí Khoa học trường Đại học Mở Hà Nội, số 102, 2023 [4] Nguyễn Thị Nhung - Luận văn thạc sĩ: Phương pháp nhận dạng khuôn mặt dựa phương pháp học chuyên giao mạng nơron tích chập ứng dụng vào toán diêm danh học sinh trường THPT Chuyên Vĩnh Phúc, Trường Đại học Mờ Hà Nội, 2021 Tài liệu Tiếng Anh [5] Duong Thang Long: A Facial Expressions Recognition Method Using Residual Network Architecture for Online Learning Evaluation, Journal of Advanced Computational Intelligence and Intelligent Informatics, tập 25, sô 6, pp 1-10,2021 [6] W.Deng s Li, “Deep Facial Expression Recognition: A Survey,” IEEE Transactions on Affective Computing, tập 13, pp 1195-1215, 2022 [7] M.Wang W.Dcng, “Deep Face Recognition: A Survey,” Neurocomputing, tập 429, pp 215-244, 2021 [8] S.-C Lai, C.-Y Chen J.-H Li, “Efficient Recognition of Facial Expression with Lightweight Octave Convolutional Neural Network,” Journal of Imaging Science and Technology, pp 040402.1-9, 2022 74 [9] M Tan Q V Le, “EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks,” Proceedings of the 36th International Conference on Machine Learning, pp 6105-6114, 2019 [10] G Huang, z Liu, L V D Maaten K Q Weinberger, “Densely Connected Convolutional Networks,” IEEE Conference on Computer Vision and Pattern Recognition (CVPR), số ISSN: 1063-6919, pp 1-9, 2018 [11] R R Devaram A Cesta, “LEMON: A Lightweight Facial Emotion Recognition System for Assistive Robotics Based on Dilated Residual Convolutional Neural Networks,” Sensors, tập 22, số 3366, pp 1-20, 2022 [12] D.T.Long, “A Lightweight Face Recognition Model Using Convolutional Neural Network for Monitoring Students in E-Learning,” I.J Modern Education and Computer Science, tập 6, pp 16-28, 2020 [13] N Zhou, R Liang w Shi, “A Lightweight Convolutional Neural Network for Real-Time Facial Expression Detection,” IEEE Access, tập 9, pp 5573 - 5584, 2020 [14] p N R Bodavarapu p Srinivas, “An optimized Neural Network Model for Facial Expression Recognition over Traditional Deep Neural Networks,” International Journal of Advanced Computer Science and Applications, tập 12, so 7, pp 443-451, 2021 Tài liệu website [15] https://tapchinganhang.gov.vn/mo-hinh-phat-hicn-cam-xuc-khuon-mat- nham-danh-gia-muc-do-hai-long-cua-sinh-vien-hoc-vien-ngan-hang-k.htm 75 PHỤ LỤC Mơ-đun lấy mẫu hình ảnh tiền xử lý Mô-đun thực kết nối với webcam máy hồ trợ giám sát để lấy mẫu hỉnh ảnh, nhận diện khuôn mặt, chỉnh lấy liệu khuôn mặt cap = cv2.VideoCapture(source) Tác giã sử dụng chế vịng lặp liên tục đế lấy mẫu hình ảnh, có độ trễ lần lặp nhằm xác định số hỉnh ảnh cần lấy giây (tần suất lấy mẫu) SC chụp 10 hỉnh ảnh giây Trường hợp lấy ánh từ webcam máy tính, sứ dụng kĩ thuật đối xứng ảnh để thu ánh thực tế while True: if tep_anh is not None: frame = cv2.imread(tep_anh) else: ret, frame = cap.read() if not ret: print('CANNOT read frame from WEBCAM’) break - Hàm khởi tạo DenseNet def create_DenseNet(input_shape, n_classes): input = keras.layers.Input (input_shape) X = keras.layers.Conv2D(64, 7, strides = 2, padding = 'same')(input) X = keras.layers.MaxPool2D(3, strides = 2, padding = 'same')(x) for i,(filters,repetition) in enumerate(zip([8,16,32,64],[2,4,8,16])): 76 y = MyModel.dense_block(x, filters, stride=l, activation='relu', repetition=repetition) X = MyModel.transition_block(y, filters) #last of X is not used y = keras.layers.GlobalAveragePooling2D()(y) output = keras.layers.Dense(n_classes, activation = 'softmax')(y) model = keras.models.Model(inputs=input, outputs=output, name='densenet') model.compile(optimizer=keras.optimizers.Adam(learning_rate =le-3), loss='categorical_crossentropy', metrics='accuracy') return model Mô-đun huấn luyện mỏ hỉnh - Hàm tài mơ hình huấn luyện: def load_pretrained_model(): emotion_dict = {0:"negative",1:"negative",?:"negative",3:"positive",4:"neg ative",5:"positive",6:"positive"} input_shape,n_classes = (48,48,1), len(emotion_dict) model = keras.models.load_model('my_pretrained_model.h5') return model, input_shape, emotion_dict Hàm huấn luyện: if mode == "train": 77 idx_all = np.arange(len(files)) idx_valid = np.random.choice(idx_all,int(len(idx_all)*0.2),replace=Fals e) idx_train = np.array([i for i in idx_all if i not in idx_valid]) data_train = MyData(files[idx_train]J targets[idx_train],input_shape, augment_x=3) data_valid = MyData(files[idx_valid]J targets[idx_valid],input_shape) if 0: print('Train:') for i,(x,y) in enumerate(data_train): print(ijX.shapely.shape) print('Validation:') for i,(x,y) in enumerate(data_valid): print(i,X.shapely.shape) if 0: im = cv2.imread(files[0]) im = MyData.augment_image(im) sf = f'{working_path}/{os.path.split(files[0])[-1]}' cv2.imwrite(sf,im) print(f'Augmented the first image to file [{sf}]') model = MyModel.create_DenseNet(input_shape,len(emotion_dict)) 78 mcp_save = keras.callbacks.ModelCheckpoint(saved_model, save_best_only=True, monitor='val_loss') hist = model.fit( data_train, steps_per_epoch = len(data_train), epochs = 150, validation_data = data_valid, callbacks = [mcp_save]) save_hist = f'{os.path.splitext(saved_model)[0]}.txt' with open(save_hist,'w') as fh: fh.write(FModel name: {model.name}, Datapath: {data_path}') for k,v in hist.history.items(): fh.write(f'\n{k}:') for h in v: fh.write(f',{h:.6}') fh.close() print(f'Save training-history to file [{save_hist}]') meta_data = json.dumps(emotion_dict) f = h5py.File(saved_model, mode='a') f.attrs['emotions'] = meta_data f.close() model = keras.models.load_model(saved_model) for data in [data_train,data_valid]: score = model.evaluate(data) 79 print(f'\nEvaluation trained-MODEL on {"Train" if data==data_train else "Valid"} with score : {score}') - Câu lệnh hiển thị thông tin nhận dạng fh = open('ketqua.txt', 'a') fh.write(f'DateT ime={datetime.now().strftime("%d%b%y- %H%M%S")}, ') for ỉ,(x, y, Wj h) ỉn enumerate (faces): y,h = y-20,h+40 detected = frame[y:y + h, x:x + w, :] cv2.imwrite(f'{working_path}/images/{ỉ+l}_{datetime.now().s trftime("%d%b%y-%H%M%S")}.jpg',detected) if ỉnput_shape[2]==l: gray = cv2.cvtColor(detected,cv2.C0L0R_RGB2GRAY) detected = np.expand_dims(gray,-1) cropped_img = np.expand_dims(cv2.resize(detected, (input_shape[l],input_shape[0])), 0)/255 prediction = model.predict(cropped_img) maxindex = int(np.argmax(prediction)) do_tincay = prediction[0][maxindex] emotion = emotion_dict[maxindex] 80 cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.putText(frame, emotion, (x+20, y-60), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA) fh.write(f'F[{i+1}]:{emotion}={do_tincay*100:.2f}, ') Xây dựng giao diện chương trình: import tkinter as tk from tkinter import Message, Text import cv2, os import shutil import csv from PIL import Image, ImageTk import pandas as pd import datetime import datetime as datetime import time import tkinter.ttk as ttk import tkinter.font as font import tkinter import sys, io, os, cv2, glob, numpy as np import tensorflow as tf from tensorflow import keras as keras import face_cam_application window = tk.Tk() window.title("THPT Trần Nhân Tỏng - Q Hai Bà Trưng - TP 81 Hà Nội") window.geometry('1280x720') window.configure(background='LightBlue4') window.grid_rowconfigure(0, weight=l) window.grid_columnconfĩgure(0, weight=l) message = tk.Label(window, text="Hệ thống nhận diện biểu cảm khuôn mặt" ,bg="dark slate gray" ,width=42 ,fg="white" ,height=2,font=('times', 30, 'italic bold underline')) message.place(x=200, y=100) def clear(): txt.delete(0, 'end') res = "" message.configure(text= res) def clear2(): txt2.delete(0, 'end') res = "" message.configure(text= res) def is_number(s): try: float(s) return True 82

Ngày đăng: 03/10/2023, 19:01