Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 55 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
55
Dung lượng
1,06 MB
Nội dung
TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT VIỆN KỸ THUẬT – CÔNG NGHỆ BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN CẤP ĐƠN VỊ NĂM HỌC 2021-2022 ỨNG DỤNG HỌC MÁY VÀO NHẬN DIỆN BIỂU CẢM CỦA SINH VIÊN ĐẠI HỌC THỦ DẦU MỘT SAU BUỔI HỌC Thuộc nhóm ngành khoa học: Trí tuệ nhân tạo khoa học liệu Bình Dương, tháng 04 năm 2022 TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT VIỆN KỸ THUẬT – CÔNG NGHỆ BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN CẤP ĐƠN VỊ NĂM HỌC 2021-2022 ỨNG DỤNG HỌC MÁY VÀO NHẬN DIỆN BIỂU CẢM CỦA SINH VIÊN ĐẠI HỌC THỦ DẦU MỘT SAU BUỔI HỌC Thuộc nhóm ngành khoa học: Trí tuệ nhân tạo khoa học liệu STT Họ tên MSSV Phạm Thái Bảo Mai Đặng Sơn Tùng Lớp Khoa 2024802050007 D20TTNT01 KT-CN 2024801030059 D20KTPM02 KT-CN Phan Thúy Thanh 2124802050020 D21TTNT01 KT-CN Lục Tấn Khoa 2124802050022 D21TTNT01 KT-CN Người hướng dẫn: ThS Hồ Ngọc Trung Kiên Bình Dương, tháng 04 năm 2022 i i Ghi UBND TỈNH BÌNH DƯƠNG CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT Độc lập – Tự – Hạnh phúc THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI Thông tin chung: - Tên đề tài: Ứng dụng máy học vào nhận diện biểu cảm sinh viên đại học thủ dầu sau buổi học - Sinh viên/ nhóm sinh viên thực hiện: Năm thứ/ STT Họ tên MSSV Lớp Khoa Số năm đào tạo Phạm Thái Bảo 2024802050007 D20TTNT01 KT-CN 2/4 Mai Đặng Sơn Tùng 2024801030059 D20KTPM02 KT-CN 2/4 Phan Thúy Thanh 2124802050020 D21TTNT01 KT-CN 1/4 Lục Tấn Khoa 2124802050022 D21TTNT01 KT-CN 1/4 - Người hướng dẫn: ThS Hồ Ngọc Trung Kiên Mục tiêu đề tài: Xây dựng hệ thống nhận diện biểu cảm sinh viên thơng qua giúp cho giảng viên đánh giá buổi học, dễ dàng điều chỉnh lựa chọn phương pháp giảng dạy phù hợp, khoa học Tính sáng tạo: Thêm lọc hệ thần kinh nhằm cải thiện độ nhạy nhận diện biểu cảm tức giận Kết nghiên cứu: iii Xây dựng mơ hình huấn luyện thử nghiệm nhận diện biểu cảm khuôn mặt Nhận diện biểu cảm khuôn mặt hạnh phúc, đau buồn, sợ hãi, tức giận, ngạc nhiên, bình thường Đóng góp mặt kinh tế - xã hội, giáo dục đào tạo, an ninh, quốc phòng khả áp dụng đề tài: Giáo dục: hỗ trợ giảng viên cải thiện phương pháp giảng dạy cho sinh thấy nhiều cách tiếp cận nâng cao chủ động sinh viên việc nghiên cứu học tập Công bố khoa học sinh viên từ kết nghiên cứu đề tài (ghi rõ họ tên tác giả, nhan đề yếu tố xuất có) nhận xét, đánh giá sở áp dụng kết nghiên cứu (nếu có): Ngày tháng năm 2022 Sinh viên chịu trách nhiệm thực đề tài (ký, họ tên) Nhận xét người hướng dẫn đóng góp khoa học sinh viên thực đề tài (phần người hướng dẫn ghi): iv Ngày tháng Xác nhận lãnh đạo khoa Người hướng dẫn (ký, họ tên) (ký, họ tên) v năm UBND TỈNH BÌNH DƯƠNG CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT Độc lập – Tự – Hạnh phúc THÔNG TIN VỀ SINH VIÊN CHỊU TRÁCH NHIỆM CHÍNH THỰC HIỆN ĐỀ TÀI I SƠ LƯỢC VỀ SINH VIÊN: Ảnh 4x6 Họ tên: Phạm Thái Bảo Sinh ngày: 19 tháng 03 năm 2002 Nơi sinh: Ninh Thuận Lớp: D20TTNT01 Khóa: 2020-2025 Khoa: Viện kĩ thuật – công nghệ Địa liên hệ: 424/39/8 tổ 4, khu phố 4, Phường Phú Hồ, Thủ Dầu Một, tỉnh Bình Dương Điện thoại: 0369430009 Email: baophth@gmail.com II QUÁ TRÌNH HỌC TẬP (kê khai thành tích sinh viên từ năm thứ đến năm học): * Năm thứ 1: Ngành học: Trí tuệ nhân tạo khoa học liệu Khoa: Viện kĩ thuật – công nghệ Kết xếp loại học tập: giỏi Sơ lược thành tích: Ngày v i tháng năm 2022 Xác nhận lãnh đạo khoa Sinh viên chịu trách nhiệm thực đề tài (ký, họ tên) (ký, họ tên) vi i MỤC LỤC MỤC LỤC vii DANH MỤC NHỮNG TỪ VIẾT TẮT ix DANH MỤC BẢNG BIỂU x DANH MỤC HÌNH xi A PHẦN MỞ ĐẦU 1 Lí chọn đề tài Mục tiêu nghiên cứu Đối tượng nghiên cứu Phạm vi nghiên cứu Phương pháp nghiên cứu Ý nghĩa đề tài B PHẦN NỘI DUNG CHƯƠNG CƠ SỞ LÍ THUYẾT 1.1 Tổng quan tình hình nghiên cứu 1.2 Một số khái niệm 1.2.1 Machine learning 1.2.2 Deep learning 1.2.3 Training set 10 1.2.4 Validation 10 1.2.5 Testing set 12 CHƯƠNG MÔ HÌNH BÀI TỐN 14 2.1 Quy trình thực 14 2.2 Mơ hình tốn 15 2.2.1 Train model 15 2.2.2 Thuật toán sử dụng 16 2.2.3 Test model 19 CHƯƠNG THỰC NGHIỆM VÀ ĐÁNH GIÁ 22 3.1 Chuẩn bị 22 3.1.1 Cấu hình máy 22 3.1.2 Phần mềm 22 3.1.3 Ngơn ngữ lập trình 23 3.1.4 Các thư viện sử dụng 25 vii i 3.1.5 Mô tả liệu 29 3.2 Tiến hành 30 3.2.1 Train model 30 3.2.2 Test model 33 3.3 Kết 36 3.4 Đánh giá 37 C PHẦN KẾT LUẬN 38 Kết đạt 38 Khuyến nghị 38 TÀI LIỆU THAM KHẢO 40 ix DANH MỤC NHỮNG TỪ VIẾT TẮT Viết tắt Tiếng anh Tiếng việt Machine learning Máy học Deep learning Học sâu Train Huấn luyện Model Mẫu x tiện cho việc xây dựng ứng dụng với framework, đồng thời thực thi ứng dụng ngơn ngữ C++ để đạt hiệu suất cao TensorFlow cho phép nhà phát triển tạo biểu đồ để thực tính tốn Mỗi nút biểu đồ đại diện cho phép toán kết nối đại diện cho liệu Do đó, thay xử lý chi tiết nhỏ tìm cách thích hợp để chuyển đầu chức với đầu vào chức khác, nhà phát triển tập trung vào logic tổng thể ứng dụng Hình 4.3: Tensorflow(website) OpenCV thư viện nguồn mở hàng đầu cho Computer Vision Machine Learning, có thêm tính tăng tốc GPU cho hoạt động theo real-time OpenCV phát hành theo giấy phép BSD (*), miễn phí cho học tập sử dụng với mục đích thương mại Nó có giao diện C++, C, Python Java hỗ trợ Windows, Linux, Mac OS, iOS Android OpenCV thiết kế để hỗ trợ hiệu tính tốn chun dùng cho ứng dụng real-time (thời gian thực) Nếu viết C/C++ tối ưu, thư viện tận dụng xử lý đa lõi (multi-core processing) OpenCV có cộng đồng người dùng hùng hậu hoạt động khắp giới nhu cầu cần đến ngày tăng theo xu hướng chạy đua sử dụng computer vision công ty công nghệ OpenCV ứng dụng rộng rãi toàn cầu, với cộng đồng 47.000 người, với nhiều mục đích tính khác từ interactive art, đến khai thác mỏ, khai thác web map qua robotic cao cấp Hình 4.4: OpenCV(website) Pillow fork từ thư viện PIL Python sử dụng để xử lý hình ảnh So với PIL Pillow cập nhật thường xuyên đánh giá cao Hình 4.5: Pillow(website) Matplotlib thư viện vẽ đồ thị mạnh mẽ hữu ích cho người làm việc với Python NumPy Module sử dụng nhiều Matplotib Pyplot cung cấp giao diện MATLAB thay vào đó, sử dụng Python nguồn mở Một Matplotlib figure phân loại thành nhiều phần đây: - Figure: Như cửa sổ chứa tất bạn vẽ - Axes: Thành phần figure axes (những khung nhỏ để vẽ hình lên đó) Một figure chứa nhiều axes Nói cách khác, figure khung chứa, axes thật nơi hình vẽ vẽ lên - Axis: Chúng dòng số giống đối tượng đảm nhiệm việc tạo giới hạn biểu đồ - Artist: Mọi thứ mà bạn nhìn thấy figure artist Text objects, Line2D objects, collection objects Hầu hết Artists gắn với Axes Hình 4.6: Matplotlib(website) Tkinter gói Python có chứa module Tk hỗ trợ cho việc lập trình GUI Tk ban đầu viết cho ngơn ngữ Tcl Sau Tkinter viết để sử dụng Tk trình thơng dịch Tcl Python Ngồi Tkinter cịn có số cơng cụ khác giúp tạo ứng dụng GUI viết Python wxPython, PyQt, PyGTK Hình 4.7: Tkinter(website) 4.1.5 Mơ tả liệu Dự án sử dụng Tập liệu FER2013 từ trang web Kaggle có chứa 35.887 (48 pixel * 48 pixel) hình ảnh xám mơ tả biểu cảm khn mặt Tất hình ảnh có khn mặt gần chiếm lượng khơng gian tương tự Tập liệu có bảy lớp khác hình ảnh thuộc lớp cụ thể biểu cảm khn mặt Ví dụ, Hình cho thấy bảy biểu cảm khác khn mặt Hình 4.1: Mơ tả biểu cảm có tập liệu FER2013s Các ảnh từ (a) đến (g) mơ tả số lớp hình ảnh biểu cảm khn mặt tức giận, chán ghét, sợ hãi, vui vẻ, bình thường, buồn bã ngạc nhiên Kích thước tập dữliệu (35887, 48, 48, 1) Mô tả phân loại tập liệu (số lượng hình ảnh biểu cảm khuôn mặt tương ứng Tập liệu chia thành tập riêng biệt, tập huấn luyện (để huấn luyện mơ hình) gồm 28709 ảnh tập thử nghiệm (để kiểm tra mơ hình) gồm 7178 ảnh Các hình ảnh biểu cảm khn mặt có số lượng chia sau sở liệu: Bảng 4.1: Phân chia tập liệu FOLDER TRAIN FOLDER TEST Angry(tức giận) 3995 958 Disgust(chán ghét) 436 111 Fear(sợ hãi) 4097 1024 Happy(vui vẻ) 7215 1774 Neutral(bình thường) 4965 1233 Sad(buồn bã) 4830 1247 Surprise(ngạc nhiên) 3171 831 Nhóm sử dụng liệu cho mơ hình thử nghiệm liệu có số mẫu lớn, phù hợp với việc huấn luyện với mạng học sâu, vốn đòi hỏi nhiều mẫu phương pháp học máy thơng thường Ngồi ra, liệu cấu trúc dễ dàng xử lý thư viện Keras/TensorFlow có nhiều kết đối chứng thực so sánh mơ hình chúng tơi với kết nhóm nghiên cứu khác 4.2 Tiến hành 4.2.1 Train model Chèn lớp thư viên numpy, cv2 vào Từ cá thư viện keras.model dùng Sequential Từ keras.layers chèn Dense, Dropout, Flatten, Conv2D, MaxPooling2d Xử lí hình ảnh với tensorflow.keras.optimizers chèn Adam Cuối keras.preprocessing.image chèn ImageDataGenerator Code: import numpy as np import cv2 from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten from keras.layers import Conv2D from tensorflow.keras.optimizers import Adam from keras.layers import MaxPooling2D from keras.preprocessing.image import ImageDataGenerator Thêm liệu hình ảnh từ tập FER2013 đưa qua hệ thống xử lí để chia tỉ lệ, tăng cường liệu để thực trình huấn luyện Code: train_dir = 'train' val_dir = 'test' train_datagen = ImageDataGenerator(rescale=1./255) val_datagen = ImageDataGenerator(rescale=1./255) train_generator = train_datagen.flow_from_directory( train_dir, target_size=(48,48), batch_size=64, color_mode="grayscale", class_mode='categorical' ) validation_generator = val_datagen.flow_from_directory( val_dir, target_size=(48,48), batch_size=64, color_mode="grayscale", class_mode='categorical' ) Tạo danh sách Sequentail thêm lọc liệu 3x3 với số lượng 32, 64, 128, 256, 512 Sau ta đưa lọc thành danh sách chiều Kế đến thêm mạng thần kinh hỗ trợ cho việc huấn luyện Ngoài cịn chưa MaxPooling2D để giảm kích cỡ hình xuống giữ đặc trưng, Dropout để chặn số lọc mạng thần kinh để tranh tình trạng học tủ liệu Sau chuẩn bị xong ta chuyên đổi lại mã liệu Code: emotion_model = Sequential() emotion_model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(48,48,1))) emotion_model.add(Conv2D(64, kernel_size=(3, 3), activation='relu')) emotion_model.add(MaxPooling2D(pool_size=(2, 2))) emotion_model.add(Dropout(0.25)) emotion_model.add(Conv2D(128, kernel_size=(3, 3), activation='relu')) emotion_model.add(MaxPooling2D(pool_size=(2, 2))) emotion_model.add(Conv2D(256, kernel_size=(3, 3), activation='relu')) emotion_model.add(MaxPooling2D(pool_size=(2, 2))) emotion_model.add(Conv2D(512, kernel_size=(3, 3), activation='relu')) emotion_model.add(MaxPooling2D(pool_size=(2, 2))) emotion_model.add(Dropout(0.25)) emotion_model.add(Flatten()) emotion_model.add(Dense(1024, activation='relu')) emotion_model.add(Dropout(0.5)) emotion_model.add(Dense(1024, activation='relu')) emotion_model.add(Dropout(0.5)) emotion_model.add(Dense(7, activation='softmax')) emotion_model.compile(loss='categorical_crossentropy',optimizer=Adam(lr=0.0001 , decay=1e-6),metrics=['accuracy']) Cuối ta huấn luyện liệu xử lí trước với chu kì 50 số bước chạy liệu train 28709/64 số bước chạy liệu test 7178/64 Sau lưu lại model thành file “model.h5” Code: emotion_model_info = emotion_model.fit( train_generator, steps_per_epoch=28709 // 64, epochs=50, validation_data=validation_generator, validation_steps=7178 // 64 ) emotion_model.save_weights('model.h5') 4.2.2 Test model Chèn lớp thư viên numpy, cv2 vào Từ cá thư viện keras.model dùng Sequential Từ keras.layers chèn Dense, Dropout, Flatten, Conv2D, MaxPooling2d Xử lí hình ảnh với tensorflow.keras.optimizers chèn Adam Cuối keras.preprocessing.image chèn ImageDataGenerator Chèn thêm tkinter, polliw, os matplotlib.pyplot Code: import tkinter as tk from tkinter import * import cv2 from PIL import Image, ImageTk import os import numpy as np import cv2 from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten from keras.layers import Conv2D from tensorflow.keras.optimizers import Adam from keras.layers import MaxPooling2D from keras.preprocessing.image import ImageDataGenerator import matplotlib.pyplot as plt Tạo danh sách Sequentail thêm lọc liệu 3x3 với số lượng 32, 64, 128, 256, 512 Sau ta đưa lọc thành danh sách chiều Kế đến thêm mạng thần kinh hỗ trợ cho việc huấn luyện Ngồi cịn chưa MaxPooling2D để giảm kích cỡ hình xuống giữ đặc trưng, Dropout để chặn số lọc mạng thần kinh để tranh tình trạng học tủ liệu Chuyên file “model.h5” train vào Code: emotion_model = Sequential() emotion_model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(48, 48, 1))) emotion_model.add(Conv2D(64, kernel_size=(3, 3), activation='relu')) emotion_model.add(MaxPooling2D(pool_size=(2, 2))) emotion_model.add(Dropout(0.25)) emotion_model.add(Conv2D(128, kernel_size=(3, 3), activation='relu')) emotion_model.add(MaxPooling2D(pool_size=(2, 2))) emotion_model.add(Conv2D(256, kernel_size=(3, 3), activation='relu')) emotion_model.add(MaxPooling2D(pool_size=(2, 2))) emotion_model.add(Conv2D(512, kernel_size=(3, 3), activation='relu')) emotion_model.add(MaxPooling2D(pool_size=(2, 2))) emotion_model.add(Dropout(0.25)) emotion_model.add(Flatten()) emotion_model.add(Dense(1024, activation='relu')) emotion_model.add(Dropout(0.5)) emotion_model.add(Dense(1024, activation='relu')) emotion_model.add(Dropout(0.5)) emotion_model.add(Dense(7, activation='softmax')) emotion_model.load_weights('model.h5') Đọc hình ảnh webcam gán vào biến chương trình để xử lí Đầu tiên nhận diện khn mặt vẽ ô vuông bao quanh nhận dạng Sau đưa biến chưa hình ảnh vào model để phân tích đưa tỉ lệ biểu cảm khuôn mặt cao Sau xác định biểu cảm ghi đoạn chữ tương ứng lên khung nhận diện khn mặt kết Vì chạy theo thời gian thực nên chương trình lặp lại nhiều lần bấm kí tự ‘q’ Code: emotion_dict = {0: "Angry", 1: "Disgusted", 2: "Fearful", 3: "Happy", 4: "Neutral", 5: "Sad", 6: "Surprised"} cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break bounding_box = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) num_faces = bounding_box.detectMultiScale(gray_frame,scaleFactor=1.3, minNeighbors=5) for (x, y, w, h) in num_faces: cv2.rectangle(frame, (x, y-50), (x+w, y+h+10), (255, 0, 0), 2) roi_gray_frame = gray_frame[y:y + h, x:x + w] cropped_img = np.expand_dims(np.expand_dims(cv2.resize(roi_gray_frame, (48, 48)), -1), 0) emotion_prediction = emotion_model.predict(cropped_img) maxindex = int(np.argmax(emotion_prediction)) cv2.putText( frame, emotion_dict[maxindex], (x+20, y-60), ) cv2.imshow('Video', cv2.resize(frame,(1200,860),interpolation = cv2.INTER_CUBIC)) if cv2.waitKey(1) & 0xFF == ord('q'): exit(0) cap.release() cv2.destroyAllWindows() 4.3 Kết Thơng mơ hình huấn luyện triển khai viết chương trình sau chạy thu tập tin “model.h5” chứa đặc trưng biểu cảm Sử dụng tập tin “model.h5” chạy mẫu chương trình thử nghiệm thực tế cho thấy chương trình nhận dạng hầu hết biểu cảm Trong mơ hình nhạy nhận biết biểu cảm hạnh phúc (happy) Hình 4.1: Nhận diện biểu cảm 4.4 Đánh giá Kết thử nghiệm thực tế cho thấy mơ hình nhạy nhận biết biểu cảm vui vẻ(happy), với biểu cảm ghê tởm(disgust) Việc hầu hết mơ hình cơng bố với tập liệu FER-2013 có accuracy(độ xác) 0.9725 loss(độ sai) 0.0839 điều cho thấy khả nhận diện biểu cảm dự đoạn xác nhiều Ngoài sau cải thiện chương trình nhạy việc nhận diện biểu cảm tức giận(angry) C PHẦN KẾT LUẬN Kết đạt Đã xây dựng mơ hình huấn luyện nhận diện biểu cảm khuôn mặt sử dụng thuật tốn CNN Chương trình thêm số lọc mạng thần kinh để cải thiện độ xác nhận diện biểu cảm tức giấn dễ dàng so với ban đầu Đây kiến trúc mô hình CNN ứng dụng vào việc phát biểu cảm khuôn mặt người đề xuất, tập ảnh 48x48 điểm ảnh đa cấp xám sử dụng thực nghiệm để đánh giá mơ hình Đây tốn có tính ứng dụng cao áp dụng nhiều vấn đề thực tế, đặc biệt liên quan đến việc cảm nhận phản hồi sinh viên phương pháp giảng dạy Nhận diện biểu cảm khuôn mặt hạnh phúc, đau buồn, sợ hãi, tức giận, ngạc nhiên, bình thường Tuy biểu cảm ghê tởm chưa nhận diện hồn tồn cịn hạn chế liệu chất lượng phân loại biểu cảm khuôn mặt người chưa cao Tuy nhiên lợi mơ hình khơng q lớn(dưới MB) nên tiếp tục tối ưu để triển khai thiết bị, mơ hình cài đặt thiết bị nhúng vốn yêu cầu chặt chẽ nhớ Khuyến nghị Đây báo cáo nghiên cứu khoa học nhóm sinh viên Đại học Thủ Dầu Một Do hạn chế mặt thời gian nhóm nghiên cứu việc nhận diện biểu cảm khuôn mặt tập tin “model.h5” huấn luyện với độ xác tương đối phát số biểu cảm Những vấn đề nhóm chưa làm như: - Cải thiện độ xác cách tăng số lượng liệu, ứng dụng nhiều thuật toán kết hợp chúng lại với Ngồi ứng dụng nhiều cơng nghệ tiên tiến để nhận diện nhiều biểu cảm kinh hồng, căm ghét, Kính sợ, sợ hãi cách buồn khổ, tức giận cách buồn bã, tức giận cách sợ hãi, ngạc nhiên cách vui vẻ, ngạc nhiên cách buồn bã, ngạc nhiên cách sợ hãi, ngạc nhiên cách tức giận, ngạc nhiên cách ghê tởm, ghê tởm cách vui vẻ, ghê tởm cách buồn bã, ghê tởm cách sợ hãi, ghê tởm cách giận 53 - Từ ứng dụng thiết kế lên hệ thống thành chương trình hồn thiện để nhận diện biểu cảm khuôn mặt sinh viên Thủ Dầu Một sau buổi học Và có chức điểm danh, gửi biểu cảm sinh viên, hỗ trợ đề xuất phương pháp giảng dạy thông báo cho giảng viên tình hình biểu cảm lớp tổng quan,… Những đề nêu phần nhóm muốn thực Ngồi thực tế nhiều mặt cần nghiên cứu 54 TÀI LIỆU THAM KHẢO Tiếng Việt [1] ThS.Nguyễn Thị Ngọc An, giáo trình quản trị hành văn phịng, giáo dục đào tạo [2] Tổng quan ước lượng mức độ biểu cảm người qua biểu cảm khuôn mặt hướng tiếp cận dựa ảnh nhiệt - Nguyễn Phương Nam, Nguyễn Viết Hưng [3] Mơ hình khai phá ý kiến phân tích biểu cảm khách hàng trực tuyến ngành thực phẩm - Nguyễn Đặng Lập Bằng, Nguyễn Văn Hồ, Hồ Trung Thành [4] sử dụng phương pháp support vector machine convolutional neural network để phân loại biểu cảm khuôn mặt – Lê Thu Trang, Nguyễn Thu Hương Tiếng Anh [5] Leveraging Recent Advances in Deep Learning for Audio-Visual Emotion Recognition - Liam Schonevelda, Alice Othmanib, Hazem Abdelkawyb [6] Multimodal Emotion Recognition using Deep Learning Architectures - Hiranmayi Ranganathan, Shayok Chakraborty and Sethuraman Panchanathan [7] A Robust Method for Face Recognition and Face Emotion Detection System using Support Vector Machines - Rajesh K M, Rajesh K M Website [8] https://hongtin.net/ai/nhan-dien-cam-xuc-khuon-mat-real-time-voi-python- keras-va-opencv/ 55