Đề tài Nhận dạng cảm xúc khuôn mặt người

Trong những năm gần đây, xử lý ảnh đang đƣợc nghiên cứu và phát triển với tốc độ nhanh chóng bởi các trung tâm nghiên cứu, trƣờng đại học và học viện. Trong đó, nhận dạng và phân loại hình ảnh là một trong những lĩnh vực đƣợc theo đuổi một cách tích cực. Ý tƣởng cốt lỗi từ việc nhận dạng và phân loại hình ảnh là phân tích ảnh từ dữ liệu thu đƣợc bởi các cảm biến hình ảnh nhƣ camera, webcam. Nhờ hệ thống xử lý hình ảnh mà con ngƣời đã giảm bớt khối công việc cũng nhƣ tăng sự chính xác trong việc đƣa ra các quyết định liên quan đến xử lý ảnh trên nhiều lĩnh vực: quân sự và quốc phòng, các hệ thống kỹ nghệ hoá sinh, giải phẫu, các hệ thống thông minh, robotics, các hệ thống an ninh [1]. Cùng với các hình thức nhận dạng khác nhƣ: nhận dạng giọng nói, chữ viết, dấu vân tay, võng mạc [2], thì bài toán nhận dạng cảm xúc trên khuôn mặt ngƣời đang đƣợc nhóm quan tâm chú ý. Trên cơ thể con ngƣời có rất nhiều đặc điểm để nhận dạng, nhƣng khuôn mặt là nơi thể hiện nhiều trạng thái cảm xúc: vui, buồn, giận dữ, phẫn nộ. Điều quan trọng nhất trong xã hội hiện nay là các thiết bị điện tử hầu nhƣ tự động hoá, thông minh, hiểu ý con ngƣời mà không cần phải thiết bị điều khiển trung gian nào. Các thuật toán nhận dạng và xử lý ngày càng đƣợc sử dụng rộng rãi. Vì vậy từ những vấn đề trên, ĐATN kiến nghị thực hiện đề tài “Nhận diện cảm xúc khuôn mặt người” bằng xử lý ảnh

