Professional Documents
Culture Documents
Ứng Dụng Học Máy Vào Nhận Diện Biểu Cảm Sinh Viên Thủ Dầu Một Sau Buổi Học
Ứng Dụng Học Máy Vào Nhận Diện Biểu Cảm Sinh Viên Thủ Dầu Một Sau Buổi Học
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN CẤP ĐƠN VỊ
Ứ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 và khoa học dữ liệu
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN CẤP ĐƠN VỊ
Ứ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 và khoa học dữ liệu
Ghi
STT Họ và tên MSSV Lớp Khoa
chú
TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT Độc lập – Tự do – Hạnh phúc
- Tên đề tài: Ứng dụng máy học 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
Năm thứ/
STT Họ và tên MSSV Lớp Khoa Số năm
đào tạo
Xây dựng hệ thống nhận diện biểu cảm của 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 và lựa chọn phương pháp giảng dạy
phù hợp, khoa học.
Thêm bộ lọc và hệ thần kinh nhằm cải thiện độ nhạy khi nhận diện biểu cảm tức
giận.
ii
Xây dựng mô hình huấn luyện và thử nghiệm nhận diện biểu cảm khuôn mặt.
Nhận diện được biểu cảm khuôn mặt cơ bản hạnh phúc, đau buồn, sợ hãi, tức giận,
ngạc nhiên, bình thường.
5. Đóng góp về mặt kinh tế - xã hội, giáo dục và đào tạo, an ninh, quốc phòng và
khả năng áp dụng của đề 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 được
nhiều cách tiếp cận nâng cao sự chủ động của sinh viên trong việc nghiên cứu học tập.
6. Công bố khoa học của sinh viên từ kết quả nghiên cứu của đề tài (ghi rõ họ tên
tác giả, nhan đề và các yếu tố về xuất bản nếu có) hoặc nhận xét, đánh giá của cơ sở
đã áp dụng các kết quả nghiên cứu (nếu có):
(ký, họ và tên)
Nhận xét của người hướng dẫn về những đóng góp khoa học của sinh viên thực
hiện đề tài (phần này do người hướng dẫn ghi):
iii
Ngày tháng năm
iv
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ự do – Hạnh phúc
Địa chỉ liên hệ: 424/39/8 tổ 4, khu phố 4, Phường Phú Hoà, tp Thủ Dầu Một, tỉnh Bình
Dương.
II. QUÁ TRÌNH HỌC TẬP (kê khai thành tích của sinh viên từ năm thứ 1 đến năm
đang học):
* Năm thứ 1:
Ngành học: Trí tuệ nhân tạo và khoa học dữ liệu Khoa: Viện kĩ thuật – công
nghệ
v
Xác nhận của lãnh đạo khoa Sinh viên chịu trách nhiệm chính
(ký, họ và tên)
vi
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
1. Lí do chọn đề tài....................................................................................................1
2. Mục tiêu nghiên cứu..............................................................................................1
3. Đối tượng nghiên cứu............................................................................................1
4. Phạm vi nghiên cứu...............................................................................................1
5. Phương pháp nghiên cứu.......................................................................................1
6. Ý nghĩa đề tài........................................................................................................2
B. PHẦN NỘI DUNG..................................................................................................3
CHƯƠNG 1. CƠ SỞ LÍ THUYẾT.............................................................................3
1.1. Tổng quan tình hình nghiên cứu..........................................................................3
1.2. Một số khái niệm.................................................................................................5
1.2.1. Machine learning..........................................................................................5
1.2.2. Deep learning...............................................................................................8
1.2.3. Training set.................................................................................................10
1.2.4. Validation...................................................................................................10
1.2.5. Testing set...................................................................................................12
CHƯƠNG 2. MÔ HÌNH BÀI TOÁN.......................................................................14
2.1. Quy trình thực hiện............................................................................................14
2.2. Mô hình bài toán................................................................................................15
2.2.1. Train model.................................................................................................15
2.2.2. Thuật toán được sử dụng............................................................................16
2.2.3. Test model...................................................................................................19
CHƯƠNG 3. 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 được sử dụng.........................................................................25
vii
3.1.5. Mô tả bộ dữ 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 quả..............................................................................................................36
3.4. Đánh giá............................................................................................................37
C. PHẦN KẾT LUẬN...............................................................................................38
1. Kết quả đạt được.................................................................................................38
2. Khuyến nghị........................................................................................................38
TÀI LIỆU THAM KHẢO.........................................................................................40
viii
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
ix
DANH MỤC BẢNG BIỂU
Bảng 3.1: Phân chia tập dữ liệu...................................................................................30
x
DANH MỤC HÌNH
Hình 1.1: Machine learning workflow(website).......................................................6
Hình 1.2: Supervised learning(website)....................................................................7
Hình 1.3: Unsupervised learning(website)................................................................8
Hình 1.4: Deep learning(website).............................................................................9
Hình 1.5: Validation...............................................................................................11
Hình 1.6: Testing set(website)................................................................................12
Hình 2.1: Quy trình thực hiện(website)..................................................................14
Hình 2.2: Khởi tạo các lớp player...........................................................................15
Hình 2.3: Quy trình train model..............................................................................16
Hình 2.4: Cấu trúc mạng CNN(website).................................................................18
Hình 2.5: Xử lí của mạng CNN(website)................................................................19
Hình 2.6: Quy trình thử nghiệm nhận diện biểu cảm..............................................20
Hình 3.1: Máy được sử dụng(website)....................................................................22
Hình 3.2: Phần mềm sử dụng..................................................................................23
Hình 3.3: Python(website)......................................................................................24
Hình 3.4: Numpy(website).....................................................................................26
Hình 3.5: Keras(website)........................................................................................26
Hình 3.6: Tensorflow(website)...............................................................................27
Hình 3.7: OpenCV(website)...................................................................................28
Hình 3.8: Pillow(website).......................................................................................28
Hình 3.9: Matplotlib(website).................................................................................28
Hình 3.10: Tkinter(website)....................................................................................29
Hình 3.11: Mô tả các biểu cảm có trong tập dữ liệu FER2013s..............................29
Hình 3.12: Nhận diện biểu cảm..............................................................................37
xi
A. PHẦN MỞ ĐẦU
1. Lí do chọn đề tài
Với tình hình hiện nay hình thức học trực tuyến là giải pháp giúp chúng ta có thể
tiếp nhận thông tin dễ dàng chỉ với một chiếc điện thoại, máy tính hoặc máy tính bảng
có kết nối Internet. Như vậy, học sinh có thể học tập từ xa mà không cần phải đến
trường học. Mặt khác hình thức này làm giảm khả năng truyền và đạt sự nhuyệt huyết
trong công tác giảng dạy, khó khăn trong việc tương tác qua lại giữa giảng viên, sinh
viên. Như vậy giảng viên khó có thể nắm bắt được tình hình học tập của sinh viên và
đưa ra phương pháp giảng dạy phù hợp. Ngoài ra nếu giảng dạy trong một lớp quá
đông giảng viên chỉ biết được tổng thể biểu cảm sinh viên và chưa thấy được từng các
biểu cảm khác. Bởi vì lí do đó, cần xây dựng hệ thống có thể nhận biết được biểu cảm
của sinh viên sau buổi học giúp cho giảng viên đưa ra phương pháp giảng dạy phù
hợp. Đó cũng là lý do nhóm nghiên cứu sinh chọn đề tài “ứng dụng máy học 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” làm đề tài nghiên cứu
khoa học.
1
5. Phương pháp nghiên cứu
Phương pháp nghiên cứu lý thuyết:
- Tìm hiểu ngôn ngữ lập trình Python cơ bản, tìm hiểu các thư viện keras,
opencv, tensorflow và các khái niệm, một số các thuật toán liên quan đến machine
learning, deep learning. Thời gian thực hiện chiếm khoảng 50% thời gian nghiên cứu.
Cần tìm hiểu kĩ lưỡng về cách thực thi của các hàm, các tham số được truyền vào và
các giá trị đầu ra.
- Tìm kiếm bài báo liên quan đến nhận diện biểu cảm bằng nhiều phương pháp
khác nhau. Để tham khảo và kế thừa sự phát triển về nhận diện biểu cảm khuôn mặt và
công nghệ liên quan.
Phương pháp thực nghiệm: Lập trình xây dựng ứng dụng học sâu
6. Ý nghĩa đề tài
Kết quả nghiên cứu của đề tài “ứng dụng học máy vào nhận diện biểu cảm khuôn
mặt của sinh viên Thủ Dầu Một sau giờ học” sẽ là căn cứ hỡ trợ giảng viên xác định
được biểu cảm của từng sinh trong quá trình giảng dạy. Từ đó cải thiện phương pháp
giảng dạy phù hợp cho sinh viên.
2
Chương 1. Cơ sở lí thuyết
vốn rất không rõ ràng. Matsumoto phân chia biểu cảm khuôn mặt thành 7 nhóm thể
hiện chính: Vui vẻ, Ngạc nhiên, Hài lòng, Buồn bực, Cáu giận, Phẫn nộ và Sợ hãi. Tuy
nhiên, nhóm của Mase và Pentland cho rằng chỉ 4 loại biểu cảm được thể hiện một
cách rõ ràng là Hạnh phúc, Ngạc nhiên, Giận giữ và Căm phẫn; các loại biểu cảm khác
thường không rõ ràng và tùy thuộc nhiều vào kinh nghiệm của người quan sát (tức là
không thể định lượng một cách chính xác). Cơ sở dữ liệu Radboud Faces Database thì
phân chia biểu cảm khuôn mặt thành 8 loại: Tức giận, Căm phẫn, Sợ hãi, Hạnh phúc,
Buồn rầu, Bất ngờ, Khinh miệt và Trung lập. Dataset Kaggle FER-F2013 thì lại chỉ có
7 loại biểu cảm: Giận dữ, Căm phẫn, Sợ hãi, Hạnh phúc, Buồn rầu, Bất ngờ và Trung
lập.
Hiện nay vấn đề này vẫn đang được rất nhiều người quan tâm bởi tính hấp dẫn
cùng những vấn đề phức tạp của nó. Tính đến hiện nay đã nhận diện được 8 trạng thái
cơ bản gồm vui vẻ, rầu rĩ, sợ hãi, ghê tởm, giận dữ, ngạc nhiên, hy vọng và tin tưởng
bằng một số công cụ được Microsoft áp dụng. Ngoài ra phòng nghiên cứu của công ty
Fujistu đã phát triển nhận diện thêm những trạng thái mới như hồi hộp hoặc bối rối.
Bằng việc xác định 2 thực hiện “gò má được nâng lên” và “phía góc môi được kéo
giãn” xảy ra cùng lúc, AI sẽ đưa ra kết luận trạng người dùng. Nhận dạng biểu cảm
dựa trên nhận diện các thành phần chính (PCA) truyền thống ngoài ra còn kết hợp với
một số thuật toán như mạng noron, cây quyết định,…
Trong nước có nhiều nghiên cứu về chủ đề nhận diện biểu cảm như: tổng quan về
ước lượng mức độ biểu cảm của người qua biểu cảm khuôn mặt và hướng tiếp cận
dựa trên ảnh nhiệt [1], Mô hình khai phá ý kiến và phân tích biểu cảm khách hàng trực
tuyến trong ngành thực phẩm [2], sử dụng phương pháp support vector machine và
convolutional neural network để phân loại biểu cảm của khuôn mặt [3], sử dụng
phương pháp support vector machine và convolutional neural network để phân loại
biểu cảm của khuôn mặt [4],…
Ngoài nước có rất nhiều nghiên cứu về vấn đề nhận diện biểu cảm như:
Leveraging Recent Advances in Deep Learning for Audio-Visual Emotion
Recognition [5], Multimodal Emotion Recognition using Deep Learning Architectures
[6], A Robust Method for Face Recognition and Face Emotion Detection System using
Support Vector Machines [7],...
4
Chương 1. Cơ sở lí thuyết
Hiện nay trên thị trường đã có phần mềm nhận diện biểu cảm như là: “MAL Face
Emotion” ra mắt vào ngày 01/04/2020, nhận diện được 5 loại biểu cảm của từng
khuôn: bình thường, vui, buồn, giận dữ và ngạc nhiê
Một trong những lĩnh vực ứng dụng tốt nhất cho Machine learning trong nhiều
năm qua là computer vision, mặc dù nó vẫn đòi hỏi rất nhiều kỹ năng code thủ công để
có thể hoàn thành công việc. Mọi người vẫn sẽ viết các lớp phân loại bằng tay như các
bộ lọc để chương trình có thể xác định nơi mà một đối tượng bắt đầu và kết thúc. Phát
hiện hình dạng để xác định nếu nó có tám mặt. Một phân loại để nhận dạng các chữ cái
“S-T-O-P”. Từ tất cả những ứng dụng phân loại, họ sẽ phát triển các thuật toán để làm
cho hình ảnh và “học” khả năng nhận diện dấu hiệu liệu nó có phải là kí hiệu stop hay
không?
- Dataset (còn gọi là data corpus hay data stock): là tập dữ liệu ở dạng nguyên
thủy chưa qua xử lý mà bạn đã thu thập được ở bước data collection. Một dataset sẽ
bao gồm nhiều data point.
- Data point: là điểm dữ liệu, mỗi điểm dữ liệu biểu diễn cho một quan sát. Mỗi
data point có nhiều đặc trưng hay thuộc tính khác nhau, được chia làm hai loại: dữ liệu
số (numerical) và dữ liệu không phải số (ví dụ như chuỗi) (non-numerical/categorical).
Data point được biểu diễn thành dòng tương ứng, mỗi dòng có thể có 1 hoặc nhiều dữ
liệu (chính là các đặc trưng).
5
Chương 1. Cơ sở lí thuyết
- Training data và test data: dataset thường sẽ được chia làm 2 tập này, training
data dùng để huấn luyện cho mô hình, test data dùng để dự đoán kết quả và đánh giá
mô hình. Có bài toán người ta sẽ cho sẵn hai tập này thì bạn không cần phải chia nữa,
đối với bài toán chỉ cho mỗi dataset thôi thì phải chia ra. Thường tỷ lệ giữa tập train và
test sẽ là 8/2.
- Features vector: là vector đặc trưng, mỗi vector này sẽ biểu diễn cho một điểm
dữ liệu trong dataset. Mỗi vector có n chiều biểu diễn các đặc trưng của điểm dữ liệu,
mỗi đặc trưng là một chiều và phải là dữ liệu số. Các mô hình chỉ có thể huấn luyện
được từ các vector đặc trưng này, do đó dataset cần phải chuyển về dạng một tập các
vector đặc trưng (features vectors).
- Model: là các mô hình được dùng để training trên một training data theo thuật
toán của mô hình đó. Sau đó mô hình có thể dự đoán hoặc đưa ra các quyết định dựa
trên những gì chúng đã được học.
Machine learning workflow là các bước cụ thể trong machine learning như:
- Preprocessing – tiền xử lý: bước này dùng để chuẩn hóa dữ liệu, loại bỏ các
thuộc tính không cần thiết, gán nhãn dữ liệu, mã hóa một số đặc trưng, trích xuất đặc
6
Chương 1. Cơ sở lí thuyết
trưng, rút gọn dữ liệu nhưng vẫn đảm bảo kết quả… Bước này tốn thời gian nhất tỉ lệ
thuận với số lượng dữ liệu bạn có. Bước 1 và 2 thường chiếm hơn 70% tổng thời gian
thực hiện.
- Training model – huấn luyện mô hình: bước này là bước bạn huấn luyện cho
mô hình hay chính là cho nó học trên dữ liệu bạn đã thu thập và xử lý ở hai bước đầu.
- Evaluating model – đánh giá mô hình: sau khi đã huấn luyện mô hình xong,
chúng ta cần dùng các độ đo để đánh giá mô hình, tùy vào từng độ đo khác nhau mà
mô hình cũng được đánh giá tốt hay không khác nhau. Độ chính xác của mô hình đạt
trên 80% được cho là tốt.
- Improve – cải thiện: sau khi đã đánh giá mô hình, các mô hình đạt độ chính
xác không tốt thì cần được train lại, chúng ta sẽ lặp lại từ bước 3, cho đến khi đạt độ
chính xác như kỳ vọng. Tổng thời gian của 3 bước cuối rơi vào khoảng 30% tổng thời
gian thực hiện.
Có rất nhiều cách phân loại machine learning, thông thường thì machine learning
sẽ được phân làm hai loại chính sau:
- Supervised learning(học có giám sát) là việc cho máy tính học trên dữ liệu đã
được gán nhãn (label), hay nói cách khác, với mỗi đầu vào Xi, chúng ta sẽ có nhãn Yi
tương ứng.
7
Chương 1. Cơ sở lí thuyết
- Unsupervised learning(học không giám sát) là cho máy tính học trên dữ liệu
mà không được gán nhãn, các thuật toán machine learning sẽ tìm ra sự tương quan dữ
liệu, mô hình hóa dữ liệu hay chính là làm cho máy tính có kiến thức, hiểu về dữ liệu,
từ đó chúng có thể phân loại các dữ liệu về sau thành các nhóm, lớp (clustering) giống
nhau mà chúng đã được học hoặc giảm số chiều dữ liệu (dimension reduction).
8
Chương 1. Cơ sở lí thuyết
Mỗi nơ-ron đảm nhiệm một chức năng – làm thế nào để biết chính xác liệu rằng
nó có liên quan đến nhiệm vụ đang được thực hiện. Vì vậy, suy nghĩ về điểm dừng là
một dấu hiệu. Các thuộc tính của một hình ảnh dấu hiệu “dừng” được cắt nhỏ và được
“kiểm tra” bởi các nơ-ron – dạng hình trụ, màu đỏ của các động cơ cháy, các chữ cái
đặc trưng, kích thước biển báo giao thông, và sự chuyển động hoặc sự thiếu hụt của
nó. Nhiệm vụ của mạng thần kinh là để kết luận liệu đây có phải là dấu hiệu dừng hay
không. Nó đi kèm với một “vector xác suất”. Trong ví dụ của chúng ta, hệ thống có thể
xác định chắc chắn đến 86% một dấu hiệu dừng, 7% rằng đó là một dấu hiệu giới hạn
tốc độ, và 5% còn lại là một con diều bị mắc kẹt trong cây,( hoặc cái gì đó tương tự)
vv … và kiến trúc mạng sau đó sẽ thông báo đến mạng nơron cho dù đó là đúng hay
sai.
9
Chương 1. Cơ sở lí thuyết
Ngày nay, khả năng nhận dạng hình ảnh của máy móc được luyện tập thông qua
deep learning trong một số tình huống tốt hơn so với con người. AlphaGo của Google
đã được huấn luyện chơi cờ vay – nó điều chỉnh mạng lưới thần kinh của mình bằng
cách tự mình chống lại chính mình.
10
Chương 1. Cơ sở lí thuyết
cần nắm được rằng, tập validation là tập cho phép lựa chọn mô hình huấn luyện cho
phù hợp, còn testing set là tập đánh giá lại mô hình lần cuối cùng. Điều này, cũng
giống như các bạn học trên lớp, có các bài kiểm tra miệng, bài tập, kiểm tra giữa kỳ để
đánh giá mức độ học của bạn, từ đó biết mình yếu phần nào, cần bổ sung phần nào để
chuẩn bị cho bài thi cuối cùng vậy. Và cũng do đó, nên các đoạn phía sau này, chúng
ta sẽ tạm dùng từ tiếng anh (Validation set và testing set) để giữ được nghĩa vốn có
này.
Tập dữ liệu kiểm chứng (validation set) cung cấp các đánh giá công bằng về sự
phù hợp của mô hình trên tập dữ liệu huấn luyện trong quá trình huấn luyện.
Validation set có chức năng như một sự kết hợp: nó vừa là dữ liệu huấn luyện được sử
dụng để thử nghiệm, nhưng không phải là một phần của quá trình huấn luyện cấp thấp
cũng không phải là một phần của thử nghiệm cuối cùng. Nó là một bước chung gian
cho phép lựa chọn mô hình phù hợp.
Validation set có tác dụng giúp tìm kiếm mô hình tốt nhất trong các ứng viên
được huấn luyện từ training set. Nó được sử dụng để so sánh hiệu suất của các mô
hình ứng viên này và quyết định cái nào sẽ là mô hình tốt nhất cuối cùng bằng cách so
sánh các độ đo hiệu suất như độ chính xác, độ nhạy cảm, độ hồi tưởng, RMSE, MSE,
… đạt được trên nó. Nó giúp cho quá trình điều chỉnh các siêu tham số của mô hình
chẳng hạn số lượng đơn vị ẩn (lớp và chiều rộng lớp) trong mạng nơron để đạt được
mô hình phù hợp.
Validation set cũng giúp phát hiện và dừng sớm (early stopping) quá trình huấn
luyện mô hình khi lỗi trên validation set tăng lên đột biến, vì đây là dấu hiệu của mô
hình overfitting. Kỹ thuật early stopping là một kỹ thuật được sử dụng khá phổ biến để
tránh việc overfitting. Mặc dù nhìn có vẻ khá đơn giản, nhưng việc thực hiện nó trên
thực tế lại khá phức tạp. Sỡ dĩ như vậy là do lỗi dự đoán trên validation set có thể dao
động trong quá trình huấn luyện, tạo ra nhiều cực tiểu địa phương. Sự phức tạp này đã
dẫn đến việc có rất nhiều các quy tắc đặc biệt được xây dựng và đề xuất để xác định
chính xác thời điểm overfitting thực sự bắt đầu dựa trên lỗi dự đoán trên tập validation
set.
11
Chương 1. Cơ sở lí thuyết
12
Chương 1. Cơ sở lí thuyết
phân phối xác suất như tập dữ liệu huấn luyện. Điều này giúp cho việc đánh giá không
bị thiên vị. Nếu một mô hình phù hợp với trainining set nhưng lại sai khác trên testing
set, thì việc rất có khả năng nó bị overfitting (xem hình bên dưới). Ngược lại, sai số
không quá nhiều thì thường chúng là một mô hình phù hợp.
13
Chương 1. Cơ sở lí thuyết
CHƯƠNG 2.
14
Chương 2. Mô hình bài toán
Bước 2: Tìm kiếm bài báo liên quan đến nhận diện biểu cảm bằng nhiều phương
pháp khác nhau. Để tham khảo và kế thừa sự phát triển về nhận diện biểu cảm khuôn
mặt và công nghệ liên quan.
Bước 3: Nắm kiến thức Python cơ bản, tìm hiểu các thư viện keras, opencv,
tensorflow và các khái niệm, một số các thuật toán liên quan đến machine learning,
deep learning. Thời gian thực hiện chiếm khoảng 50% thời gian nghiên cứu. Cần tìm
hiểu kĩ lưỡng về cách thực thi của các hàm, các tham số được truyền vào và các giá trị
đầu ra.
Bước 5: Ứng dụng sử dụng bộ dữ liệu FER2013 trên Kaggle để huấn luyện và
kiểm tra độ chính xác cho hệ thống.
Bước 6: Chạy thử chương trình và cải thiện độ chính cho bộ dữ liệu hoặc mã
nguồn huấn luyện. Cung cấp thêm dữ liệu cho hệ thống hoặc thêm các bộ lọc và mạng
neural để tăng độ chính xác.
15
Chương 2. Mô hình bài toán
Bước 2: Truyền tập dữ liệu FER2013 được chia làm 2 phần train và test trên
Kaggle được chuẩn bị bởi Pierre-Luc Carrier và Aaron Courville vào chương trình để
làm cơ sở cho việc huấn luyện và thử.
Bước 3:
- Thêm các tổng hợp dữ liệu tối đa cho không gian 2D vào emotion_model.
16
Chương 2. Mô hình bài toán
Convolutional là một loại cửa sổ dạng trượt nằm trên một ma trận. Những
convolutional layer sẽ có các parameter được học để điều chỉnh và lấy ra những thông
tin chính xác nhất mà không cần phải chọn feature. Convolution hay tích chập chính là
nhân các phần tử trong ma trận. Sliding Window còn được gọi là kernel, filter hoặc
feature detect và là loại ma trận có kích thước nhỏ.
Feature là đặc điểm, các CNN sẽ so sánh hình ảnh dựa theo từng mảnh và những
mảnh này được gọi là Feature. Thay vì phải khớp các bức ảnh lại với nhau thì CNN sẽ
nhìn ra sự tương động khi tìm kiếm thô các Feature khớp với nhau bằng 2 hình ảnh tốt
hơn. Mỗi Feature được xem là một hình ảnh mini có nghĩa chúng là những mảng 2
chiều nhỏ. Các Feature này đều tương ứng với các khía cạnh nào đó của hình ảnh và
chúng có thể khớp lại với nhau.
17
Chương 2. Mô hình bài toán
- Convolutional layer là lớp quan trọng nhất của CNN, lớp này có nhiệm vụ
thực hiện mọi tính toán. Những yếu tố quan trọng của một convolutional layer là:
stride, padding, filter map, feature map. CNN sử dụng các filter để áp dụng vào vùng
của hình ảnh. Những filter map này được gọi là ma trận 3 chiều, mà bên trong nó là
các con số và chúng là parameter. Những yếu tố là một phần quan trọng để hình thành
bài toán:
+ Stride có nghĩa là khi bạn dịch chuyển filter map theo pixel dựa vào
giá trị trừ trái sang phải. Và sự chuyển dịch này chính là Stride.
+ Padding: Là các giá trị 0 được thêm vào với lớp input.
+ Feature map: Nó thể hiện kết quả của mỗi lần filter map quét qua
input. Sau mỗi lần quét sẽ xảy ra quá trình tính toán.
- Relu Layer là hàm kích hoạt trong neural network và hàm này còn được gọi là
activation function. Hàm kích hoạt có tác dụng mô phỏng các neuron có tỷ lệ truyền
xung qua axon. Trong activation function thì nó còn có hàm nghĩa là: Relu, Leaky,
Tanh, Sigmoid, Maxout,...Hiện nay, hàm relu được dùng phổ biến và vô cùng thông
dụng. Nó được sử dụng nhiều cho các nhu cầu huấn luyện mạng neuron thì relu mang
lại rất nhiều ưu điểm nổi bật như: việc tính toán sẽ trở nên nhanh hơn,... Quá trình sử
dụng relu, chúng ta cần lưu ý đến vấn đề tùy chỉnh các learning rate và theo dõi dead
unit. Những lớp relu layer đã được sử dụng sau khi filter map được tính ra và áp dụng
hàm relu lên những giá trị của filter map.
- Pooling layer được sử dụng khi đầu vào quá lớn, những lớp pooling layer sẽ
được xếp vào giữa giữa những lớp Convolutional layer để làm giảm parameter. Hiện
nay, pooling layer có 2 loại chủ yếu là: max pooling và average.
- Fully connected layer có nhiệm vụ đưa ra kết quả sau khi lớp convolutional
layer và pooling layer đã nhận được ảnh truyền. Lúc này, ta thu được kết quả là model
đã đọc được thông tin của ảnh và để liên kết chúng cũng như cho ra nhiều output hơn
thì ta sử dụng fully connected layer. Ngoài ra, nếu như fully connected layer có được
giữ liệu hình ảnh thì chúng sẽ chuyển nó thành mục chưa được phân chia chất lượng.
18
Chương 2. Mô hình bài toán
Cái này khá giống với phiếu bầu rồi chúng sẽ đánh giá để bầu chọn ra hình ảnh có chất
lượng cao nhất.
Trong mô hình CNN có tính bất biến và tích kết hợp. Nếu như bạn có cùng một
đối tượng mà lại chiếu theo nhiều góc độ khác nhau thì độ chính xác có thể sẽ bị ảnh
hưởng. Với chuyển dịch, quay và co giãn thì pooling layer sẽ được sử dụng để giúp
làm bất biến những tính chất này. Vì vậy, CNN sẽ đưa ra kết quả có độ chính xác
tương ứng ở từng mô hình.
Trong đó, pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển, phép
co dãn và phép quay. Còn tính kết hợp cục bộ sẽ cho bạn thấy những cấp độ biểu diễn,
thông tin từ thấp đến mức độ cao với độ trừu tượng thông qua convolution từ các filter.
Mô hình CNN có các layer liên kết được với nhau dựa vào cơ chế convolution.
Những layer tiếp theo sẽ là kết quả từ những convolution từ layer trước đó, vì thế
mà bạn sẽ có các kết nối cục bộ phù hợp nhất. Vậy, mỗi neuron ở lớp sinh ra tiếp theo
từ kết quả filter sẽ áp đặt lên vùng ảnh cục bộ của một neuron có trước đó. Trong khi
huấn luyện mạng, CNN sẽ tự động học hỏi các giá trị thông qua lớp filter dựa vào cách
thức mà người dùng thực hiện.
Trong đó, cấu trúc cơ bản của CNN thường bao gồm 3 phần chính là:
19
Chương 2. Mô hình bài toán
- Local receptive field (trường cục bộ): Lớp này có nhiệm vụ tách lọc dữ liệu,
thông tin ảnh và lựa chọn các vùng ảnh có giá trị sử dụng cao nhất.
- Shared weights and bias (trọng số chia sẻ): Lớp này giúp làm giảm tối đa
lượng tham số có tác dụng chính của yếu tố này trong mạng CNN. Trong mỗi
convolution sẽ có các feature map khác nhau và mỗi feature lại có khả năng giúp
detect một vài feature trong ảnh.
- Pooling layer (lớp tổng hợp): Pooling layer là lớp cuối cùng và có tác dụng
làm đơn giản các thông tin đầu ra. Có nghĩa là, sau khi đã hoàn tất tính toán và quét
qua các lớp thì đến pooling layer để lược bớt các thông tin không cần thiết. Từ đó, cho
ra kết quả theo như ý mà người dùng mong muốn.
20
Chương 2. Mô hình bài toán
Bước 1: Thêm các thư viện cần dung như keras, opencv, tensorflow, numpy để
thực hiện các phép toán phức tạp và xử lí hình ảnh.
Bước 2:
- Thêm các tổng hợp dữ liệu tối đa cho không gian 2D vào emotion_model.
Bước 3: Tạo danh sách emotion_dict kiểu dict để lưu tên biểu cảm. Bật cam bằng
opencv đọc hình ảnh vào biến thông qua webcam.
Bước 4: Nhân diện khuôn mặt trong ảnh được gán bào biến.
Bước 5:
- Bỏ ảnh vừa chỉnh sửa vào danh sách emotion_model để phân tích và đưa ra tỉ
lệ của ảnh này cho mỗi biểu cảm.
- Sau đó lấy ra key có giá trị lớn nhất và truyền cv2.putText() để hiện cảm xúc
trên khung nhận diện khuôn mặt.
21
Chương 2. Mô hình bài toán
Hình 3.1: Quy trình thử nghiệm nhận diện biểu cảm
Trong quá trình thử nghiệm cần xem xét khả năng nhận diện biểu cảm của
chương trình được sử dụng “model.h5”. Phân tích độ accuracy(độ chính xác) và
loss(độ sai) của “model.h5” dựa trên đó để cải thiện khả năng nhận diện biểu cảm
chính xác hơn.
22
Chương 3. Thực nghiệm và đánh giá
BIOS: FA506II.316
NVIDIA Nsight Compute 2022.1.0 là một trình biên dịch hạt nhân tương tác cho
các ứng dụng CUDA. Nó cung cấp các số liệu hiệu suất chi tiết và gỡ lỗi API thông
qua giao diện người dùng và công cụ dòng lệnh. Ngoài ra, tính năng cơ sở của nó cho
phép người dùng so sánh kết quả trong công cụ. Nsight Compute cung cấp giao diện
23
Chương 3. Thực nghiệm và đánh giá
người dùng có thể tùy chỉnh và theo hướng dữ liệu cũng như bộ sưu tập chỉ số và có
thể được mở rộng với các tập lệnh phân tích cho kết quả xử lý
NVIDIA Nsight Systems 2021.5.2 là một công cụ phân tích hiệu suất trên toàn
hệ thống được thiết kế để trực quan hóa các thuật toán của ứng dụng, giúp bạn xác
định các cơ hội lớn nhất để tối ưu hóa và điều chỉnh để mở rộng quy mô hiệu quả trên
mọi số lượng hoặc kích thước CPU và GPU; từ máy chủ lớn đến SoC nhỏ nhất.
NVIDIA Nsight Visual Studio Edition 2022.1.0.21343 là một môi trường phát
triển ứng dụng cho các nền tảng không đồng nhất, đưa tính toán GPU vào Microsoft
Visual Studio. NVIDIA Nsight ™ VSE cho phép bạn xây dựng và gỡ lỗi các nhân
GPU tích hợp và mã CPU gốc cũng như kiểm tra trạng thái của GPU và bộ nhớ.
NVIDIA PhysX System Software 9.21.0713 là trình điều khiển tích hợp các mã
hiệu build thời gian chạy mới nhất của giao diện lập trình ứng dụng PhysX của Nvidia.
Hỗ trợ người dùng tạo các bộ đồ họa chuẩn, tăng tốc các bộ GPU trong môi trường
3D.
NVIDIA Tools Extension SDK(NVTX) – 64 bit là Giao diện lập trình ứng dụng
(API) dựa trên C để chú thích các sự kiện, phạm vi mã và tài nguyên trong ứng dụng
của bạn. Các ứng dụng tích hợp NVTX có thể sử dụng NVIDIA Nsight, Tegra System
Profiler và Visual Profiler để nắm bắt và trực quan hóa các sự kiện và phạm vi này.
Python Laucher
24
Chương 3. Thực nghiệm và đánh giá
khả năng xử lí ngoại lệ và giao tiếp với hệ điều hành Amoeba. Nó bất đầu được triển
khai vào tháng Mười Hai năm 1989. Van Rossum đã tự mình gánh vác trách nhiệm
cho dự án, với vai trò là nhà phát triển chính, cho đến ngày 12 tháng Bảy năm 2018,
khi ông thông báo rằng ông sẽ rời bỏ trách nhiệm của ông và cả danh hiệu "Nhà độc
tài nhân từ cho cuộc sống" của Python, một danh hiệu mà cộng đồng Python đã trao
tặng cho ông vì sự tận tuỵ lâu dài của ông với vai trò là người ra quyết định chính cho
dự án. Vào tháng Một năm 2019, các nhà phát triển phần lõi Python đã bầu ra một
"Hội đồng Chèo lài" gồm năm thành viên để dẫn dắt dự án. Python 2.0 được ra mắt
vào ngày 16 tháng Mười năm 2000, với nhiều tính năng mới mẻ, bao gồm một bộ don
rác phát hiện theo chu kỳ và khả năng hỗ trợ Unicode. Python 3.0 được ra mắt vào
ngày mùng 3 tháng Mười Hai năm 2008. Đây là một phiên bản lớn của Python không
tương thích ngược hoàn toàn. Nhiều tính năng lớn của nó đã được chuyển mã ngược
(backport) về loạt phiên bản Python 2.6.x và 2.7.x. Các bản phát hành của Python 3 có
đi kèm với công cụ 2to3, có tác dụng tự động hoá việc dịch mã Python 2 sang Python
3. Python 3.9.2 và 3.8.8 được xúc tiến vì tất cả các phiên bản trước của Python (bao
gồm cả 2.7) gặp một số vấn đề bảo mật, có thể dẫn đến thực thị mã từ xa và "đầu độc"
bộ nhớ đệm.
25
Chương 3. Thực nghiệm và đánh giá
Tự do sử dụng và phân phối Python, thậm chí là dùng nó cho mục đích thương
mại. Vì là mã nguồn mở, bạn không những có thể sử dụng các phần mềm, chương
trình được viết trong Python mà còn có thể thay đổi mã nguồn của nó. Python có một
cộng đồng rộng lớn, không ngừng cải thiện nó mỗi lần cập nhật.
Các chương trình Python có thể di chuyển từ nền tảng này sang nền tảng khác và
chạy nó mà không có bất kỳ thay đổi nào. Nó chạy liền mạch trên hầu hết tất cả các
nền tảng như Windows, macOS, Linux.
Giả sử một ứng dụng đòi hỏi sự phức tạp rất lớn, bạn có thể dễ dàng kết hợp các
phần code bằng C, C++ và những ngôn ngữ khác (có thể gọi được từ C) vào code
Python. Điều này sẽ cung cấp cho ứng dụng của bạn những tính năng tốt hơn cũng như
khả năng scripting mà những ngôn ngữ lập trình khác khó có thể làm được.
Không giống như C/C++, với Python, bạn không phải lo lắng những nhiệm vụ
khó khăn như quản lý bộ nhớ, dọn dẹp những dữ liệu vô nghĩa,... Khi chạy code
Python, nó sẽ tự động chuyển đổi code sang ngôn ngữ máy tính có thể hiểu. Bạn
không cần lo lắng về bất kỳ hoạt động ở cấp thấp nào.
Python có một số lượng lớn thư viện tiêu chuẩn giúp cho công việc lập trình của
bạn trở nên dễ thở hơn rất nhiều, đơn giản vì không phải tự viết tất cả code. Ví dụ: Bạn
cần kết nối cơ sở dữ liệu MySQL trên Web server? Bạn có thể nhập thư viện
MySQLdb và sử dụng nó. Những thư viện này được kiểm tra kỹ lưỡng và được sử
dụng bởi hàng trăm người. Vì vậy, bạn có thể chắc chắn rằng nó sẽ không làm hỏng
code hay ứng dụng của mình.
Mọi thứ trong Python đều là hướng đối tượng. Lập trình hướng đối tượng (OOP)
giúp giải quyết những vấn đề phức tạp một cách trực quan. Với OOP, bạn có thể phân
chia những vấn đề phức tạp thành những tập nhỏ hơn bằng cách tạo ra các đối tượng.
Làm việc trong ngành ML và AI yêu cầu xử lý một loạt dữ liệu một cách thuận
tiện và hiệu quả nhất. Với những điều kiện trên của Python đã giúp nhiều nhà khoa
học dữ liệu nhanh chóng tiếp nhận một ngôn ngữ lập trình và bắt đầu sử dụng nó để
phát triển AI mà không tốn quá nhiều công sức vào việc học. Ngôn ngữ lập trình
Python giống với ngôn ngữ tiếng Anh hàng ngày và điều đó giúp quá trình học dễ
26
Chương 3. Thực nghiệm và đánh giá
dàng hơn. Cú pháp đơn giản của nó cho phép bạn thoải mái làm việc với các hệ thống
phức tạp, đảm bảo mối quan hệ rõ ràng giữa các phần tử hệ thống.
27
Chương 3. Thực nghiệm và đánh giá
tiện cho việc xây dựng các ứng dụng với framework, đồng thời thực thi các ứng dụng
đó bằng ngôn ngữ C++ để đạt hiệu suất cao hơn.
TensorFlow cho phép các nhà phát triển tạo một biểu đồ để thực hiện các tính
toán. Mỗi nút trong biểu đồ đại diện cho một phép toán và mỗi kết nối đại diện cho dữ
liệu. Do đó, thay vì xử lý các chi tiết nhỏ như tìm cách thích hợp để chuyển đầu ra của
một chức năng với đầu vào của chức năng khác, nhà phát triển có thể tập trung vào
logic tổng thể của ứng dụng.
28
Chương 3. Thực nghiệm và đánh giá
- Figure: Như một cái cửa sổ chứa tất cả những gì bạn sẽ vẽ trên đó.
- Axes: Thành phần chính của một figure là các axes (những khung nhỏ hơn để
vẽ hình lên đó). Một figure có thể chứa một hoặc nhiều axes. Nói cách khác, figure chỉ
là khung chứa, chính các axes mới thật sự là nơi các hình vẽ được vẽ lên.
- Axis: Chúng là dòng số giống như các đối tượng và đảm nhiệm việc tạo các
giới hạn biểu đồ.
29
Chương 3. Thực nghiệm và đánh giá
- Artist: Mọi thứ mà bạn có thể nhìn thấy trên figure là một artist như Text
objects, Line2D objects, collection objects. Hầu hết các Artists được gắn với Axes.
30
Chương 3. Thực nghiệm và đánh giá
Nhóm sử dụng bộ dữ liệu này cho mô hình thử nghiệm vì bộ dữ liệu có số mẫu
khá 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 hơn
các phương pháp học máy thông thường. Ngoài ra, bộ dữ liệu được cấu trúc dễ dàng
xử lý bởi thư viện Keras/TensorFlow và có nhiều kết quả đối chứng khi thực hiện so
sánh mô hình của chúng tôi với các kết quả của những nhóm nghiên cứu khác.
31
Chương 3. Thực nghiệm và đánh giá
import numpy as np
import cv2
Thêm bộ dữ liệu hình ảnh từ tập FER2013 và đưa qua hệ thống xử lí để chia tỉ lệ,
tăng cường bộ dữ liệu để thực hiện quá 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,
32
Chương 3. Thực nghiệm và đánh giá
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 tuần tự Sequentail và thêm các bộ lọc dữ liệu 3x3 với số lượng 32,
64, 128, 256, 512. Sau đó ta đưa các bộ lọc về thành một danh sách một chiều. Kế đến
là thêm các mạng thần kinh hỗ trợ cho việc huấn luyện. Ngoài ra trong đây còn chưa
các MaxPooling2D để giảm kích cỡ hình xuống nhưng vẫn giữ đặc trưng, Dropout để
chặn một số bộ lọc và một mạng thần kinh để tranh tình trạng học tủ bộ dữ liệu. Sau
khi đã chuẩn bị xong ta chuyên đổi lại mã dữ liệu.
Code:
emotion_model = Sequential()
emotion_model.add(MaxPooling2D(pool_size=(2, 2)))
emotion_model.add(Dropout(0.25))
emotion_model.add(MaxPooling2D(pool_size=(2, 2)))
33
Chương 3. Thực nghiệm và đánh giá
emotion_model.add(MaxPooling2D(pool_size=(2, 2)))
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 cùng ta huấn luyện bằng bộ dữ liệu đã được xử lí trước đó với chu kì là 50
số bước chạy của bộ dữ liệu train là 28709/64 và số bước chạy của bộ dữ liệu test là
7178/64. Sau đó lưu lại những 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')
34
Chương 3. Thực nghiệm và đánh giá
Code:
import tkinter as tk
import cv2
import os
import numpy as np
import cv2
Tạo danh sách tuần tự Sequentail và thêm các bộ lọc dữ liệu 3x3 với số lượng 32,
64, 128, 256, 512. Sau đó ta đưa các bộ lọc về thành một danh sách một chiều. Kế đến
là thêm các mạng thần kinh hỗ trợ cho việc huấn luyện. Ngoài ra trong đây còn chưa
các MaxPooling2D để giảm kích cỡ hình xuống nhưng vẫn giữ đặc trưng, Dropout để
chặn một số bộ lọc và một mạng thần kinh để tranh tình trạng học tủ bộ dữ liệu.
Chuyên file “model.h5” đã train vào.
35
Chương 3. Thực nghiệm và đánh giá
Code:
emotion_model = Sequential()
emotion_model.add(MaxPooling2D(pool_size=(2, 2)))
emotion_model.add(Dropout(0.25))
emotion_model.add(MaxPooling2D(pool_size=(2, 2)))
emotion_model.add(MaxPooling2D(pool_size=(2, 2)))
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 bằng webcam gán vào biến của chương trình để xử lí. Đầu tiên là
nhận diện khuôn mặt và vẽ ô vuông bao quanh khi đã nhận dạng được. Sau đó đưa
biến chưa hình ảnh đó vào model để phân tích và đưa ra tỉ lệ biểu cảm khuôn mặt cao
nhất. Sau khi xác định được biểu cảm ghi đoạn chữ tương ứng lên khung nhận diện
36
Chương 3. Thực nghiệm và đánh giá
khuôn mặt. và hiện ra kết quả. Vì đây là chạy theo thời gian thực nên chương trình sẽ
lặp lại nhiều lần cho đến khi 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:
if not ret:
break
bounding_box = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
num_faces = bounding_box.detectMultiScale(gray_frame,scaleFactor=1.3,
minNeighbors=5)
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],
37
Chương 3. Thực nghiệm và đánh giá
cv2.imshow('Video', cv2.resize(frame,(1200,860),interpolation =
cv2.INTER_CUBIC))
exit(0)
cap.release()
cv2.destroyAllWindows()
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 được hầu hết các biểu cảm. Trong đó mô hình khá nhạy khi
nhận biết biểu cảm hạnh phúc (happy).
38
C. PHẦN KẾT LUẬN
1. Kết quả đạt được
Đã xây dựng được mô hình huấn luyện nhận diện biểu cảm khuôn mặt sử dụng
thuật toán CNN. Chương trình được thêm một số bộ lọc và mạng thần kinh để cải
thiện độ chính xác nhận diện được biểu cảm tức giấn dễ dàng hơn so với ban đầu. Đây
là một kiến trúc mô hình CNN ứng dụng vào việc phát hiện biểu cảm khuôn mặt người
được đề xuất, tập ảnh 48x48 điểm ảnh đa cấp xám được sử dụng trong thực nghiệm để
đánh giá mô hình. Đây là một bài toán có tính ứng dụng cao có thể áp dụng trong
nhiều vấn đề thực tế, đặc biệt liên quan đến việc cảm nhận phản hồi của sinh viên về
phương pháp giảng dạy.
Nhận diện được biểu cảm khuôn mặt cơ bản 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 vẫn chưa nhận diện được hoàn
toàn do còn hạn chế về dữ liệu và 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 thế là mô hình không quá lớn(dưới 4 MB) nên có thể tiếp tục
tối ưu để triển khai trên các thiết bị, mô hình cũng có thể cài đặt trên các thiết bị nhúng
vốn yêu cầu chặt chẽ về bộ nhớ.
2. Khuyến nghị
Đây là báo cáo nghiên cứu khoa học của nhóm sinh viên Đại học Thủ Dầu Một.
Do hạn chế về mặt thời gian thì nhóm chỉ mới nghiên cứu về việc nhận diện biểu cảm
khuôn mặt bằng tập tin “model.h5” đã được huấn luyện với độ chính xác tương đối và
đã phát hiện được một số biểu cảm cơ bản. Những vấn đề nhóm chưa làm được như:
- Cải thiện độ chính xác bằng cách tăng số lượng bộ dữ liệu, ứng dụng nhiều
thuật toán mới hoặc kết hợp chúng lại với nhau. Ngoài ra có thể ứng dụng nhiều công
nghệ mới tiên tiến để nhận diện nhiều các biểu cảm mới hơn như kinh hoàng, căm
ghét, Kính sợ, sợ hãi một cách buồn khổ, tức giận một cách buồn bã, tức giận một cách
sợ hãi, ngạc nhiên một cách vui vẻ, ngạc nhiên một cách buồn bã, ngạc nhiên một cách
sợ hãi, ngạc nhiên một cách tức giận, ngạc nhiên một cách ghê tởm, ghê tởm một cách
vui vẻ, ghê tởm một cách buồn bã, ghê tởm một cách sợ hãi, ghê tởm một cách giận
dữ.
39
- Từ ứng dụng có thể thiết kế lên hệ thống thành chương trình hoàn thiện để
nhận diện biểu cảm khuôn mặt của sinh viên Thủ Dầu Một sau buổi học. Và có các
chức năng như điểm danh, gửi biểu cảm của sinh viên, hỗ trợ đề xuất các phương pháp
giảng dạy hoặc thông báo cho giảng viên tình hình biểu cảm của lớp tổng quan,…
Những vẫn đề được nêu trên chỉ là một phần nhóm muốn thực hiện. Ngoài ra trên
thực tế vẫn còn rất nhiều mặt cần nghiên cứu.
40
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 chính văn phòng, bộ giáo
dục và đào tạo.
[2]. Tổng quan về ước lượng mức độ biểu cảm của người qua biểu cảm khuôn
mặt và hướng tiếp cận dựa trên ảnh nhiệt - Nguyễn Phương Nam, Nguyễn
Viết Hưng
[3]. Mô hình khai phá ý kiến và phân tích biểu cảm khách hàng trực tuyến
trong 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 và convolutional neural
network để phân loại biểu cảm của 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/
41