ĐẠI HỌC Đ À NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN Tel. (84 - 236 ) 3736949 Website: itf.dut.edu.vn , E - mail: cntt@dut.udn.vn ĐỒ ÁN TỐT NGHIỆP KỸ SƯ NGÀNH CÔNG NGHỆ THÔNG TIN ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG DI ĐỘNG NHẬN DIỆN CẢM XÚC SINH VIÊN : LÊ TRỌNG TÀI MÃ SINH VIÊN : 1021 50130 LỚP : 1 5T2 CBHD : TS. Phạm Minh Tuấn Đà Nẵng, 12/201 9 1 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP 1. Thông tin chung: 1. Họ và tên sinh viên: LÊ TRỌNG TÀI 2. Lớp: 15T2 Số thẻ SV: 102150130 3. Tên đề tài: Xây dựng ứng dụng di động nhận diện cảm xúc. 4. Người hướng dẫn : Phạm Minh Tuấn Học hàm/ h ọc vị: Tiến sĩ. II. Nhận xét, đánh giá đồ án tốt nghiệp: 1. Về tính cấp thiết, tính mới, khả năng ứng dụng của đề tài: (điểm tối đa là 2đ) ………………………… ………………………………………………………… ………… …………………………………………………………………………………… ………… 2. Về kết quả giải quyết các nội dung nhiệm vụ yêu cầu của đồ án: (điểm tối đa là 4đ) ………………………………………………………………………………… …………… …………………………………………………………………………………… ………… 3. Về hình thức, cấu trúc, bố cụ c của đồ án tốt nghiệp: (điểm tối đa là 2đ) …………………………………………………………………………………… ………… …………………………………………………………………………………… ………… 4. Đề tài có giá trị khoa học/ có bài báo/ giải quyết vấn đề đặt ra của doanh nghiệp hoặc nhà trường: (điểm tối đa là 1đ) ………………………………………… ………………………………………… ………… …………………………………………………………………………………… ………… 5. Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: …………………………………………………………………………………… ………… …………………………………………………………………………………… ………… III. Tinh thần, thái độ làm việc của sinh viên: (điểm tối đa 1đ) …………………………………………………………………………………… ………… IV. Đánh giá: 1. Điểm đánh giá: …………/ 10 (lấy đến 1 số lẻ thập phân) 2. Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không được bảo vệ Đà Nẵng, ngày tháng năm 201 9 Người hướng dẫn 2 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc NHẬN XÉT PHẢN BIỆN ĐỒ ÁN TỐT NGHIỆP I. Thông tin chung: 1. Họ và tên sinh viên: LÊ TRỌNG TÀI 2. Lớp: 15T2 Số thẻ SV: 102150130 3. Tên đề tài: Xây dựng ứng dụng di động nhận diện cảm xúc 4. Người phản biện: ………… ……………………….………… Học hàm/ học vị: ………. II. Nhận xét, đánh giá đồ án tốt nghiệp: TT Các tiêu chí đánh giá Điểm tối đa Điểm đánh giá 1 Sinh viên có phương pháp nghiên cứu phù hợp, giải quyết đủ nhiệm vụ đồ án được giao 80 1a - Tính mới (nội dung chính của ĐATN có những phần mới so với các ĐATN trước đây). - Đề tài có giá trị khoa học, công nghệ; có thể ứng dụng thực tiễn. 15 1b - Kỹ năng giải quyết vấn đề; hiểu, vận dụng được kiến thức cơ bản, cơ sở, chuyên ngành trong vấn đề nghiên cứu. - Chất lượng nội dung ĐATN (thuyết minh, bản vẽ, chương trình, mô hình …). 50 1c - Có kỹ năng vận dụng thành thạo các phần mềm ứng dụng trong vấn đề nghiên cứu; - Có kỹ năng đọc, hiểu tài liệu bằng tiếng nước ngoài ứng dụng trong vấn đề nghiên cứu; - Có kỹ năng làm việc nhóm; 15 2 Kỹ năng viết: 20 2a - Bố cục hợp lý, lập luận rõ ràng, chặt chẽ, lời văn súc tích 15 2b - Thuyết minh đồ án không có lỗi chính tả, in ấn, định dạng 5 3 Tổng điểm đánh giá theo thang 100: Quy về thang 10 (lấy đến 1 số lẻ) - Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ………………………………… …………… ………………………………………………………………………………… …………… - Câu hỏi đề nghị sinh viên trả lời trong buổi bảo vệ: ………………………… ……………. …………………………………………………………………………………… ………… …………………………………………………………………………………… ………… - Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không được bảo vệ Đà Nẵng, ngày tháng năm 20 19 Người phản biện 3 TÓM TẮT Tên đề tài: XÂY DỰNG ỨNG DỤNG DI ĐỘNG NHẬN DIỆN CẢM XÚC. Sinh viên thực hiện: Lê Trọng Tài Số thẻ SV: 1021 50130 Lớp: 15T2 Người hướng dẫn: TS. Phạm Minh Tuấn Hệ thống bao gồm: - Ứng dựng di động nhận diện cảm xúc trên hệ điều hành Android . Các chức năng chính: - Nhận diện cảm xúc thông qua các bức ảnh có chứa khuôn mặt con người. - Gợi ý các thực phẩm nên ăn/uống tuỳ theo tâm trạng. - Quản lý tài khoản. 4 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HÔI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Lê Trọng Tài Số thẻ sinh viên: 1021 50130 Lớp: 1 5T2 Khoa: Công nghệ thông tin Ngành: Công nghệ thông tin 1. Tên đề tài đồ án: Xây dựng ứng dụng di động nhận diện cảm xúc Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện 2. Các số liệu và dữ liệu ban đầu: ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... 3. Nội dung các phần thuyết minh và tính toán: ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... 4. Các bản vẽ, đồ thị (ghi rõ các loại và kích thước bản vẽ): ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... 5. Họ tên người hướng dẫn: T S. Phạm Minh Tuấn ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... ................................ ................................ ................................ ................................ .................... 6. Ngày giao nhiệm vụ đồ án: 06 / 09 /2019 7. Ngày hoàn thành đồ án: 19 / 12 /2019 Đà Nẵng, ngày tháng năm 201 9 Trưởng Bộ môn ………………… Người hướng dẫn 5 LỜI NÓI ĐẦU Trong su ố t th ờ i gian th ự c hi ệ n v à ho à n th à nh đ ồ á n n à y, em đ ã nh ậ n đ ư ợ c s ự gi ú p đ ỡ v à h ư ớ ng d ẫ n t ậ n t ì nh c ủ a c á c Th ầ y, c á c C ô v à c á c b ạ n trong Khoa C ô ng ngh ệ Th ô ng tin Tr ư ờ ng Đ ạ i h ọ c B á ch khoa - Đ ạ i h ọ c Đ à N ẵ ng. C h ú ng em xin g ử i l ờ i c ả m ơ n ch â n th à nh v à s â u s ắ c t ớ i c á c Th ầ y C ô trong Khoa đ ã gi ả ng d ạ y v à truy ề n đ ạ t nh ữ ng ki ế n th ứ c c ầ n thi ế t, nh ữ ng kinh nghi ệ m qu ý b á u cho ch ú ng em c ó th ể th ự c hi ệ n đ ồ á n n à y. Tr ư ớ c ti ê n em xin ch â n th à nh c ả m ơ n Th ầ y Phạm Minh Tuấn t ậ n t ì nh h ư ớ ng d ẫ n, ch ỉ b ả o, đ ộ ng vi ê n v à h ỗ tr ợ em trong su ố t qu á tr ì nh th ự c hi ệ n đ ề t à i n à y. Trong th ờ i gian l à m đ ồ á n c ù ng Th ầ y, em kh ô ng nh ữ ng h ọ c h ỏ i đ ư ợ c nh ữ ng ki ế n th ứ c m à c ò n h ọ c h ỏ i đ ư ợ c kh ả n ă ng l à m vi ệ c nghi ê m t ú c, k ỹ n ă ng l à m vi ệ c nh ó m v à c ó tr á ch nhi ệ m v ớ i c ô ng vi ệ c c ủ a m ì nh. Đ ể c ó đ ư ợ c k ế t qu ả nh ư ng à y h ô m nay, em r ấ t bi ế t ơ n gia đ ì nh v à nh ữ ng ng ư ờ i th â n trong gia đ ì nh đ ã đ ộ ng vi ê n, kh í ch l ệ , t ạ o m ọ i đi ề u ki ệ n thu ậ n l ợ i nh ấ t v ề v ậ t ch ấ t l ẫ n tinh th ầ n trong su ố t qu á tr ì nh h ọ c t ậ p c ũ ng nh ư qu á tr ì nh th ự c hi ệ n đ ề t à i t ố t nghi ệ p n à y. M ặ c d ù đ ã c ó c ố g ắ ng ho à n thi ệ n đ ồ á n trong ph ạ m vi v à kh ả n ă ng cho ph é p nh ư ng kh ô ng tr á nh kh ỏ i nh ữ ng thi ế u s ó t, r ấ t mong nh ậ n đ ư ợ c s ự c ả m th ô ng v à g ó p ý c ủ a qu ý Th ầ y C ô v à c á c b ạ n. Ch ú ng em ch â n th à nh c ả m ơ n! Đà Nẵng, ngày 19 , tháng 12 , năm 201 9 Sinh viên Lê Trọng Tài 6 LỜI CAM ĐOAN Em xin cam đoan: 1. Nội dung trong đồ án này là do em thực hiện dưới sự hướng dẫn trực tiếp của TS. Phạm Minh Tuấn . 2. Các tham khảo dùng trong báo cáo đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố. 3. Nếu có những sao chép không hợp lệ, vi phạm, em xin chịu hoàn toàn trách nhiệm. Đà Nẵng, Ngày 19 tháng 12 năm 2019 Sinh viên thực hiện Lê Trọng Tài 7 Mục lục TÓM TẮT ................................ ................................ ................................ ................................ 3 LỜI NÓI ĐẦU ................................ ................................ ................................ ......................... 5 LỜI CAM ĐOAN ................................ ................................ ................................ .................... 6 MỤC LỤC ................................ ................................ ................................ ............................... 7 DANH SÁCH HÌNH ẢNH ................................ ................................ ................................ ...... 9 DANH SÁCH BẢNG ................................ ................................ ................................ ............ 11 DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT ................................ ................................ 12 MỞ ĐẦU ................................ ................................ ................................ ............................... 13 CHƯƠNG I. CƠ SỞ LÝ THUYẾT ................................ ................................ ....................... 14 1.1. Mạng nơ - ron nhân tạo (ANN) ................................ ................................ ..................... 14 1.1.1. Định nghĩa: ................................ ................................ ................................ ........... 14 1.1.2. Một số hàm truyền thông dụng: ................................ ................................ ........... 15 1.1.3. Một s ố hình trạng của mạng nơ - ron nhân tạo: ................................ ..................... 17 1.1.4. Mạng nơ - ron lan truyền ngược: ................................ ................................ ............ 18 1.2. Mạng nơ - ron tích chập (CNN) ................................ ................................ .................... 22 1.2.1. Định nghĩ mạng nơ - ron tích chập ................................ ................................ ......... 22 1.2.2. Convolution (tích chập) ................................ ................................ ........................ 22 1.2.3. Mạng nơ - ron tích chập ................................ ................................ ......................... 26 1.3 . Ngôn ngữ và công cụ lập trình Android ................................ ................................ ...... 26 1.3.1. Giới thiệu về Android ................................ ................................ ........................... 26 1.3.2. Kiến trúc cơ bản của hệ điều hành Android ................................ ......................... 26 1.3.3. Giới thiệu về Andro id Studio ................................ ................................ ............... 27 1.3.4. Mô hình MVP trong Android ................................ ................................ ............... 28 1.4 . Ngôn ngữ lập trình Pyhon ................................ ................................ ........................... 29 1.4. 1. Giới thiệu về ngôn ngữ Python ................................ ................................ ............. 29 1.4.2. Ưu điểm của việc sử dụng ngôn ngữ Python ................................ ....................... 29 1.4.3. Giới thiệu về Pycharm ................................ ................................ .......................... 30 1.5. Hệ quản trị cơ sở dữ liệu PostgreSQL ................................ ................................ ........ 30 1.6. Mô hình REST API ................................ ................................ ................................ ..... 31 1.6.1. REST API là gì? ................................ ................................ ................................ ... 31 1.6.2. Các thành phần trong REST API ................................ ................................ ......... 31 1.6.3. Quy trình hoạt động của mô hình REST API trong dự án ................................ ... 32 1.6.4. Ưu nhược điểm của REST API ................................ ................................ ............ 32 CHƯƠNG II. PHÂN TÍCH T H IẾT KẾ HỆ THỐNG ................................ ........................... 34 2.1. Phân tích yêu cầu: ................................ ................................ ................................ ....... 34 2.1.1. Mô tả bài toán ................................ ................................ ................................ ....... 34 2.1.2. Phân tích hiện trạng ................................ ................................ .............................. 34 2.1.3. Phân tích yêu cầu bài toán ................................ ................................ .................... 34 2.1.4. Phân tích tính khả thi ................................ ................................ ............................ 34 2.1.5. Xác định các chức năng của hệ thống ................................ ................................ .. 34 2.2.1. Tác nhân hệ thống ................................ ................................ ................................ 35 2.2.2. Sơ đồ hệ thống ................................ ................................ ................................ ...... 35 8 2.2.3. Biểu đồ ca sử dụng ................................ ................................ ............................... 36 2.2.4. Yêu cầu hệ thống ................................ ................................ ................................ .. 36 2.2.5. Biểu đồ hoạt động ................................ ................................ ................................ . 42 2.2.6. Biểu đồ tuần tự ................................ ................................ ................................ ..... 46 2.3. Xây dựng cơ sở dữ liệu ................................ ................................ ............................... 49 CHƯƠNG III: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ ................................ .................. 53 3.1. Triển khai hệ thống ................................ ................................ ................................ ..... 53 3.1.1. M ôi trường triển khai ................................ ................................ ........................... 53 3.1.2. Cài đặt môi trường ................................ ................................ ................................ 53 3.1.3. Tập dữ liệu: ................................ ................................ ................................ ........... 53 3.1.4. Xây dựn g mạng CNN: ................................ ................................ .......................... 54 3.2. Kết quả ................................ ................................ ................................ ........................ 55 3.2.1. Xử lí ảnh nhận diện cảm xúc: ................................ ................................ ............... 55 3.2.2. Ứng dụng: ................................ ................................ ................................ ............. 56 3.3. Đánh giá ................................ ................................ ................................ ...................... 67 3.3.1. Xử lí ảnh nhận diện cảm xúc: ................................ ................................ ............... 67 3.3.2. Ứng dụng: ................................ ................................ ................................ ............. 67 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................ ................................ ............. 68 1. Kết quả đạt được: ................................ ................................ ................................ ........... 68 2. Hạn chế: ................................ ................................ ................................ .......................... 68 3. Hướng phát triển: ................................ ................................ ................................ ........... 68 TÀI LIỆU THAM KHẢO ................................ ................................ ................................ ..... 69 9 DANH SÁCH HÌNH ẢNH Chương I Hình 1. 1 . Cấu tạo nơ - ron nhân tạo ................................ ................................ ................................ .... 14 Hình 1. 2 . Đồ thị hàm Sigmoid ................................ ................................ ................................ .......... 15 Hình 1. 3 . Đồ thị hàm tanh ................................ ................................ ................................ ................. 16 Hình 1. 4 . Đồ thị hàm ReLU ................................ ................................ ................................ .............. 16 Hình 1. 5 . Mạng nơ - ron truyền thẳng nhiều lớp ................................ ................................ ................. 17 Hình 1. 6 . Mạng nơ - ron hồi quy ................................ ................................ ................................ ......... 18 Hình 1. 7 . Mạng nơ - ron lan truyền ngược MLP ................................ ................................ ................ 19 Hình 1. 8 . Mô hình mạng nơ - ron lan truyền ngược. ................................ ................................ .......... 20 Hình 1. 9 . Ảnh mẫu đen trắng ban đầu. ................................ ................................ .............................. 22 Hình 1. 10 . Lấy mẫu ảnh ban đầu. ................................ ................................ ................................ ..... 23 Hình 1. 11 . Đặt kernel vào ma trận ảnh. ................................ ................................ ............................ 24 Hình 1. 12 . Thực hiện tích chập. ................................ ................................ ................................ ........ 24 Hình 1. 13 . Áp dụng padding cho ma trận ảnh. ................................ ................................ ................. 25 Hình 1. 14 . Kết quả phép tích chập trên ảnh. ................................ ................................ ..................... 25 Hình 1. 15 . Kiến trúc cơ bản của hệ điều hành Android. ................................ ................................ ... 27 Hình 1. 16 . Giao diện màn hình của Android Studio. ................................ ................................ ........ 28 Hình 1. 17 . Luồng dữ liệu trong mô hình MVP. ................................ ................................ ................ 29 Hình 1. 18 . Sơ đồ REST API. ................................ ................................ ................................ ............ 31 Hình 1. 19 . Quy tr ì nh ho ạ t đ ộ ng c ủ a REST API. ................................ ................................ ............... 32 Chương II Hình 2. 1 . Sơ đồ hệ thống. ................................ ................................ ................................ .................. 35 Hình 2. 2 . Biểu đồ ca sử dụng của hệ thống. ................................ ................................ ...................... 36 Hình 2. 3 . Biểu đồ hoạt động – đăng nhập. ................................ ................................ ........................ 42 Hình 2. 4 . Biểu đồ hoạt động – đăng kí ................................ ................................ .............................. 43 Hình 2. 5 . Biểu đồ hoạt động – nhận diên cảm xúc ................................ ................................ ........... 44 Hình 2. 6 . Biểu đồ hoạt động – cập nhật thông tin cá nhân ................................ ............................... 45 Hình 2. 7 . Biểu đồ hoạt động – cập nhật mậ t khẩu ................................ ................................ ............ 45 Hình 2. 8 . Biểu đồ tuần tự - đăng nhập ................................ ................................ .............................. 46 Hình 2. 9 . Biểu đồ tuần tự - đăng kí ................................ ................................ ................................ ... 47 Hình 2. 10 . Biểu đồ tuần tự - nhận diện cảm xúc ................................ ................................ ............... 48 Hình 2. 11 . Biểu đồ tuần tự - cập nhật thông tin cá nhân ................................ ................................ ... 48 Hình 2. 12 . Biểu đồ tuần tự - cập nhật mật khẩu. ................................ ................................ ............... 49 Hình 2. 13 . Bảng dữ li ệu – Users ................................ ................................ ................................ ....... 50 Hình 2. 14 . Bảng dữ liệu – Moods ................................ ................................ ................................ ..... 50 Hình 2. 15 . Bảng dữ liệu – Foods ................................ ................................ ................................ ...... 50 Hình 2. 16 . Bản dữ liệu – Food_Mood ................................ ................................ .............................. 50 Chương III Hình 3. 1 . Một số ảnh dùng để huấn luyện. ................................ ................................ ....................... 54 Hình 3. 2 . Kết quả sau mỗi bước huấn luyện ................................ ................................ ..................... 55 Hình 3. 3 . Biểu đồ kết quả huấn luyện. ................................ ................................ .............................. 55 Hình 3. 4. Kết quả theo cảm xúc ................................ ................................ ................................ ........ 56 Hình 3. 5 . Màn hình ban đầu của ứng dụng. ................................ ................................ ...................... 57 Hình 3. 6 . Màn hình Đăng nhập ................................ ................................ ................................ ......... 58 Hình 3. 7 . Màn hình đăng kí ................................ ................................ ................................ ............... 59 Hình 3 . 8 . Màn hình Trang chủ ................................ ................................ ................................ .......... 60 Hình 3. 9 . Màn hình More ................................ ................................ ................................ .................. 61 10 Hình 3. 10 . màn hình Tìm kiếm ................................ ................................ ................................ ......... 62 Hình 3. 11 . Màn hình chọn mở thư viện ảnh hoặc máy ảnh. ................................ ............................. 63 Hình 3. 12 . Màn hình hiển thị ảnh sau chụp hoặc chọn từ thư viện. ................................ .................. 64 Hình 3. 13 . Kết quả dự đoán cảm xúc ................................ ................................ ................................ 65 Hình 3. 14 . Màn hình gợi ý thực phẩm ................................ ................................ .............................. 66 11 DANH SÁCH BẢNG Chương I Chương II Bảng 2. 1 .Chức năng đăng nhập. ................................ ................................ ................................ ........ 34 Bảng 2 . 2 . Chức năng đăng kí. ................................ ................................ ................................ ........... 34 Bảng 2. 3 . Chức năng nhận diện cảm xúc ................................ ................................ .......................... 35 Bảng 2. 4 . Chức năng quản lí thông tin cá nhân ................................ ................................ ................ 35 Bảng 2. 5 . Chức năng đăng nhập. ................................ ................................ ................................ ....... 37 Bảng 2. 6 . Chức năng đăng kí. ................................ ................................ ................................ ........... 37 Bảng 2. 7 . Chức năng chụp ảnh từ camera thiết bị ................................ ................................ ............ 38 Bảng 2. 8 . Chức năng chọn ảnh từ thư viện thiết bị ................................ ................................ ........... 38 Bảng 2. 9 . Chức năng nhận diện cảm xúc ................................ ................................ .......................... 39 Bảng 2. 10 . Chức năng lấy gợi ý thực phẩm theo cảm xúc ................................ ................................ 39 Bảng 2. 11 . Chức năng tìm kiếm gợi ý thực phẩm theo cảm xúc ................................ ...................... 40 Bảng 2. 12 . Chức năng xem thông tin cá nhân ................................ ................................ .................. 40 Bảng 2. 13 . Chức năng cập nhật thông tin cá nhân. ................................ ................................ ........... 41 Bảng 2. 14 . Chức năng cập nhật mật khẩu. ................................ ................................ ........................ 41 Bảng 2. 15 . Bảng dữ liệu – Users ................................ ................................ ................................ ....... 51 Bảng 2. 16 . Bảng dữ liệu – Mood ................................ ................................ ................................ ...... 51 Bảng 2. 17 . Bảng dữ liệu – Food ................................ ................................ ................................ ........ 52 Bả ng 2. 18 . Bảng dữ liệu - quan hệ Food_Mood ................................ ................................ ............... 52 Chương III Bảng 3. 1 . Kết quả đạt được ................................ ................................ ................................ ............... 67 12 DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT Từ viết tắt Diễn giải ANN Artificial nơ - ron network API Application Programming Interface BPN Back Propagation Network CNN Convolutional nơ - ron network MLP Multi Layer Perceptron MVP Model – View - Presenter REST Representation State Transfer Xây dựng ứng dụng di động nhận diện cảm xúc 13 SVTH: Lê Trọng Tài GVHD: TS. Phạm Minh Tuấn MỞ ĐẦU 1 . 1. Bối cảnh chọn đề tài Ngày nay, khi công nghệ ngày càng phát triển, mỗi người đều có cho mình chiếc điện thoại di động bên mình với những chức năng tối tân: truy cập mạng, xem phim, chụp ảnh... Từ đó, các mạng xã hội cũng ngày càng xuất hiện nhiều để đáp ứng nhu cầu chia sẻ cho ngư ời dùng, đặc biệt là chia sẻ các bức ảnh. Trong vài năm gần đây, trí tuệ nhân tạo nổi lên như một lĩnh vực tiềm năng và nó đã được chứng minh tính ứng dụng cao thông qua các lĩnh vực khác nhau, trong đó có ngành thị giác máy tính . Từ bối cảnh đó, em đã qu yết định nghiên cứu và phát triển một ứng dụng cho phép tận dụng các yếu tố kể trên để phục vụ cho người dùng. 1. 2. Mục đích của đề tài Xây dựng ứng dụng di động nhận diên cảm xúc thông qua các bức ảnh chứa khuôn mặt con người ứng dụng mạng nơ - ron tích chập nhằm mục đích: - Mỗi người dùng có thể tìm các thực phẩm phù hợp với cảm xúc để tiết chế, kích thích cảm xúc. 1. 3. Nội dung của đề tài Những công việc cần thực hiện để hoàn thành đề tài bao gồm: - T ì m hiểu về mạng nơ - ron nhân tạo (ANN) và mạng nơ - r on tích chập (CNN). - Ứng dụng mạng CNN để xây dựng ứng dụng di động nhận diện cảm xúc - Phân tích và thiết kế hệ thống thông tin. - Tìm hiểu công nghệ cần sử dụng và ngôn ngữ kết nối cơ sở dữ liệu. - Thiết kế cơ sở dữ liệu. - Xây dựng ứng dụng với các chức năng chính. 1. 4 . Phạm vi sử dụng của đề tài Việc tìm hiểu mạng CNN có thể áp dụng và nhiều mục đích khác nhau nhưng trong phạm vi đồ án này, em chỉ áp dụng để xây dựng ứng dụng di động nhận diện cảm xúc thông qua các bức ảnh . Ứng dụng nhận diện cảm xúc có thể áp dụng được cho mọi đối tượng người dùng, t ừ trẻ em, người lớn đến người già. 1. 5. Bố cục của đề tài Mở đầu Chương 1: Cơ sở lý thuyết Chương 2: Phân tích và thiết kế hệ thống Chương 3: Triển khai và đánh gi á kết quả K ết luận và hướng phát triển . Xây dựng ứng dụng di động nhận diện cảm xúc 14 SVTH: Lê Trọng Tài GVHD: TS. Phạm Minh Tuấn CHƯƠNG I. CƠ SỞ LÝ THUYẾT 1.1. Mạng nơ - ron nhân tạo (ANN) 1.1.1. Định nghĩa: Mạng nơ - ron nhân tạo, Artificial N eural Network (ANN) , là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ nơ - ron sinh học. Nó đ ượ c tạo nên từ một số l ư ợng lớn các phần tử ( nơ - ron ) kết nối với nhau thông qua các liên kết (trọng số liên kết) làm việc nh ư một thể thống nhất để giải quyết một vấn đề cụ thể nào đó. Một mạng nơ - ron nhân tạo đ ư ợc cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân loại dữ liệu, … ) thông qua một quá trình học từ tập các mẫu huấn luyện. Cấu trúc nơ - ron nhân tạo: Hình 1. 1 . Cấu tạo nơ - ron nhân tạo Các thành phần cơ bản của một nơ - ron nhân tạo bao gồm: - Tập các đầu vào: là các tín hiệu vào (input signials) của nơ - ron , các tín hiệu này thường được đưa vào dưới dạng một vector nhiều chiều - Tập các liên kết: mỗi liên kết được thể hiện bằng một trọng số liên kết (Synaptic weight). Trọng số liên kết giữa tín hiệu vào thứ j với nơ - ron k thường đ ược kí hiệu là W kj . Thông thường, các trọng số n ày được khởi tạo ngẫu nhiên ở thời điểm khởi tạo mảng và được cập nh ật liên tục trong quá trình học - Bộ tổng (Summing function): thường dùng để tính tổng tích các đầu vào và trọng số liên kết của nó. - Ngưỡng (còn gọi là độ l ệ ch – bias): thường được đưa vào như một thành phần của hàm truyền. - Hàm truyền (Transfer function): được dùng để giới hạn phạm vi đầu ra của mỗi nơ - ron . Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng. - Đầu ra: là tín hiệu đầu ra của một nơ - ron , với mỗi nơ - ron sẽ có tối đa là một đầu ra. Xét về mặt toán học, cấu trúc của mộ t nơ - ron được mô tả bằng cặp biểu thức sau:
Trang 1ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
Tel (84-236) 3736949 Website: itf.dut.edu.vn, E-mail: cntt@dut.udn.vn
ĐỒ ÁN TỐT NGHIỆP KỸ SƯ NGÀNH CÔNG NGHỆ THÔNG TIN
Trang 2KHOA CÔNG NGHỆ THÔNG TIN
NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP
1 Thông tin chung:
1 Họ và tên sinh viên: LÊ TRỌNG TÀI
2 Lớp: 15T2 Số thẻ SV: 102150130
3 Tên đề tài: Xây dựng ứng dụng di động nhận diện cảm xúc
4 Người hướng dẫn: Phạm Minh Tuấn Học hàm/ học vị: Tiến sĩ
II Nhận xét, đánh giá đồ án tốt nghiệp:
1 Về tính cấp thiết, tính mới, khả năng ứng dụng của đề tài: (điểm tối đa là 2đ)
1 Điểm đánh giá:…………/10 (lấy đến 1 số lẻ thập phân)
2 Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không được bảo vệ
Đà Nẵng, ngày tháng năm 2019
Người hướng dẫn
Trang 3ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
NHẬN XÉT PHẢN BIỆN ĐỒ ÁN TỐT NGHIỆP
I Thông tin chung:
1 Họ và tên sinh viên: LÊ TRỌNG TÀI
3 Tên đề tài: Xây dựng ứng dụng di động nhận diện cảm xúc
4 Người phản biện: ……….………… Học hàm/ học vị: ………
II Nhận xét, đánh giá đồ án tốt nghiệp: TT Các tiêu chí đánh giá Điểm tối đa Điểm đánh giá 1 Sinh viên có phương pháp nghiên cứu phù hợp, giải quyết đủ nhiệm vụ đồ án được giao 80 1a - Tính mới (nội dung chính của ĐATN có những phần mới so với các ĐATN trước đây) - Đề tài có giá trị khoa học, công nghệ; có thể ứng dụng thực tiễn 15 1b - Kỹ năng giải quyết vấn đề; hiểu, vận dụng được kiến thức cơ bản, cơ sở, chuyên ngành trong vấn đề nghiên cứu - Chất lượng nội dung ĐATN (thuyết minh, bản vẽ, chương trình, mô hình …) 50 1c - Có kỹ năng vận dụng thành thạo các phần mềm ứng dụng trong vấn đề nghiên cứu; - Có kỹ năng đọc, hiểu tài liệu bằng tiếng nước ngoài ứng dụng trong vấn đề nghiên cứu; - Có kỹ năng làm việc nhóm; 15 2 Kỹ năng viết: 20 2a - Bố cục hợp lý, lập luận rõ ràng, chặt chẽ, lời văn súc tích 15 2b - Thuyết minh đồ án không có lỗi chính tả, in ấn, định dạng 5 3 Tổng điểm đánh giá theo thang 100: Quy về thang 10 (lấy đến 1 số lẻ) - Các tồn tại, thiếu sót cần bổ sung, chỉnh sửa: ………
………
- Câu hỏi đề nghị sinh viên trả lời trong buổi bảo vệ: ………
………
………
- Đề nghị: ☐ Được bảo vệ đồ án ☐ Bổ sung để bảo vệ ☐ Không được bảo vệ
Đà Nẵng, ngày tháng năm 2019
Người phản biện
Trang 4TÓM TẮT
Tên đề tài: XÂY DỰNG ỨNG DỤNG DI ĐỘNG NHẬN DIỆN CẢM XÚC
Sinh viên thực hiện: Lê Trọng Tài
- Nhận diện cảm xúc thông qua các bức ảnh có chứa khuôn mặt con người
- Gợi ý các thực phẩm nên ăn/uống tuỳ theo tâm trạng
- Quản lý tài khoản
Trang 5ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HÔI CHỦ NGHĨA
VIỆT NAM
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: Lê Trọng Tài Số thẻ sinh viên: 102150130
Lớp: 15T2 Khoa: Công nghệ thông tin Ngành: Công nghệ thông tin
1 Tên đề tài đồ án: Xây dựng ứng dụng di động nhận diện cảm xúc
Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện
2 Các số liệu và dữ liệu ban đầu:
3 Nội dung các phần thuyết minh và tính toán:
4 Các bản vẽ, đồ thị (ghi rõ các loại và kích thước bản vẽ):
5 Họ tên người hướng dẫn: TS Phạm Minh Tuấn
6 Ngày giao nhiệm vụ đồ án: 06/09/2019
7 Ngày hoàn thành đồ án: 19/12/2019
Đà Nẵng, ngày tháng năm 2019
Trang 6LỜI NÓI ĐẦU
Trong suốt thời gian thực hiện và hoàn thành đồ án này, em đã nhận được sự giúp đỡ và hướng dẫn tận tình của các Thầy, các Cô và các bạn trong Khoa Công nghệ Thông tin Trường Đại học Bách khoa - Đại học Đà Nẵng Chúng em xin gửi lời cảm ơn chân thành và sâu sắc tới các Thầy Cô trong Khoa đã giảng dạy và truyền đạt những kiến thức cần thiết, những kinh nghiệm quý báu cho chúng em có thể thực hiện đồ án này
Trước tiên em xin chân thành cảm ơn Thầy Phạm Minh Tuấn tận tình hướng dẫn, chỉ bảo, động viên và hỗ trợ em trong suốt quá trình thực hiện đề tài này Trong thời gian làm đồ án cùng Thầy, em không những học hỏi được những kiến thức mà còn học hỏi được khả năng làm việc nghiêm túc, kỹ năng làm việc nhóm và có trách nhiệm với công việc của mình
Để có được kết quả như ngày hôm nay, em rất biết ơn gia đình và những người thân trong gia đình đã động viên, khích lệ, tạo mọi điều kiện thuận lợi nhất về vật chất lẫn tinh thần trong suốt quá trình học tập cũng như quá trình thực hiện đề tài tốt nghiệp này
Mặc dù đã có cố gắng hoàn thiện đồ án trong phạm vi và khả năng cho phép nhưng
không tránh khỏi những thiếu sót, rất mong nhận được sự cảm thông và góp ý của quý Thầy
Trang 7LỜI CAM ĐOAN
Em xin cam đoan:
1 Nội dung trong đồ án này là do em thực hiện dưới sự hướng dẫn trực tiếp của TS Phạm Minh Tuấn
2 Các tham khảo dùng trong báo cáo đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố
3 Nếu có những sao chép không hợp lệ, vi phạm, em xin chịu hoàn toàn trách nhiệm
Đà Nẵng, Ngày 19 tháng 12 năm 2019
Sinh viên thực hiện
Lê Trọng Tài
Trang 8Mục lục
TÓM TẮT 3
LỜI NÓI ĐẦU 5
LỜI CAM ĐOAN 6
MỤC LỤC 7
DANH SÁCH HÌNH ẢNH 9
DANH SÁCH BẢNG 11
DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT 12
MỞ ĐẦU 13
CHƯƠNG I CƠ SỞ LÝ THUYẾT 14
1.1 Mạng nơ-ron nhân tạo (ANN) 14
1.1.1 Định nghĩa: 14
1.1.2 Một số hàm truyền thông dụng: 15
1.1.3 Một số hình trạng của mạng nơ-ron nhân tạo: 17
1.1.4 Mạng nơ-ron lan truyền ngược: 18
1.2 Mạng nơ-ron tích chập (CNN) 22
1.2.1 Định nghĩ mạng nơ-ron tích chập 22
1.2.2 Convolution (tích chập) 22
1.2.3 Mạng nơ-ron tích chập 26
1.3 Ngôn ngữ và công cụ lập trình Android 26
1.3.1 Giới thiệu về Android 26
1.3.2 Kiến trúc cơ bản của hệ điều hành Android 26
1.3.3 Giới thiệu về Android Studio 27
1.3.4 Mô hình MVP trong Android 28
1.4 Ngôn ngữ lập trình Pyhon 29
1.4.1 Giới thiệu về ngôn ngữ Python 29
1.4.2 Ưu điểm của việc sử dụng ngôn ngữ Python 29
1.4.3 Giới thiệu về Pycharm 30
1.5 Hệ quản trị cơ sở dữ liệu PostgreSQL 30
1.6 Mô hình REST API 31
1.6.1 REST API là gì? 31
1.6.2 Các thành phần trong REST API 31
1.6.3 Quy trình hoạt động của mô hình REST API trong dự án 32
1.6.4 Ưu nhược điểm của REST API 32
CHƯƠNG II PHÂN TÍCH THIẾT KẾ HỆ THỐNG 34
2.1 Phân tích yêu cầu: 34
2.1.1 Mô tả bài toán 34
2.1.2 Phân tích hiện trạng 34
2.1.3 Phân tích yêu cầu bài toán 34
2.1.4 Phân tích tính khả thi 34
2.1.5 Xác định các chức năng của hệ thống 34
2.2.1 Tác nhân hệ thống 35
2.2.2 Sơ đồ hệ thống 35
Trang 92.2.3 Biểu đồ ca sử dụng 36
2.2.4 Yêu cầu hệ thống 36
2.2.5 Biểu đồ hoạt động 42
2.2.6 Biểu đồ tuần tự 46
2.3 Xây dựng cơ sở dữ liệu 49
CHƯƠNG III: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 53
3.1 Triển khai hệ thống 53
3.1.1 Môi trường triển khai 53
3.1.2 Cài đặt môi trường 53
3.1.3 Tập dữ liệu: 53
3.1.4 Xây dựng mạng CNN: 54
3.2 Kết quả 55
3.2.1 Xử lí ảnh nhận diện cảm xúc: 55
3.2.2 Ứng dụng: 56
3.3 Đánh giá 67
3.3.1 Xử lí ảnh nhận diện cảm xúc: 67
3.3.2 Ứng dụng: 67
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 68
1 Kết quả đạt được: 68
2 Hạn chế: 68
3 Hướng phát triển: 68
TÀI LIỆU THAM KHẢO 69
Trang 10Chương I
Hình 1 1 Cấu tạo nơ-ron nhân tạo 14
Hình 1 2 Đồ thị hàm Sigmoid 15
Hình 1 3 Đồ thị hàm tanh 16
Hình 1 4 Đồ thị hàm ReLU 16
Hình 1 5 Mạng nơ-ron truyền thẳng nhiều lớp 17
Hình 1 6 Mạng nơ-ron hồi quy 18
Hình 1 7 Mạng nơ-ron lan truyền ngược MLP 19
Hình 1 8 Mô hình mạng nơ-ron lan truyền ngược 20
Hình 1 9 Ảnh mẫu đen trắng ban đầu 22
Hình 1 10 Lấy mẫu ảnh ban đầu 23
Hình 1 11 Đặt kernel vào ma trận ảnh 24
Hình 1 12 Thực hiện tích chập 24
Hình 1 13 Áp dụng padding cho ma trận ảnh 25
Hình 1 14 Kết quả phép tích chập trên ảnh 25
Hình 1 15 Kiến trúc cơ bản của hệ điều hành Android 27
Hình 1 16 Giao diện màn hình của Android Studio 28
Hình 1 17 Luồng dữ liệu trong mô hình MVP 29
Hình 1 18 Sơ đồ REST API 31
Hình 1 19 Quy trình hoạt động của REST API 32
Chương II Hình 2 1 Sơ đồ hệ thống 35
Hình 2 2 Biểu đồ ca sử dụng của hệ thống 36
Hình 2 3 Biểu đồ hoạt động – đăng nhập 42
Hình 2 4 Biểu đồ hoạt động – đăng kí 43
Hình 2 5 Biểu đồ hoạt động – nhận diên cảm xúc 44
Hình 2 6 Biểu đồ hoạt động – cập nhật thông tin cá nhân 45
Hình 2 7 Biểu đồ hoạt động – cập nhật mật khẩu 45
Hình 2 8 Biểu đồ tuần tự - đăng nhập 46
Hình 2 9 Biểu đồ tuần tự - đăng kí 47
Hình 2 10 Biểu đồ tuần tự - nhận diện cảm xúc 48
Hình 2 11 Biểu đồ tuần tự - cập nhật thông tin cá nhân 48
Hình 2 12 Biểu đồ tuần tự - cập nhật mật khẩu 49
Hình 2 13 Bảng dữ liệu – Users 50
Hình 2 14 Bảng dữ liệu – Moods 50
Hình 2 15 Bảng dữ liệu – Foods 50
Hình 2 16 Bản dữ liệu – Food_Mood 50
Chương III Hình 3 1 Một số ảnh dùng để huấn luyện 54
Hình 3 2 Kết quả sau mỗi bước huấn luyện 55
Hình 3 3 Biểu đồ kết quả huấn luyện 55
Hình 3 4 Kết quả theo cảm xúc 56
Hình 3 5 Màn hình ban đầu của ứng dụng 57
Hình 3 6 Màn hình Đăng nhập 58
Hình 3 7 Màn hình đăng kí 59
Hình 3 8 Màn hình Trang chủ 60
Hình 3 9 Màn hình More 61
Trang 11Hình 3 10 màn hình Tìm kiếm 62
Hình 3 11 Màn hình chọn mở thư viện ảnh hoặc máy ảnh 63
Hình 3 12 Màn hình hiển thị ảnh sau chụp hoặc chọn từ thư viện 64
Hình 3 13 Kết quả dự đoán cảm xúc 65
Hình 3 14 Màn hình gợi ý thực phẩm 66
Trang 12Chương I
Chương II
Bảng 2 1.Chức năng đăng nhập 34
Bảng 2 2 Chức năng đăng kí 34
Bảng 2 3 Chức năng nhận diện cảm xúc 35
Bảng 2 4 Chức năng quản lí thông tin cá nhân 35
Bảng 2 5 Chức năng đăng nhập 37
Bảng 2 6 Chức năng đăng kí 37
Bảng 2 7 Chức năng chụp ảnh từ camera thiết bị 38
Bảng 2 8 Chức năng chọn ảnh từ thư viện thiết bị 38
Bảng 2 9 Chức năng nhận diện cảm xúc 39
Bảng 2 10 Chức năng lấy gợi ý thực phẩm theo cảm xúc 39
Bảng 2 11 Chức năng tìm kiếm gợi ý thực phẩm theo cảm xúc 40
Bảng 2 12 Chức năng xem thông tin cá nhân 40
Bảng 2 13 Chức năng cập nhật thông tin cá nhân 41
Bảng 2 14 Chức năng cập nhật mật khẩu 41
Bảng 2 15 Bảng dữ liệu – Users 51
Bảng 2 16 Bảng dữ liệu – Mood 51
Bảng 2 17 Bảng dữ liệu – Food 52
Bảng 2 18 Bảng dữ liệu - quan hệ Food_Mood 52
Chương III Bảng 3 1 Kết quả đạt được 67
Trang 13DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT
Từ viết tắt Diễn giải
ANN Artificial nơ-ron network
API Application Programming Interface
BPN Back Propagation Network
CNN Convolutional nơ-ron network
MLP Multi Layer Perceptron
MVP Model – View - Presenter
REST Representation State Transfer
Trang 14MỞ ĐẦU
1.1 Bối cảnh chọn đề tài
Ngày nay, khi công nghệ ngày càng phát triển, mỗi người đều có cho mình chiếc điện thoại
di động bên mình với những chức năng tối tân: truy cập mạng, xem phim, chụp ảnh Từ đó, các mạng xã hội cũng ngày càng xuất hiện nhiều để đáp ứng nhu cầu chia sẻ cho người dùng, đặc biệt là chia sẻ các bức ảnh
Trong vài năm gần đây, trí tuệ nhân tạo nổi lên như một lĩnh vực tiềm năng và nó đã được chứng minh tính ứng dụng cao thông qua các lĩnh vực khác nhau, trong đó có ngành thị giác máy tính
Từ bối cảnh đó, em đã quyết định nghiên cứu và phát triển một ứng dụng cho phép tận dụng các yếu tố kể trên để phục vụ cho người dùng
1.3 Nội dung của đề tài
Những công việc cần thực hiện để hoàn thành đề tài bao gồm:
- Tìm hiểu về mạng nơ-ron nhân tạo (ANN) và mạng nơ-ron tích chập (CNN)
- Ứng dụng mạng CNN để xây dựng ứng dụng di động nhận diện cảm xúc
- Phân tích và thiết kế hệ thống thông tin
- Tìm hiểu công nghệ cần sử dụng và ngôn ngữ kết nối cơ sở dữ liệu
- Thiết kế cơ sở dữ liệu
- Xây dựng ứng dụng với các chức năng chính
1.4 Phạm vi sử dụng của đề tài
Việc tìm hiểu mạng CNN có thể áp dụng và nhiều mục đích khác nhau nhưng trong phạm
vi đồ án này, em chỉ áp dụng để xây dựng ứng dụng di động nhận diện cảm xúc thông qua các bức ảnh
Ứng dụng nhận diện cảm xúc có thể áp dụng được cho mọi đối tượng người dùng, từ trẻ
em, người lớn đến người già
1.5 Bố cục của đề tài
Mở đầu
Chương 1: Cơ sở lý thuyết
Chương 2: Phân tích và thiết kế hệ thống
Chương 3: Triển khai và đánh giá kết quả
Kết luận và hướng phát triển
Trang 15Xây dựng ứng dụng di động nhận diện cảm xúc
CHƯƠNG I CƠ SỞ LÝ THUYẾT
1.1 Mạng nơ-ron nhân tạo (ANN)
1.1.1 Định nghĩa:
Mạng nơ-ron nhân tạo, Artificial Neural Network (ANN), là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ nơ-ron sinh học Nó được tạo nên từ một số lượng lớn các phần tử (nơ-ron) kết nối với nhau thông qua các liên kết (trọng số liên kết) làm việc như một thể thống nhất để giải quyết một vấn đề cụ thể nào đó Một mạng nơ-ron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân loại dữ liệu, …) thông qua một quá trình học từ tập các mẫu huấn luyện
Cấu trúc nơ-ron nhân tạo:
Hình 1 1 Cấu tạo nơ-ron nhân tạo Các thành phần cơ bản của một nơ-ron nhân tạo bao gồm:
- Tập các đầu vào: là các tín hiệu vào (input signials) của nơ-ron, các tín hiệu này thường được đưa vào dưới dạng một vector nhiều chiều
- Tập các liên kết: mỗi liên kết được thể hiện bằng một trọng số liên kết (Synaptic weight) Trọng số liên kết giữa tín hiệu vào thứ j với nơ-ron k thường được kí hiệu là Wkj Thông thường, các trọng số này được khởi tạo ngẫu nhiên ở thời điểm khởi tạo mảng và được cập nhật liên tục trong quá trình học
- Bộ tổng (Summing function): thường dùng để tính tổng tích các đầu vào và trọng số liên kết của nó
- Ngưỡng (còn gọi là độ lệch – bias): thường được đưa vào như một thành phần của hàm truyền
- Hàm truyền (Transfer function): được dùng để giới hạn phạm vi đầu ra của mỗi nơ-ron
Nó nhận đầu vào là kết quả của hàm tổng và ngưỡng
- Đầu ra: là tín hiệu đầu ra của một nơ-ron, với mỗi nơ-ron sẽ có tối đa là một đầu ra Xét về mặt toán học, cấu trúc của một nơ-ron được mô tả bằng cặp biểu thức sau:
𝑢𝑘 = ∑ 𝑤𝑘𝑗𝑥𝑗
𝑝 𝑗=1
[1]
Và 𝑦𝑘 = 𝑓 (𝑢𝑘 − 𝑏𝑘) [1]
Trong đó: x1, x2, …, xp: là các tín hiệu vào; (wk1, wk2, …, wkp) là các trọng số liên kết của nơ-ron thứ k; uk là hàm tổng; bk là một ngưỡng; f là hàm truyền và yk là tín hiệu đầu ra của nơ-ron
Trang 16Như vậy nơ-ron nhân tạo nhận các tín hiệu đầu vào, xử lý (nhân các tín hiệu này với trọng
số liên kết, tính tổng các tích thu được rồi gửi kết quả tới hàm truyền), và cho một tín hiệu đầu ra (là kết quả của hàm truyền)
1.1.2 Một số hàm truyền thông dụng:
- Hàm Sigmoid: 𝑓(𝑥) = 1
1+ 𝑒−𝑥
Nếu như đầu vào lớn, hàm số sẽ cho ra giá trị gần với 1 Với đầu vào nhỏ (rất âm), hàm số
sẽ cho ra gia trị gần với 0 Vì vậy, hàm này được ứng dụng cho các chương trình có đầu ra mong muốn rơi vào khoảng [0,1]
Trang 181.1.3 Một số hình trạng của mạng nơ-ron nhân tạo:
Hình trạng của mạng nơ-ron được định nghĩ bởi: số lớp (layers), số đơn vị trên mỗi lớp và
sự liên kết giữa các lớp như thế nào.Các mạng về tổng thể được chia làm hai loại dựa trên cách thức liên kết các đơn vị:
- Mạng truyền thẳng (Feed-forward neural network): Dòng dữ liệu từ đầu vào đến đầu ra chỉ được truyền thẳng Việc xử lí dữ liệu có thể mở rộng ra nhiều lớp, nhưng không có các liên kết phản hồi Nghĩa là, các liên kết mở rộng từ các đơn vị đầu ra tới các đơn vị đầu vào trong cùng một lớp hay khác lớp trước đó là không cho phép
Hình 1 5 Mạng nơ-ron truyền thẳng nhiều lớp
- Mạng hồi quy (Recurrent nơ-ron network): Có chứa các liên kết ngược khác với mạng truyền thẳng, các thuộc tính động của mạng mới quan trọng Trong một số trường hợp, các giá trị kích hoạt của các đơn vị trải qua quá trình nới lỏng (tăng giảm số đơn vị và thay đổi các liên kết) cho đến khi mạng đạt đến một trạng thái ổn định và các giá trị kích hoạt không thay đổi nữa Trong các ứng dụng khác mà cách chạy động tạo thành đầu ra của mạng thì sự thay đổi các giá trị kích hoạt là đáng quan tâm
Trang 19Xây dựng ứng dụng di động nhận diện cảm xúc
Hình 1 6 Mạng nơ-ron hồi quy
1.1.4 Mạng nơ-ron lan truyền ngược:
a) Kiến trúc mạng MLP
Kiến trúc của một mạng MLP tổng quát có thể mô tả như sau:
- Đầu vào là các vector (x1, x2, …, xp) trong không gian p chiều, đầu ra là các vector (y1, y2, …, yq) trong không gian q chiều Đối với các bài toán phân loại, p chính là kích thước của mẫu đầu vào, q chính là số lớp cần phân loại
- Mỗi nơ-ron thuộc tầng sau liên kết với tất cả các nơ-ron thuộc tầng liền trước nó
- Đầu ra của nơ-ron tầng trước là đầu vào của nơ-ron thuộc tầng liền sau nó
Hoạt động của mạng MLP như sau: tại tầng đầu vào các nơ-ron nhận tín hiệu vào xử lý (tính tổng trọng số, gửi tới hàm truyền) rồi cho ra kết quả (là kết quả của hàm truyền); kết quả này sẽ được truyền tới các nơ-ron thuộc tầng ẩn thứ nhất; các nơ-ron tại đây tiếp nhận như là tín hiệu đầu vào, xử lý và gửi kết quả đến tầng ẩn thứ 2 …; quá trình tiếp tục cho đến khi các nơ-ron thuộc tầng ra cho kết quả
Trang 20Hình 1 7 Mạng nơ-ron lan truyền ngược MLP
b) Huấn luyện mạng MLP
Huấn luyện mạng MLP: là quá trình thay đổi hành vi của các vật theo một cách nào đó làm cho chúng có thể thực hiện tốt hơn trong tương lai Về cơ bản có hai dạng thuật toán để luyện mạng:
- Học có giám sát: Là quá trình học có sự tham gia giám sát của một tác nhân nào đó Cũng giống như việc dạy một em nhỏ các chữ cái Ta đưa ra một chữ “a” và bảo rằng
đó là chữ “a” Việc này được thực hiện trên tất cả mẫu chữ cái Sau đó, khi kiểm tra, ta
sẽ đưa ra một chữ cái bất kì Như vậy, việc học có giám sát cho biết trước số lớp cần phân loại, nhiệm vụ của thuật toán là xác định cách thức phân lớp
- Học không giám sát: Là việc học không có bất kì sự giám sát nào, số lớp phân loại chưa biết trước, việc phân lớp sẽ tuỳ theo tiêu chuẩn đánh giá độ tương tự
c) Mạng lan truyền ngược (BPN)
Mạng có 3 lớp:
- Lớp vào (Input Layer) – số node vào là số thuộc tính của đối tượng cần phân lớp
- Lớp ra (Output Layer) – Số node ra là số đặc điểm cần hướng tới của đối tượng (giá trị
ra cần hướng đến – học có giám sát)
- Lớp ẩn (Hidden Layer) – Số node ẩn thường là không xác định trước, nó thường là do kinh nghiệm của người thiết kế mạng, nếu số node ẩn quá nhiều mạng sẽ cồng kềnh, quá trình học sẽ chậm, còn nếu số node ẩn quá ít làm mạng học không chính xác Các nơ-ron lớp trong sẽ kết nối đầy đủ với các nơ-ron lớp ngoài, trên mỗi đường liên kết giữa 2 nơ-ron ở hai lớp khác nhau sẽ có một trọng số mạng (weight) Các trọng số này đóng vai trò là các ẩn số mà mạng cần phải tìm ra (học), sao cho với các giá trị đầu vào, thông qua mạng, ta nhận được các giá trị xấp xỉ với đầu ra mong muốn tương ứng của mẫu học
Trang 21Xây dựng ứng dụng di động nhận diện cảm xúc
Hình 1 8 Mô hình mạng nơ-ron lan truyền ngược
Quá trình tìm các giá trị ẩn số diễn ra như sau:
Ta xử dụng một số kí hiệu:
• xi : giá trị đầu vào của nơ-ron thứ i
• yk : giá trị đầu ra của nơ-ron thứ k
• Vij : vector trọng số trên đường kết nối từ nơ-ron node vào thứ i đến nơ-ron node
• f : Hàm truyền Ở đây sử dụng mà Sigmoid để giới hạn đầu ra trong khoảng [0,1]
• IIi , OIi : Input, Output của node vào thứ i
• IHi , OHi : Input, Output của node ẩn thứ i
• IOi , OOi : Input, Output của node ra thứ i
Thuật toán lan truyền ngược được mô tả như sau:
Trang 22Thuật toán:
Bước 1: khởi tạo ngẫu nhiên các trọng số Vij , Wjk
Vij = Random(-1,1), Wjk = Random(-1,1) Bước 2: Lan truyền tiến tính toán đầu ra thực tế yk
• Tại node vào thứ i (Input):
Như vậy giá trị đầu ra thực tế của mạng với bộ trọng số ngẫu nhiên ban đầu là:
yk = OOk Thực tế ta có thể nhận thấy đầu ra mong muốn dk và đầu ra thực tế yk là luôn khác nhau, chúng ta cần phải tính toán độ sai khác này và có phương pháp điều chỉnh các trọng số mạng qua từng bước học sao cho qua mỗi lần học sự sai khác này giảm xuống, quá trình học sẽ dừng khi sự sai khác này đạt đến 1 ngưỡng giới hạn phù hợp nào đó
Bước 3: Đánh giá lỗi học – lỗi trung bình bình phương (MSE: meansquare error):
𝑬 = 𝟏
𝑳 ∗ 𝒔𝒒𝒓𝒕((𝐝𝐤 − 𝒚𝒌)𝟐) Nếu E ≤ ԑ thì dừng học
Bước 4: Lan truyền ngược điều chỉnh trọng số:
• Với mỗi nút q thuộc tầng ra, tính đạo hàm ngược sai số thành phần δq theo công thức:
d) Vấn đề quá khớp (Overfit)
Khái niệm quá khớp: Vấn đề quá khớp xảy ra khi mạng được luyện quá khớp (quá sát) với dữ liệu huấn luyện (kể cả nhiễu), nên nó sẽ trả lời chính xác những gì đã được học, còn những gì không được học thì nó không quan tâm Như vậy mạng sẽ không có được khả năng tổng quát hóa Vấn đề quá khớp xảy ra vì mạng có năng lực quá lớn Có 3 cách để hạn chế bớt năng lực của mạng:
• Hạn chế số nút ẩn
Trang 23Xây dựng ứng dụng di động nhận diện cảm xúc
• Ngăn không cho mạng sử dụng các trọng số lớn
• Giới hạn số bước luyện
và cả không gian ba chiều (xử lí video, …) Trọng phạm vi đồ án này, em chỉ đề cập đến việc
áp dụng tích chập trong không gian hai chiều để trích xuất các đặc tính của một bức ảnh
Để dễ hình dung, ta có thể xem tích chập như một cửa sổ trượt (sliding windown) áp đặt lên một ma trân Thông thường, ta coi một bức ảnh là một ma trận có các phần tử nằm trong khoảng [0, 255], ma trận có kích thước là: (chiều cao ảnh) x (chiều rộng ảnh) x (số chiều của ảnh) Ta xem xét một ví dụ về một bức ảnh một chiều (ảnh đen trắng – grayscale image):
Hình 1 9 Ảnh mẫu đen trắng ban đầu
Trang 24Ta lấy mẫu ma trận 5x5 ở góc trái trên cùng của bức ảnh, thu được ma trận và hình ảnh tương ứng:
Hình 1 10 Lấy mẫu ảnh ban đầu
Mỗi phép tích chập có một sliding windown (hay còn gọi là kernel, filter, feature detector), sliding windown có thể là bất kì ma trận nào có chiều cao và chiều rộng nhỏ hơn ma trận của ảnh ban đầu Ở đây, ta sử dụng kernel có dạng:
Phép tích chập được thực hiện như sau:
- Đặt phần tử đầu tiên bên trái trên cùng của kernel tương ứng với phần tử đầu tiên bên trái trên cùng của ma trận ảnh (ma trận con)
Trang 25Xây dựng ứng dụng di động nhận diện cảm xúc
Hình 1 11 Đặt kernel vào ma trận ảnh
- Nhân mỗi phần tử của kernel với các phần tử tương ứng của ma trận ảnh
- Tổng các kết quả vừa nhân, đặt kết quả nhận được vào vị trí trung tâm của ma trận ảnh (ma trận con)
Hình 1 12 Thực hiện tích chập
- Thực hiện tương tự theo thứ tự từ trái sang phải, từ trên xuống dưới trên ma trận ảnh
- Ta nhận thấy nếu làm theo các bước trên sẽ làm mất mát các phần tử ở phần viền ma trận ảnh, trong trường hợp này, ta có thể áp dụng padding cho ma trận ảnh như hình sau:
Trang 26Hình 1 13 Áp dụng padding cho ma trận ảnh
Sau khi tích chập, ta thu được hình ảnh:
Hình 1 14 Kết quả phép tích chập trên ảnh
Trang 27Xây dựng ứng dụng di động nhận diện cảm xúc
1.2.3 Mạng nơ-ron tích chập
Ta đã tìm hiểu thế nào là convolution, vậy thế nào là mạng nơ-ron tích chập (CNN)? CNN đơn gian là một vài layer của convolution kết hợp với các hàm kích hoạt phi tuyến tính (nonlinear activation function) để tạo ra thông tin cho các layer tiếp theo
Trong mô hình mạng nơ-ron truyền thẳng đã được trình bày ở trên, các layer được kết nối với nhau thông qua các trọng số Trong CNN, các nơ-ron được kết nối với nhau thông qua convolution, layer tiếp theo là kết quả convolution từ layer trước đó, nghĩa là mỗi layer ở nơ-ron ở lớp tiếp theo sinh ra từ kernel áp đặt lên một vùng ảnh cục bộ của nơ-ron ở layer trước
đó
Ngoài ra một số layer khác như pooling sẽ được thêm vào để chắt lọc thông tin
1.3 Ngôn ngữ và công cụ lập trình Android
1.3.1 Giới thiệu về Android
Android là hệ điều hành di động phổ biến nhất hiện tại, cũng như phát triển nhanh nhất
Do vậy tiềm năng với nó rất lớn, mặc dù song hành cũng nó còn có các hệ điều hành khác như IOS nhưng ở đây em chỉ muốn đề cập tới Android mà thôi
Lịch sử của Android ra đời vào vào năm 2005, là một phần của chiến lược không gian mobile Nó là hệ điều hành nhân Linux và sau đó được 26at ừ mua lại và họ đã đưa Android trở thành một hệ điều hành mã nguồn mở Điều này có nghĩa là bạn có thể download mã nguồn Android và phục vụ cho những mục đích riêng của mình Hiện tại thì Android xuất hiện hầu như trong các sản phẩm của các nhà sản xuất lớn Samsung, Sony, Htc…từ điện thoại thông minh-smart phone cho tới máy tính bảng, ti vi…Và có thể nói đây là một trong những nguyên nhân để nó phát triển mạnh tới vậy cũng là tiềm năng lớn cho các lập trình viên với
hệ điều hành này
1.3.2 Kiến trúc cơ bản của hệ điều hành Android
Về kiến trúc của hệ điều hành Android, chúng ta có thể xem qua sơ đồ sau:
Trang 28Hình 1 15 Kiến trúc cơ bản của hệ điều hành Android
- Tầng Applications: Là tầng chứa các ứng dụng Danh bạ, Gọi điện, Trình duyệt, Nghe nhạc… các ứng dụng này thường mua máy về chúng ta đã có sẵn rồi
- Tầng Framework: Là tầng chứa các API để làm việc với hệ điều hành như lấy thông
tin danh bạ, quản lý các Activity, quản lý địa điểm, quản lý các View
- Tầng Libraries: Chứa các thư viện, API gần như là cốt lõi của Android, bao gồm bộ quản lý bề mặt cảm ứng (Surface Manager), OpenGL (phục vụ cho việc dựng đồ họa phức tạp) …
- Tầng Android Runtime: Chứa các thư viện lõi của Android và máy ảo Dalvik Virtual
Machine (từ Android 4 trở lên chúng ta có máy ảo ART)
- Tầng Kernel: Là nhân lõi của hệ điều hành, chứa các tập lệnh, driver giao tiếp giữa
phần cứng và phần mềm của Android
Trong quá trình làm việc, chúng ta sẽ gần như chỉ làm việc với tầng xanh lam (Applications và Application Framework) và xanh lá (Libraries) Chương trình Android được viết bằng ngôn ngữ Kotlin và được máy ảo trong mỗi thiết bị Android biên dịch ra mã máy
1.3.3 Giới thiệu về Android Studio
Tháng 5 năm 2013, Google công bố Android Studio, một môi trường phát triển ứng dụng
tích hợp (IDE) dành riêng cho Android, mã nguồn mở, dựa trên IDE Java IntelliJ của JetBrains (đối thủ với Eclipse và Netbeans, vốn khá quen thuộc với dân lập trình
Java)
Android Studio chạy trên Windows, Mac và Linux, nhằm thay thế cho Eclipse Android Development Tool (ADT) vốn được sử dụng làm IDE chính trong các năm trước đó.
Trang 29Xây dựng ứng dụng di động nhận diện cảm xúc
Một số tính năng nổi bật:
- Bộ công cụ build ứng dụng dựa trên Gradle (thay vì Maven)
- Chức năng dò và sửa lỗi nhanh, hướng Android
- Công cụ chỉnh sửa màn hình dạng kéo thả tiện lợi
- Các wizard tích hợp nhằm giúp lập trình viên tạo ứng dụng từ mẫu có sẵn
- Tích hợp Google Cloud Platform, dễ dàng tích hợp với Google Cloud Messaging và App Engine của Google
Giao diện màn hình đầu của Android Studio:
Hình 1 16 Giao diện màn hình của Android Studio
1.3.4 Mô hình MVP trong Android
MVP là một mô hình kiến trúc hướng giao diện người dùng, được thiết kế để tạo thuận lợi cho việc kiểm thử đơn vị (unit testing) và tính tách biệt giữa tầng dữ liệu và tầng hiển thị dữ liệu trong mô hình MVC
Mô hình MVP cho phép tách tầng trình diễn (Presenter) ra khỏi tầng dữ liệu (Model), vì vậy tương tác với giao diện được tách biệt với cách chúng ta biểu diễn nó trên màn hình (View), hay nói cách khác, tất cả logic khi người tương tác được tách ra và đưa vào tầng trình diễn Thiết kế lý tưởng nhất là với cùng một logic được áp dụng cho nhiều View khác nhau và hoán đổi được cho nhau
Trong đó:
- Model là một interface xác định cách mà dữ liệu được hiển thị trong giao diện người
- View là một giao diện người thụ động hiển thị dữ liệu (Model) và tiếp nhận tương tác người và truyền tới để Presenter xử lý tương tác
- Presenter khi tương tác với View, Presenter tiếp nhận tương tác người và update Model Khi Model được update hay có thay đổi, Presenter lấy dữ liệu từ Model, định dạng và đưa tới View để hiển thị
Trang 30Hình 1 17 Luồng dữ liệu trong mô hình MVP.
Điểm khác biệt dễ thấy nhất ở đây khi so sánh mô hình MVP với mô hình MVC chính là vị trí cũng như chức năng của tầng Presenter và View so với tầng Controller
Trong mô hình MVP, tầng View là tầng duy nhất tiếp nhận tương tác người thay vì cả 2 tầng View và tầng Controller trong mô hình MVC Logic xử lý tương tác cũng như logic xử
lý dữ liệu hiển thị được tách ra trong tầng Presenter thay vì được gộp chung với tiếp nhận tương tác trong Controller
Trong Android, có một vấn đề phát sinh từ thực tế là các cơ chế xử lý tương tác trong Android được kết hợp chặt chẽ giữa giao diện người và xử lý, truy cập dữ liệu Việc kết hợp này có thể giúp giảm thiểu lượng code trong ứng dụng cũng như gộp các xử lý, logic trong ứng dụng vào cùng một nơi Nhưng đối với một ứng dụng liên tục phát triển, hay một ứng dụng lớn, việc này khiến cho lượng code trên mỗi logic trở nên rất lớn, các logic xen lẫn, chồng chéo lên nhau, rất khó cho việc đọc hiểu, bảo trì cũng như mở rộng
Phân tầng, phân lớp ứng dụng có thể giảm đi hiệu năng do ứng dụng cần nhiều tài nguyên, nhưng tính khả chuyển của ứng dụng cũng gấp nhiều lần., không những thế còn mở rộng khả năng cho phép kiểm thử từng phần của ứng dụng trở nên dễ dàng hơn Chính vì thế cân nhắc giữa hiệu năng và tính dễ dàng mở rộng, bảo trì là hết sức quan trọng
Trong Android, kiểm thử là một vấn đề khó vì mối liên kết chặt chẽ giữa giao diện, logic
và dữ liệu MVP tách biệt giao diện khỏi dữ liệu, chia ứng dụng ra thành ít nhất ba lớp khác nhau, từ đó có thể kiểm thử một các độc lập Với MVP ta có thể kiểm thử đo đạc một cách tối
đa các logic của ứng dụng
1.4 Ngôn ngữ lập trình Pyhon
1.4.1 Giới thiệu về ngôn ngữ Python
Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, được Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python được thiết kế với ưu điểm mạnh
là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ, thuận tiện cho người mới học lập trình Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu
1.4.2 Ưu điểm của việc sử dụng ngôn ngữ Python
Đơn giản: Python vừa dễ đọc vừa đơn giản Nó cũng dễ dàng để thiết lập; bạn không cần phải xử lý bất kỳ vấn đề đường dẫn nào như Java hoặc các vấn đề về trình biên dịch như C ++ Chỉ cần cài đặt Python và bạn đã hoàn tất Trong quá trình cài đặt, nó cũng sẽ yêu cầu bạn Python vào PATH, có nghĩa là bạn có thể chạy Python từ bất cứ đâu trên máy của mình
Trang 31Xây dựng ứng dụng di động nhận diện cảm xúc
Cộng đồng lớn: Nhờ Google, bạn có thể tìm thấy giải pháp cho mọi vấn đề liên quan đến Python trong vài phút Các cộng đồng như StackOverflow cũng mang nhiều chuyên gia Python đến với nhau để giúp đỡ những người mới
Thư viện và Framework: Python có nhiều thư viện cho các nhu cầu khác nhau Django và Flask là hai trong số phổ biến nhất để phát triển web và NumPy và SciPy rất phổ biến cho khoa học dữ liệu Trên thực tế, Python có một trong những bộ sưu tập tốt nhất về thư viện khoa học
dữ liệu và học máy, bao gồm TensorFlow, Scikit-Learn, Keras, Pandas và nhiều hơn nữa.Việc làm và sự phát triển: Python đang phát triển rất nhanh và rất có ý nghĩa để học một ngôn ngữ lập trình đang phát triển nếu bạn chỉ mới bắt đầu sự nghiệp lập trình của mình Nó không chỉ giúp bạn có được một công việc nhanh chóng mà còn thúc đẩy sự phát triển nghề nghiệp của bạn Vậy nên đối với người mới bắt đầu, đây sẽ là lý do quan trọng nhất để học Python
1.4.3 Giới thiệu về Pycharm
PyCharm là một môi trường phát triển tích hợp (IDE) được sử dụng trong lập trình máy tính, đặc biệt dành cho ngôn ngữ Python Nó được phát triển bởi công ty JetBrains của Séc
Nó cung cấp trình phân tích mã, gỡ lỗi đồ họa, trình kiểm tra đơn vị tích hợp, tích hợp với các
hệ thống kiểm soát phiên bản (VCSes) và hỗ trợ phát triển web với Django cũng như Khoa học dữ liệu với Anaconda
PyCharm là đa nền tảng, với các phiên bản Windows, macOS và Linux Phiên bản Community được phát hành theo Giấy phép Apache, và cũng có Phiên bản Professional với các tính năng bổ sung – được phát hành theo giấy phép độc quyền
Một số ưu điểm của Pycharm:
- Hỗ trợ và phân tích mã hóa, với việc hoàn thành mã, tô sáng cú pháp và lỗi, tích hợp
kẻ nói dối và sửa lỗi nhanh
- Hỗ trợ nhiều web framework: Django, web2py và Flask
- Tích hợp trình gỡ lỗi
- Tích hợp trình quản lí phiên bản
1.5 Hệ quản trị cơ sở dữ liệu PostgreSQL
PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ-đối tượng (object-relational database management system) có mục đích chung, hệ thống cơ sở dữ liệu mã nguồn mở tiên tiến nhất hiện nay
PostgreSQL được phát triển dựa trên POSTGRES 4.2 tại phòng khoa học máy tính Berkeley, Đại học California
PostgreSQL được thiết kế để chạy trên các nền tảng tương tự UNIX Tuy nhiên, PostgreSQL sau đó cũng được điều chỉnh linh động để có thể chạy được trên nhiều nqưeền tảng khác nhau như Mac OS X, Solaris và Windows
PostgreSQL là một phần mềm mã nguồn mở miễn phí Mã nguồn của phần mềm khả dụng theo license của PostgreSQL, một license nguồn mở tự do Theo đó, bạn sẽ được tự do sử dụng, sửa đổi và phân phối PostgreSQL dưới mọi hình thức
PostgreSQL không yêu cầu quá nhiều công tác bảo trì bởi có tính ổn định cao Do đó, nếu bạn phát triển các ứng dụng dựa trên PostgreSQL, chi phí sở hữu sẽ thấp hơn so với các hệ thống quản trị dữ liệu khác
Trang 321.6 Mô hình REST API
1.6.1 REST API là gì?
REST được đưa vào năm 2000, trong luận văn tiến sỹ của Roy Thomas Fielding Nó là một dạng chuyển đổi cấu trúc dữ liệu, là một phong cách kiến trúc cho việc thiết kế các ứng dụng có kết nối Nó sử dụng HTTP đơn giản để tạo giao tiếp trên các máy Vì vậy, thay vì
sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE, PUT, … đến một URL để xử lý dữ liệu
API là giao diện lập trình ứng dụng giúp tạo ra các phương thức kết nối với các thư viện
và ứng dụng khác nhau
REST API là một ứng dụng chuyển đổi cấu trúc dữ liệu có các phương thức để kết nối với các thư viện và ứng dụng khác REST API không được xem như một công nghệ, nó là một giải pháp để tạo ra các ứng dụng web service thay thế cho các kiểu khác như SOAP, SWDL…
1.6.2 Các thành phần trong REST API
Hình 1 18 Sơ đồ REST API
Có 4 lệnh để truy cập REST API chính:
- GET là để truy vấn object
- POST là để tạo mới object
- PUT để sửa đổi hoặc thay thế một object
- DELETE để loại bỏ một object
Mỗi phương thức trên phải được API gọi thông qua chỉ thị của server phải làm gì
Trang 33Xây dựng ứng dụng di động nhận diện cảm xúc
1.6.3 Quy trình hoạt động của mô hình REST API trong dự án
Hình 1 19 Quy trình hoạt động của REST API
- Hệ thống hoạt động theo mô hình client-server, trong đó server là tập hợp các service nhỏ lắng nghe các request từ client Với từng request khác nhau thì có thể một hoặc nhiều service xử lý
- Stateless (phi trạng thái) Đơn giản server và client không lưu trạng thái của nhau -> mỗi request lên server thì client phải đóng gói thông tin đầy đủ để thằng server hiểu được Điều này giúp hệ thống của bạn dễ phát triển, bảo trì, mở rộng vì không cần tốn công CRUD trạng thái của client Hệ thống phát triển theo hướng này có ưu điểm nhưng cũng có khuyết điểm là gia tăng lượng thông tin cần truyền tải giữa client và server
- Khả năng caching: Các response có thể lấy từ cache Bằng cách cache các response, server giảm tải việc xử lý request, còn client cũng nhận được thông tin nhanh hơn Ở đây ta đặt một cache vào giữa: client- cache- server
- Chuẩn hóa các interface: Đây là một trong những đặc tính quan trọng của hệ thống REST Bằng cách tạo ra các quy ước chuẩn để giao tiếp giữa các thành phần trong hệ thống, đơn giản hóa việc client có thể tương tác với server Các quy ước này áp dụng cho toàn bộ các service giúp cho người sử dụng hệ thống của bạn dễ dụng hơn Dễ hiểu hơn trên hệ thống đặt ra một chuẩn API để người dùng dù là mobile, website đều
có thể kết nối vào được Hệ thống REST có yếu điểm ở đây vì khi chuẩn hóa rồi ta không thế tối ưu từng kết nối
- Phân lớp hệ thống: trong hệ thống REST chia tách các thành phần hệ thống theo từng lớp, mỗi lớp chỉ sử dụng lớp ở dưới nó và giao tiếp với lớp ở ngay trên nó mà thôi Điều này giúp giảm độ phức tạp của hệ thống, giúp các thành phần tách biệt nhau từ
đó dễ dàng mở rộng từng thành phần
1.6.4 Ưu nhược điểm của REST API
- Ưu điểm:
• Giúp cho ứng dụng trở nên rõ ràng hơn
• REST URL đại diện cho resource chứ không phải là hành động
• Dữ liệu được trả về với nhiều định dạng khác nhau như xml, html, rss, json…
Trang 34• Code đơn giản và ngắn gọn
• REST chú trọng vào tài nguyên của hệ thống
- Nhược điểm:
• Bảo mật kém hơn so với SOAP
• Do không lưu trạng thái giữa Client-Server nên khối thông tin truyền tải lớn -> tốn tài nguyên
• Chỉ hoạt động trên giao thức HTTP
Trang 35Xây dựng ứng dụng di động nhận diện cảm xúc
CHƯƠNG II PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.1 Phân tích yêu cầu:
2.1.1 Mô tả bài toán
Bài toán nhận diện cảm xúc qua ảnh Thônng tin về bài toán như sau:
- Người dùng có thể tiến hành chụp ảnh từ camera hay chọn ảnh từ thư viện của thiết
bị Từ những bức ảnh được chọn ra, người dùng có thể gửi ảnh đến máy chủ, nhận lại kết quả là cảm xúc của ảnh, và có thể lấy gợi ý về các thực phẩm phù hợp với cảm xúc đó
2.1.2 Phân tích hiện trạng
Hiện này, khi mà ngành công nghệ ngày càng phát triển, hầu như tất cả mọi người ai cũng
có riêng cho mình một chiếc điện thoại thông minh với đầy đủ các chức năng cao cấp, và một trong số đó có khả năng chụp ảnh Từ đó nhu cập chụp ảnh của mọi người cũng ngày càng nhiều hơn.Hơn nữa, khi thế giới Internet phát triển nhanh chóng, các mạng xã hội ra đời liên tục, cho phép mọi người có thể chia sẻ ảnh không giới hạn
Trong vài năm gần đây, trí tuệ nhân tạo nổi lên như một lĩnh vực tiềm năng và nó đã được chứng minh tính ứng dụng cao thông qua các lĩnh vực khác nhau, trong đó có ngành thị giác máy tính, trong đó có xử lí ảnh
Từ nhữnh thực trạng đó, ta nhận thấy rằng hai yếu tố kể trên hoàn toàn có thể kết hợp với nhau để phục vụ người dùng
2.1.3 Phân tích yêu cầu bài toán
Để giải quyết bài toán đặt ra ở trên, ta cần phải tận dụng trí tuệ nhân tạo, mà cụ thể ở đây
là việc xử lí ảnh để xử lí nguồn dữ liệu rộng lớn mà người dùng đăng tải từng ngày để tạo ra ứng dụng phục vụ người dùng
2.1.4 Phân tích tính khả thi
- Tính khả dụng: Hệ thống hoàn toàn có thể triển khai trên thực tế
- Chi phí phát triển: Chi phí cho máy chủ lượng người dùng ban đầu là thấp
- Đáp ứng như cầu: Người dùng