1. Trang chủ
  2. » Y Tế - Sức Khỏe

Xây dựng ứng dụng di động nhận diện cảm xúc.

70 2 0

Đ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ông tin cơ bản

Tiêu đề Xây dựng ứng dụng di động nhận diện cảm xúc
Tác giả Lê Trọng Tài
Người hướng dẫn TS. Phạm Minh Tuấn
Trường học Đại học Đà Nẵng
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2019
Thành phố Đà Nẵng
Định dạng
Số trang 70
Dung lượng 2,98 MB

Nội dung

ĐẠ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 2

KHOA 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 4

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

- 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 6

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 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 7

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

Trang 8

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ề 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 9

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ự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 10

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

Trang 11

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

Trang 12

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

Trang 13

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

Trang 14

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 đã 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 15

Xâ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 16

Như 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 18

1.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 19

Xâ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 20

Hì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 21

Xâ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 22

Thuậ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 23

Xâ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 24

Ta 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 25

Xâ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 26

Hì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 27

Xâ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 28

Hì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 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 29

Xâ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 30

Hì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 31

Xâ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 32

1.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 33

Xâ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 35

Xâ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

Ngày đăng: 25/02/2024, 11:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w