pdf76 trang | Chia sẻ: thientruc20 | Lượt xem: 1257 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Đề tài Nhận dạng cảm xúc khuôn mặt người, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ii TRƢỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o---- Tp. HCM, ngày 5 tháng 7 năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Thị Đài Trang MSSV: 13141378 Hà Tiến Dƣơng MSSV: 13141047 Chuyên ngành: Kỹ thuật Điện tử - Truyền thông Mã ngành: Hệ đào tạo: Đại học chính quy Mã hệ: Khóa: 2013 Lớp: 13141 I. TÊN ĐỀ TÀI: NHẬN DẠNG CẢM XÚC KHUÔN MẶT NGƢỜI II. NHIỆM VỤ 1. Các số liệu ban đầu: (ghi những thông số, tập tài liệu tín hiệu, hình ảnh,) .............................................................................................................................. .............................................................................................................................. ............................................................................................................................. . .............................................................................................................................. ............................................................................................................................. . 2. Nội dung thực hiện: (ghi những nội dung chính cần thực hiện như trong phần tổng quan) .............................................................................................................................. .............................................................................................................................. ............................................................................................................................. . ............................................................................................................................. . ............................................................................................................................. . ............................................................................................................................. . III. NGÀY GIAO NHIỆM VỤ: IV. NGÀY HOÀN THÀNH NHIỆM VỤ: V. HỌ VÀ TÊN CÁN BỘ HƢỚNG DẪN: Ts. Nguyễn Thanh Hải CÁN BỘ HƢỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iii TRƢỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o---- Tp. HCM, ngày 5 tháng 7 năm 2018 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Hà Tiến Dƣơng Lớp: 13141DT MSSV: 13141047 Họ tên sinh viên 2: Lớp: 13141DT MSSV: 13141378 Tên đề tài: NHẬN DẠNG CẢM XÚC KHUÔN MẶT NGƢỜI Tuần/ngày Nội dung Xác nhận GVHD Tuần 1 Tìm đề tài Tuần 2,3 Nghiên cứu đề tài cũ. Tìm hiểu hoạt động Arduino và Matlab. Tuần 4 Cài đặt Matlab, cài Arduino, cài webcam trên Matlab. Tuần 5 Lập trình Arduino với các chân I/O để nhúng dữ liệu. Tuần 6 Lập trình và xây dựng bộ ảnh huấn luyện để nhận dạng. Tuần 7 Lập trình nhận dạng cảm xúc từ bộ ảnh huấn luyện. Tuần 8,9 Lập trình nhận dạng cảm xúc qua Webcam. Tuần 10 Hiệu chỉnh toàn bộ chƣơng trình. Tuần 11,12 Viết luận văn. Tuần 13,14,15 Chỉnh sửa, in đồ án. GV HƢỚNG DẪN (Ký và ghi rõ họ và tên) iv LỜI CAM ĐOAN Đề tài này là do Nguyễn Thị Đài Trang và Hà Tiến Dƣơng tự thực hiện dựa vào một số tài liệu trƣớc đó và không sao chép từ tài liệu hay công trình đã có trƣớc đó. Ngƣời thực hiện đề tài Nguyễn Thị Đài Trang Hà Tiến Dƣơng v LỜI CẢM ƠN Trong thời gian thực hiện đề tài, nhóm thực hiện đƣợc sự giúp đỡ của gia đình, quý thầy cô và bạn bè nên đề tài đã đƣợc hoàn thành. Nhóm thực hiện xin chân thành gửi lời cảm ơn đến: Thầy Nguyễn Thanh Hải, giảng viên trƣờng Đại Học Sƣ Phạm Kỹ Thuật Tp.HCM đã trực tiếp hƣớng dẫn và tận tình giúp đỡ tạo điều kiện để nhóm có thể hoàn thành tốt đề tài. Nhóm thực hiện cũng xin chân thành cám ơn đến các thầy cô trong khoa Điện - Điện tử của trƣờng Đại Học Sƣ Phạm Kỹ Thuật Tp.HCM đã tận tình dạy dỗ, chỉ bảo, cung cấp cho những ngƣời thực hiện những kiến thức nền, chuyên môn làm cơ sở để hoàn thành đề tài này. Cảm ơn gia đình đã động viên và luôn luôn bên cạnh trong những lúc khó khăn nhất. Xin gửi lời cảm ơn đến những ngƣời bạn sinh viên khoa Điện-Điện tử đã giúp đỡ những ngƣời thực hiện đề tài để có thể hoàn thành tốt đề tài này. Xin chân thành cảm ơn! Ngƣời thực hiện đề tài: Nguyễn Thị Đài Trang Hà Tiến Dƣơng vi MỤC LỤC Contents NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ........................................................................ ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP...............................................iii LỜI CAM ĐOAN ................................................................................................... iv LỜI CẢM ƠN ......................................................................................................... v LIỆT KÊ HÌNH VẼ .............................................................................................. viii Chƣơng 1. TỔNG QUAN ........................................................................................ 1 ĐẶT VẤN ĐỀ ..................................................................................................... 1 1.1. MỤC TIÊU ................................................................................................ 1 1.2. NỘi DUNG NGHIÊN CỨU ....................................................................... 2 1.3. GIỚI HẠN ................................................................................................. 2 1.4. BỐ CỤC ..................................................................................................... 2 Chƣơng 2. CƠ SỞ LÝ THUYẾT ............................................................................. 1 2.1 PHẦN CỨNG ............................................................................................ 1 2.1.1 Kit Arduino.......................................................................................... 1 2.1.2. Kit Arduino Uno .................................................................................... 1 2.1.3. PHẦN MỀM MATLAB. ....................................................................... 3 2.2.CÁC CẢM XÚC TRÊN KHUÔN MẶT ........................................................ 4 2.3. PHƢƠNG PHÁP NHẬN DẠNG PCA - EIGENFACES. .............................. 5 2.3.1. Phƣơng pháp nhận dạng PCA................................................................ 5 2.3.2 Eigenfaces trong nhận dạng cảm xúc trên khuôn mặt. ............................ 8 2.3.3. Các bƣớc cơ bản trong Eigenfaces ....................................................... 10 2.4. Các hàm xử lý trong matlab ........................................................................ 15 Các hàm chính hiển thị ảnh trong matlab: .......................................................... 15 Chƣơng 3. TÍNH TOÁN VÀ THIẾT KẾ ......................................................... 18 3.1 GIỚI THIỆU ............................................................................................ 18 3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG .............................................. 18 3.2.2.Thiết kế các khối hệ thống .................................................................... 21 3.3. CÀI ĐẶT CÁC GÓI HỖ TRỢ PHẦN CỨNG CHO MATLAB .................. 22 3.3.1. Kết nối Arduino với Matlab ................................................................. 22 3.3.2. Cài đặt Camera cho Matlab .................................................................. 25 vii Chƣơng 4. THI CÔNG HỆ THỐNG ................................................................ 26 4.1 GIỚI THIỆU ............................................................................................ 26 4.2 THI CÔNG HỆ THỐNG .......................................................................... 26 4.3 LẬP TRÌNH HỆ THỐNG ........................................................................ 28 4.4 VIẾT TÀI LIỆU HƢỚNG DẪN SỬ DỤNG, THAO TÁC. ...................... 32 4.4.1 Tài liệu hƣớng dẫn sử dụng. ............................................................... 32 Chƣơng 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ ............................................ 36 5.1 KẾT QUẢ ................................................................................................ 36 5.1.1. Tổng quan kết quả đạt đƣợc ..................................................................... 36 5.1.2. Kết quả thực tế ..................................................................................... 36 5.2 NHẬN XÉT VÀ ĐÁNH GIÁ ................................................................... 42 Chƣơng 6. KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ............................................ 44 6.1 KẾT LUẬN .............................................................................................. 44 6.2 Ƣu và nhƣợc điểm ....................................................................................... 44 6.3 HƢỚNG PHÁT TRIỂN ........................................................................... 45 PHỤ LỤC.............................................................................................................. 47 1. Hàm train ................................................................................................. 47 2. Chƣơng trình lấy mẫu đầu vào .................................................................. 48 3. Giao diện chính chƣơng trình ................................................................... 49 4. Chƣơng trình mô phỏng............................................................................ 52 viii LIỆT KÊ HÌNH VẼ Hình Trang Hình 2.1: Cấu trúc phần cứng của Arduino Uno. ....................................................... 5 Hình 2.2: Cấu trúc phần cứng của Arduino Uno. ....................................................... 12 Hình 2.3: Lấy ảnh đầu vào. ........................................................................................ 16 Hình 2.4: Ảnh trong tập mẫu. .................................................................................... 17 Hình 3.1. Sơ đồ khối của hệ thống. ............................................................................ 20 Hình 3.2. Sơ đồ khối quá trình tạo dữ liệu huấn luyện. ............................................. 20 Hình 3.3. Sơ đồ khối quá trình nhận dạng ................................................................. 20 Hình 3.4. Get Hardware Support Package .................................................................. 23 Hình 3.5. Cửa sổ Support Package Installer. .............................................................. 24 Hình 3.6. Giao diện cài Package cho Arduino. ........................................................... 24 Hình 3.7. Kết nối Arduino và Matlab thành công....................................................... 25 Hình 3.8. Cài đặt Camera cho Matlab ........................................................................ 25 Hình 4.1. Sơ đồ đấu nối dây của Arduino với Servo. ................................................. 28 Hình 4.2. Sơ đồ đấu nối dây của Arduino với led....................................................... 29 Hình 4.3. Lƣu đồ chƣơng trình chính. ........................................................................ 30 Hình 4.4. Sơ đồ chƣơng trình nhận dạng. ................................................................... 31 Hình 4.5. Sơ đồ chƣơng trình xử lý ảnh chụp. ............................................................ 32 Hình 4.6. Sơ đồ chƣơng trình trích đặc trƣng. ............................................................ 33 Hình 4.7. Khởi động phần mềm . ............................................................................... 34 Hình 4.8. Giao diện chính. ......................................................................................... 35 Hình 4.9. Giao diện chƣơng trình mô phỏng . ............................................................ 36 Hình 4.10. Kết quả nhận đƣợc từ ảnh chụp trực tiếp. ................................................. 37 Hình 4.11. Kết quả nhận đƣợc từ ảnh chụp lƣu sẵn . .................................................. 37 Hình 5.1. Giao diện chính .......................................................................................... 38 Hình 5.2. Giao diện chƣơng trình mô phỏng .............................................................. 38 Hình 5.3. Ảnh chụp để kiểm tra ................................................................................. 39 Hình 5.4. Data ảnh huấn luyện. .................................................................................. 40 Hình 5.5. Nhận dạng thành công cảm xúc “vui” từ ảnh có sẵn. .................................. 41 Hình 5.6. Nhận dạng thành công cảm xúc “buồn” từ ảnh có sẵn ................................ 41 Hình 5.7. Nhận dạng thành công cảm xúc “ngạc nhiên” từ có sẵn ............................. 42 Hình 5.8 . Nhận dạng thành công cảm xúc “vui” từ webcam ..................................... 42 Hình 5.9. Nhận dạng thành công cảm xúc “buồn” từ camera. .................................... 43 ix Hình 5.10. Nhận dạng thành công cảm xúc “ngạc nhiên” từ webcam ....................... 43 Hình 5.11. Nhận dạng thành công cảm xúc “vui” thì mở cửa. . .................................. 44 Hình 5.12. Nhận dạng thành công cảm xúc “buồn” thì mở đèn. . ............................... 44 Hình 5.13. Nhận dạng thành công cảm xúc “ngạc nhiên” thì mở cửa tắt đèn. ........... 45 x LIỆT KÊ BẢNG Bảng Trang Bảng 2.1. Thông số kỹ thuật Arduino Uno..................................................................... 5 Bảng 2.2 Các hàm xử lý hình ảnh khác trong Matlab. ................................................. 17 Bảng 4.1. Danh sách các linh kiện, module .................................................................. 27 Bảng 5.1. Thống kê kết quả nhận dạng từ ảnh chụp .................................................... 45 Bảng 5.2. Thống kê kết quả nhận dạng từ camera ........................................................ 45 CHƢƠNG 1. TỔNG QUAN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 1 Chương 1. TỔNG QUAN ĐẶT VẤN ĐỀ Trong những năm gần đây, xử lý ảnh đang đƣợc nghiên cứu và phát triển với tốc độ nhanh chóng bởi các trung tâm nghiên cứu, trƣờng đại học và học viện. Trong đó, nhận dạng và phân loại hình ảnh là một trong những lĩnh vực đƣợc theo đuổi một cách tích cực. Ý tƣởng cốt lỗi từ việc nhận dạng và phân loại hình ảnh là phân tích ảnh từ dữ liệu thu đƣợc bởi các cảm biến hình ảnh nhƣ camera, webcam. Nhờ hệ thống xử lý hình ảnh mà con ngƣời đã giảm bớt khối công việc cũng nhƣ tăng sự chính xác trong việc đƣa ra các quyết định liên quan đến xử lý ảnh trên nhiều lĩnh vực: quân sự và quốc phòng, các hệ thống kỹ nghệ hoá sinh, giải phẫu, các hệ thống thông minh, robotics, các hệ thống an ninh [1]. Cùng với các hình thức nhận dạng khác nhƣ: nhận dạng giọng nói, chữ viết, dấu vân tay, võng mạc [2], thì bài toán nhận dạng cảm xúc trên khuôn mặt ngƣời đang đƣợc nhóm quan tâm chú ý. Trên cơ thể con ngƣời có rất nhiều đặc điểm để nhận dạng, nhƣng khuôn mặt là nơi thể hiện nhiều trạng thái cảm xúc: vui, buồn, giận dữ, phẫn nộ. Điều quan trọng nhất trong xã hội hiện nay là các thiết bị điện tử hầu nhƣ tự động hoá, thông minh, hiểu ý con ngƣời mà không cần phải thiết bị điều khiển trung gian nào. Các thuật toán nhận dạng và xử lý ngày càng đƣợc sử dụng rộng rãi. Vì vậy từ những vấn đề trên, ĐATN kiến nghị thực hiện đề tài “Nhận diện cảm xúc khuôn mặt người” bằng xử lý ảnh. 1.1. MỤC TIÊU Xây dựng hệ thống nhận diện cảm xúc khuôn mặt bằng cách nối board mạch Arduino với phần mềm Matlab. Mô hình sẽ nhận diện cảm xúc trên khuôn mặt ngƣời, đồng thời ứng với mỗi cảm xúc Arduino sẽ điều khiển trạng thái của cửa và đèn led. Khi nhận đƣợc cảm xúc vui (cƣời) sẽ điều khiển servo mở cửa. Khi buồn (không cƣời) sẽ điều khiển mở đèn. Khi nhận đƣợc cảm xúc ngạc nhiên sẽ điều khiển servo đóng cửa và tắt đèn. CHƢƠNG 1. TỔNG QUAN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 2 1.2. NỘi DUNG NGHIÊN CỨU Mục tiêu xây dựng hệ thống: “Nhận dạng cảm xúc trên khuôn mặt” nhƣ trên thì nhóm sẽ thực hiện những nội dung nhƣ sau :  Tìm hiểu các tài liệu, đồ án trƣớc đó.  Xử lý ảnh đầu vào từ camera hoặc từ thƣ mục có sẵn.  Kết nối và cài đặt nguồn thƣ viện cho Arduino trên phần mềm Matlab.  Xây dựng hệ thống nhận dạng cảm xúc trên khuôn mặt.  Lắp ráp các khối điều khiển vào mô hình.  Lập trình và viết code cho các ứng dụng trên kit Arduino.  Chạy thử và điều chỉnh mô hình.  Đánh giá kết quả thực hiện.  Viết báo cáo. 1.3. GIỚI HẠN Mô hình chỉ nhận dạng cảm xúc trên khuôn mặt với ba trạng thái: vui, buồn và ngạc nhiên. Sử dụng webcam từ máy tính . 1.4. BỐ CỤC Đồ án tốt nghiệp: “Nhận dạng cảm xúc trên khuôn mặt” trình bày trong 6 chƣơng với bố cục nhƣ sau:  Chƣơng 1: Tổng quan Chƣơng này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn thông số và bố cục đồ án.  Chƣơng 2: Cơ sở lý thuyết. Giới thiệu về kit Arduino, giới thiệu về cách cài đặt thƣ viện cho Arduino và camera webcam trên phần mềm Matlab. Giới thiệu về phép phân tích thành phần chính PCA và áp dụng vào bài toán nhận dạng cảm xúc trên khuôn mặt ngƣời.  Chƣơng 3: Thiết kế và Tính toán CHƢƠNG 1. TỔNG QUAN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 3 Phân tích, xây dựng sơ đồ khối, sơ đồ phần cứng, thiết kế về chƣơng trình cho hệ thống nhận dạng cảm xúc trên khuôn mặt ngƣời đƣợc viết trên phần mềm Matlab, sử dụng thƣ viện của Matlab cho kit Arduino.  Chƣơng 4: Thi công hệ thống Xây dựng chƣơng trình hoàn chỉnh cho toàn hệ thống, các hàm, các lƣu đồ, các chƣơng trình đƣợc sử dụng. Tạo tập tin huấn luyện, lắp ráp và test cho chƣơng trình. Viết tài liệu hƣớng dẫn sử dụng, quy trình thao tác.  Chƣơng 5: Kết quả, Nhận xét và đánh giá Nêu các kết quả đạt đƣợc khi thực hiện chƣơng trình, phân tích, nhận xét, đánh giá kết quả thực thi đƣợc.  Chƣơng 6: Kết luận và Hƣớng phát triển Tóm tắt những kết quả đạt đƣợc, những hạn chế và nêu lên các hƣớng phát triển trong tƣơng lai. CHƢƠNG 2. CƠ SỞ LÝ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 1 Chƣơng 2. CƠ SỞ LÝ THUYẾT 2.1 PHẦN CỨNG 2.1.1 Kit Arduino Arduino ra đời tại thị trấn Ivrea – Italy, đƣợc giới thiệu vào năm 2005 nhƣ một công cụ cho sinh viên tìm tòi, học hỏi, phát triển, nhƣng đến nay Arduino đã đƣợc sử dụng rộng rãi trên thế giới và chứng tỏ đƣợc hiệu quả thông qua vô số ứng dụng từ ngƣời dùng. Arduino là một board mạch vi xử lý đƣợc dùng để tƣơng tác với các thiết bị phần cứng nhƣ cảm biến, động cơ, đèn hay các thiết bị khác. Một board Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung đã làm nên board mạch với nhiều thế mạnh hơn so với các vi điều khiển khác nhƣ: chạy đƣợc trên nhiều hệ điều hành khác nhau (Windows, Linux..), dễ dàng lắp ráp và mở rộng phần cứng, phát triển dựa trên nguồn mở, dễ dàng chia sẻ mã nguồn với nhau mà không phải lo lắng ngôn ngữ hay hệ điều hành đang sử dụng Arduino thƣờng sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280 và ATmega2560. Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz, các board Arduino hiện tại đƣợc lập trình thông qua cổng USB. 2.1.2. Kit Arduino Uno Kit Arduino có nhiều phiên bản với tính năng và mục đích sử dụng khác nhau. Board Arduino Uno là một trong những phiên bản đƣợc sử dụng rộng rãi nhất bởi chi phí và tính linh động của nó. Arduino Uno [3] là một board mạch vi điều khiển dựa trên chip Atmega328 với 14 chân vào/ra bằng tín hiệu số đƣợc đánh số từ 0 đến 13,