Tải bản đầy đủ (.pdf) (63 trang)

NHẬN DẠNG CẢM XÚC KHUÔN MẶT SỬ DỤNG MẠNG NƠ RON TÍCH CHẬP

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.51 MB, 63 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
-----🙞🙜🕮🙞🙜-----

ĐỒ ÁN CHUYÊN NGÀNH
NGÀNH: KHOA HỌC MÁY TÍNH

ĐỀ TÀI : NHẬN DẠNG CẢM XÚC KHUÔN MẶT
SỬ DỤNG MẠNG NƠ RON TÍCH CHẬP
Giảng viên hướng dẫn: TS. Nguyễn Mạnh Cường
Sinh viên thực hiện:
1. Hoàng Lê Bách

Mã SV: 2019600913

2. Lê Thế Đức

Mã SV: 2019602129

3. Phùng Thị Hồng

Mã SV: 2019605033

Mã lớp: 20231IT6052002

Nhóm: 10

Hà Nội - 2023


i



MỤC LỤC
DANH MỤC NHỮNG TỪ VIẾT TẮT ............................................................... iv
DANH MỤC BẢNG BIỂU .................................................................................. v
DANH MỤC HÌNH ẢNH ................................................................................... vi
LỜI CẢM ƠN .................................................................................................... viii
LỜI NÓI ĐẦU ...................................................................................................... 1
Chương 1. BÀI TOÁN NHẬN DẠNG CẢM XÚC KHUÔN MẶT................... 3
1.1 Nhận dạng cảm xúc khuôn mặt là gì? ....................................................... 3
1.2 Quá trình phát triển của bài toán ............................................................... 6
1.3 Các thách thức trong vấn đề nhận dạng cảm xúc khuôn mặt.................... 7
1.4 Mô tả bài toán............................................................................................ 8
Chương 2. MỘT SỐ PHƯƠNG PHÁP NHẬN DẠNG CẢM XÚC KHUÔN
MẶT

.......................................................................................................... 10

2.1 Support Vector Machine (SVM) ............................................................. 10
2.1.1

Khái niệm........................................................................................ 10

2.1.2

Cách hoạt động ............................................................................... 11

2.1.3

SVM với các nhân kernel ............................................................... 12


2.1.4

Ưu điểm của thuật toán................................................................... 13

2.1.5

Nhược điểm của thuật toán ............................................................. 14

2.2 Thuật toán KNN ...................................................................................... 14
2.2.1

Khái niệm........................................................................................ 14

2.3 Các bước thực hiện thuật toán KNN ....................................................... 15
2.3.1

Ưu điểm .......................................................................................... 16

2.3.2

Nhược điểm .................................................................................... 16


ii
2.4 Mạng neuron tích chập (Convolutional Neural Network - CNN) .......... 16
2.4.1

Khái niệm về CNN ......................................................................... 16

2.4.2


Các lớp cơ bản của CNN ................................................................ 17

2.4.3

Các hàm kích hoạt thường sử dụng ................................................ 21

2.4.4

Ưu điểm của thuật toán................................................................... 22

2.4.5

Nhược điểm của thuật toán ............................................................. 22

Chương 3. THỰC NGHIỆM VỚI CNN ............................................................ 23
3.1 Môi trường thực nghiệm ......................................................................... 23
3.2 Bộ dữ liệu thực nghiệm ........................................................................... 23
3.2.1

Dữ liệu FER2013 ............................................................................ 24

3.2.2

Dữ liệu Cohn-Kanade mở rộng (CK+) ........................................... 25

3.3 Tiền xử lý dữ liệu .................................................................................... 27
3.3.1

Chuẩn hóa dữ liệu ........................................................................... 27


3.3.2

Tăng cường dữ liệu ......................................................................... 28

3.4 Xây dựng mô hình ................................................................................... 29
3.5 Huấn luyện .............................................................................................. 31
3.6 Lưu mô hình ............................................................................................ 32
3.7 Đánh giá mô hình .................................................................................... 33
3.8 Thử nghiệm trên dữ liệu thực tế .............................................................. 37
Chương 4. CHƯƠNG TRÌNH DEMO............................................................... 40
4.1 Giới thiệu về Framework sử dụng........................................................... 40
4.2 Phân tích thiết kế hệ thống ...................................................................... 41
4.2.1

Biểu đồ use case ............................................................................. 41

4.2.2

Mô tả chi tiết use case..................................................................... 41


iii
4.3 Kết quả thử nghiệm ứng dụng ................................................................. 48
4.3.1

Nhận dạng bằng ảnh ....................................................................... 48

4.3.2


Nhận dạng bằng camera ................................................................. 50

4.3.3

Xem dữ liệu và các kết quả huấn luyện với dữ liệu ....................... 51

KẾT LUẬN ......................................................................................................... 53
TÀI LIỆU THAM KHẢO ................................................................................... 54


iv

DANH MỤC NHỮNG TỪ VIẾT TẮT
CNN

Convolution Neural Networks

ReLU

Rectified Linear Unit

SVM

Support Vector Machine

GPU

Graphics Processing Unit

FER


Facial Emotion Recognition

HIC

Human-Computer Interaction

AU

Action Units

FACS

Facial Action Coding System

KNN

K-Nearest Neighbors


v

DANH MỤC BẢNG BIỂU
Biểu đồ 3.1: Mô tả dữ liệu FER2013 ................................................................. 24
Biểu đồ 3.2: Mô tả dữ liệu từ CK+ .................................................................... 26
Biểu đồ 3.3: Biểu đồ độ chính xác và mất mát trong quá trình huấn luyện với
fer2013................................................................................................................. 34
Biểu đồ 3.4: Biểu đồ độ chính xác và mất mát trong quá trình huấn luyện với ck+
............................................................................................................................. 34
Biểu đồ 3.5: Ma trận nhầm lẫn của mô hình huấn luyện bằng fer2013 ............. 37

Biểu đồ 3.6: Ma trận nhầm lẫn của mô hình huấn luyện bằng ck+ ................... 37
Biểu đồ 4.1: Biều đồ use case tổng quát ............................................................ 41


vi

DANH MỤC HÌNH ẢNH
Hình 1.1: Hình minh họa 7 cảm xúc cơ bản của con người .................................. 5
Hình 1.2: Quy trình tiếp cận FER dựa trên CNN.................................................. 8
Hình 1.3: Cấu trúc tổng quan của hệ thống nhận dạng khuôn mặt ....................... 9
Hình 2.1: SVM trong không gian hai chiều và ba chiều ..................................... 10
Hình 2.2: Ví dụ về siêu phẳng phân tách dữ liệu ................................................ 11
Hình 2.3: Minh họa dữ liệu phân tách tuyến tính và không phân tách tuyến tính
............................................................................................................................. 12
Hình 2.4: Dữ liệu được ánh xạ vào không gian 3 chiều để tăng khả năng phân tách
tuyến tính. ............................................................................................................ 13
Hình 2.5: Mô hình các lớp cơ bản của CNN ....................................................... 17
Hình 2.6: Ví dụ một mô hình CNN ..................................................................... 18
Hình 2.7: Mô tả về lớp tích chập ......................................................................... 19
Hình 2.8: Mô tả về lớp pooling (Kỹ thuật Max pooling) .................................... 20
Hình 2.9: Mô tả lớp kết nối đầy đủ ..................................................................... 20
Hình 2.10: Đồ thị hàm ReLU .............................................................................. 22
Hình 3.1: Minh họa từ bộ dữ liệu fer2013 .......................................................... 25
Hình 3.2: Minh họa từ bộ dữ liệu CK+ ............................................................... 26
Hình 3.3: Hàm đọc và chuẩn hóa dữ liệu ............................................................ 27
Hình 3.4: Hàm tăng cường dữ liệu ...................................................................... 28
Hình 3.5: Mô hình mạng CNN được xây dựng................................................... 30
Hình 3.6: Huấn luyện mô hình ............................................................................ 31
Hình 3.7: Quá trình huấn luyện với bộ dữ liệu FER2013 ................................... 31
Hình 3.8: Quá trình huấn luyện với bộ dữ liệu CK+ ......................................... 32



vii
Hình 3.9: Lưu mô hình với bộ trọng số tốt nhất ................................................. 32
Hình 3.10: Lưu cấu trúc của mô hình dưới dạng JSON...................................... 32
Hình 3.11: Lưu lịch sử huấn luyện của mô hình ................................................. 33
Hình 3.12: Độ chính xác của mô hình huấn luyện bằng fer2013 trên tập kiểm thử
............................................................................................................................. 35
Hình 3.13: Độ chính xác của mô hình huấn luyện bằng ck+ trên tập kiểm thử . 35
Hình 3.14: Báo cáo phân loại cho từng lớp của mô hình huấn luyện bằng fer2013
............................................................................................................................. 35
Hình 3.15: Báo cáo phân loại cho từng lớp của mô hình huấn luyện bằng ck+ . 36
Hình 3.16: Ảnh thực tế chưa được gắn nhãn ...................................................... 38
Hình 3.17: Nhận dạng bằng mô hình huấn luyện với fer2013............................ 38
Hình 3.18: Nhận dạng bằng mô hình huấn luyện với ck+ .................................. 39
Hình 4.1: Giao diện người dùng khởi động của ứng dụng Streamlit .................. 48
Hình 4.2: Giao diện ứng dụng sau khi tải ảnh lên............................................... 49
Hình 4.3: Giao diện ứng dụng sau khi click chọn nhận dạng cảm xúc............... 49
Hình 4.4: Giao diện ứng dụng nhận dạng bằng camera ...................................... 50
Hình 4.5: Giao diện ứng dụng hiển thị kết quả nhận dạng qua camera theo thời
gian thực .............................................................................................................. 50
Hình 4.6: Thời gian dự đoán của mô hình CNN trên thử nghiệm thực tế .......... 51
Hình 4.7: Màn hình chức năng xem dữ liệu........................................................ 51


viii

LỜI CẢM ƠN
Để thực hiện và hồn thành tớt đờ án chuyên ngành Khoa học máy tính, chúng
em đã nhận được sự giúp đỡ và hướng dẫn rất tận tình của thầy giáo Tiến Sỹ

Nguyễn Mạnh Cường thuộc Khoa Công nghệ thông tin, trường Đại học Công
Nghiệp Hà Nội. Với tình cảm sâu sắc và chân thành, xin phép chúng em được bày
tỏ lòng biết ơn đến thầy.
Sự giúp đỡ và sự đờng hành của thầy đã đóng vai trị vơ cùng quan trọng trong
q trình nghiên cứu của chúng em. Cả nhóm rất mong ḿn nhận được ý kiến
đóng góp từ thầy để hoàn thiện đề tài của chúng em. Sự phản hời và góp ý từ thầy
sẽ giúp chúng em nắm bắt được các khía cạnh cần cải thiện và phát triển thêm ý
tưởng mới. Chúng em rất trân trọng mọi đóng góp và mong được học hỏi thêm từ
sự chuyên môn và kinh nghiệm của thầy. Chúng em xin chúc thầy luôn dồi dào
sức khoẻ, vui vẻ và thành công trong cuộc sống.
Chúng em xin chân thành cảm ơn!

Nhóm sinh viên thực hiện

Nhóm 10


LỜI NÓI ĐẦU
Trong kỷ nguyên công nghệ 4.0, cùng với sự bùng nở của trí ṭ nhân tạo, đã
có rất nhiều cơng trình nghiên cứu máy học được cơng bớ. Trong đó, lĩnh vực thị
giác máy tính nói chung cũng như nhận dạng hình ảnh nói riêng là mợt trong các
lĩnh vực được rất đông người quan tâm hiện nay. Nhận dạng hình ảnh được ứng
dụng rợng rãi trong c̣c sống hiện đại, từ ứng dụng trong quản lý nhân sự, sản
phẩm,…đến ứng dụng cho các hệ thống an ninh, mang lại sự thuận tiện, an toàn
hơn cho mọi người. Do vậy, nhận dạng hình ảnh là mợt lĩnh vực rất rất quan trọng.
Mợt trong các bài tốn quan trọng của nhận dạng hình ảnh đó là bài toán nhận
dạng cảm xúc khuôn mặt. Cảm xúc khuôn mặt là một trong những phương thức
quan trọng nhất để thể hiện cảm xúc của con người trong giao tiếp xã hội. Tự động
nhận dạng biểu cảm khuôn mặt đã trở thành một chủ đề “yêu thích” trong lĩnh
vực nghiên cứu thị giác máy tính. Việc ứng dụng nhận dạng biểu cảm khn mặt

mang lại những lợi ích lớn, bao gờm tự đợng hoá các dịch vụ y tế, ngân hàng,
quản lý dịch vụ khách hàng hiệu quả, phân tích phản hời của khách hàng và có
thể giúp xác định các hành vi đáng ngờ trong đám đông, có thể được sử dụng để
ngăn chặn tội phạm tiềm tàng.
Trong đồ án chuyên ngành Khoa học máy tính, chúng ta sẽ đi sâu vào bài toán
nhận dạng cảm xúc khuôn mặt sử dụng mạng nơ-ron nhân tạo (CNN). Mục tiêu
của đề tài là nắm vững cách thức hoạt động của mạng CNN và các bước thực hiện
để có thể nhận dạng cảm xúc khn mặt từ ảnh đầu vào.
Để làm được điều đó, đồ án sẽ có cấu trúc gờm bớn chương:
Chương 1: Mơ tả bài tốn nhận dạng cảm xúc khn mặt, đi từ khái niệm, lịch
sử phát triển đến chi tiết của bài tốn. Đờng thời trình bày về cấu trúc hệ thống
nhận dạng khuôn mặt người để từ đó đưa ra các phương pháp nhận dạng phù hợp.
Chương 2: Trình bày về các kỹ thuật có thể sử dụng để giải quyết bài toán. Từ
đó, lựa chọn kỹ thuật phù hợp nhất để nghiên cứu và tiến hành áp dụng vào bài
toán.


2
Chương 3: Trình bày kết quả thực nghiệm khi áp dụng phương pháp đã chọn
vào bài toán. Phần này sẽ nêu chi tiết các bước tiến hành và kết quả sau khi áp
dụng phương pháp đã chọn. Đồng thời, đánh giá kết quả nhận dạng của mơ hình
với các bợ dữ liệu khác nhau.
Chương 4: Xây dựng chương trình nhận dạng cảm xúc khn mặt qua hình
ảnh và webcam theo thời gian thực. Chương trình sẽ sử dụng kết quả ở chương 3
để tiến hành áp dụng vào bài toán nhận dạng cảm xúc.
Qua đồ án này, hy vọng rằng chúng ta sẽ có cái nhìn rõ hơn về bài tốn nhận
dạng cảm xúc sử dụng mạng nơ-ron tích chập để có thể ứng dụng bài tốn vào
giải qút các vấn đề trong thực tế.



3

Chương 1. BÀI TỐN NHẬN DẠNG CẢM XÚC
KHN MẶT
1.1 Nhận dạng cảm xúc khuôn mặt là gì?
Biểu cảm khuôn mặt là mợt trong những hình thức giao tiếp phi ngơn ngữ
quan trọng nhất được sử dụng để truyền đạt thông tin về trạng thái cảm xúc của
một người. Theo nghiên cứu của nhà tâm lý học Albert Mehrabian, có ba ́u tớ
chính ảnh hưởng đến việc trùn đạt cảm xúc hoặc thái độ trong giao tiếp trực
tiếp là ngôn ngữ, giọng nói và hành vi phi ngơn ngữ (ngơn ngữ cơ thể). Mehrabian
đã tiến hành các nghiên cứu liên quan đến chủ đề này từ những năm 1960. Dựa
trên kết quả của hai cuộc thử nghiệm được tiến hành vào năm 1967, ông đã xây
dựng quy tắc giao tiếp 7-38-55%. Quy tắc này chỉ ra rằng khi một thông điệp từ
một người chuyển đến người khác, phần ảnh hưởng của ngơn ngữ chỉ chiếm 7%,
phần giọng nói chiếm 38%, trong khi ngôn ngữ cơ thể người chiếm đến 55% mà
phần lớn trong đó được biểu hiện trên cảm xúc khuôn mặt. Như vậy, có thể thấy
rằng cảm xúc khn mặt mang nhiều thơng tin và có ảnh hưởng rất lớn đến hiệu
quả giao tiếp.
Có nhiều quan điểm trong việc định nghĩa khái niệm và phân loại cảm xúc.
Các nhà nghiên cứu đã chỉ ra rằng cảm xúc trên khuôn mặt là phổ quát và bẩm
sinh trong tất cả các chủng tộc, giới tính và độ tuổi. Nghiên cứu của tiến sĩ Paul
Ekman đã chỉ ra, mỗi người chúng ta có thể biểu hiện 6 cảm xúc cơ bản trên khuôn
mặt, đó là: vui, buồn, sợ hãi, tức giận, ngạc nhiên và ghê tởm. Tuy nhiên, nghiên
cứu của các nhà khoa học thuộc đại học Glasgow (Scotland) lại cho rằng khuôn
mặt chúng ta chỉ có 4 biểu cảm là vui, b̀n, sợ hãi (bao hàm cả ngạc nhiên) và tức
giận (bao hàm cả sự ghê tởm). Cơ sở dữ liệu Radboud Faces Database thì phân
chia cảm xúc 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. Trong khi Dataset Kaggle FERF2013 thì lại chỉ có 7 loại cảm xúc.



4
Bảy loại cảm xúc trong dataset Kaggle FER-F2013 được mô tả như sau:
Tức giận (angry): Giận dữ là một cảm xúc thường liên quan đến sự bực dọc nhỏ đến
sự bùng nổ lớn. Sự tức giận biểu hiện trên khuôn mặt khiến chúng ta hạ thấp lông mày,
ấn chặt môi vào nhau và phồng mắt.
Ghê tởm, chán ghét (disgust): Chán ghét là cảm xúc thường liên quan với những
thứ mất vệ sinh, không ăn được, truyền nhiễm hoặc xúc phạm. Chán ghét thể hiện trên
khuôn mặt làm họ có xu hướng nâng môi trên, nhăn mũi và nâng má.
Sợ hãi (fear): Nỗi sợ là một cảm xúc thường liên quan với mợt mới đe dọa hay tình
h́ng nguy hiểm. Khi trải qua nỗi sợ, con người thường biểu hiện trên gương mặt như
nhướn mày, khẽ hé miệng và mở mắt ra một cách rộng hơn bình thường.
Vui vẻ, hạnh phúc (happy): Hạnh phúc là một cảm xúc thường liên quan với trạng
thái của tâm trí phản ánh sự hài lịng, thỏa mãn và thích thú, là mợt trong những cảm
xúc phổ biến nhất. Sự hạnh phúc được được thể hiện thông qua biểu cảm trên khuôn
mặt khiến chúng ta nâng khóe miệng lên.
Khơng cảm xúc (neutral): Khn mặt khơng cảm xúc biểu hiện khi người đó không
bị ảnh hưởng bởi các yêu tố thay đổi cảm xúc. Các chi tiết trên khn mặt giữ ngun
các hình dạng vị trí, khơng bị xê dịch thay đổi.
Buồn bã (sad): Sự buồn bã là một cảm xúc thường liên quan đến cảm giác thất vọng,
sự mất mát hay không được giúp đỡ. Nỗi b̀n được thể hiện thơng qua việc hạ thấp
khóe miệng và nâng phần bên trong của chân mày.
Ngạc nhiên (surprise): Ngạc nhiên là cảm xúc thường liên quan với tình trạng đột
ngột. Sự ngạc nhiên khiến ai đó thể hiện cảm xúc trên khuôn mặt thông qua việc cong
lông mày, mở to mắt và hất hàm.


5

Hình 1.1: Hình minh họa 7 cảm xúc cơ bản của con người


Từ sự ảnh hưởng lớn của cảm xúc khn mặt trong giao tiếp thì ta cần phải nhận
dạng cảm xúc khuôn mặt. Hiểu một các đơn giản, nhận dạng cảm xúc khuôn mặt là quá
trình xác định và phân loại cảm xúc của con người dựa trên nét mặt. Nhận dạng cảm xúc
khn mặt có thể phản ánh trực quan trạng thái tinh thần của một người, qua đó, ta nhận
được các thông tin.
Trước khi Khoa học máy tính ra đời, việc nhận dạng cảm xúc khuôn mặt chủ yếu
dựa vào khả năng tự nhiên của con người. Tuy nhiên, với sự ra đời và phát triển nhanh
chóng của công nghệ, nhất là sự phát triển của Khoa học máy tính thì nhận dạng cảm
xúc khn mặt - Facial Emotion Recognition (FER) đã trở thành một chủ đề nghiên
cứu quan trọng trong hầu hết các lĩnh vực, từ trí tuệ nhân tạo, chơi game đến tương tác
người – máy (HCI) và tâm lý học.
Ngày nay, nhận dạng cảm xúc khn mặt có nhiều ứng dụng thực tế trong các lĩnh
vực khác nhau:


Giáo dục: Phản ứng của người học trong thời gian thực và sự tham gia vào
nội dung là giáo dục là một thước đo lường cho hiệu quả của bài giảng.



Tiếp thị: Đây là mợt cách tụt vời để các công ty kinh doanh phân tích
cách khách hàng phản hồi với quảng cáo, sản phẩm, bao bì và thiết kế cửa
hàng của họ.


6


Chơi game: Với sự ra đời của game thực tế ảo gần với trải nghiệm thực tế.
Nhận dạng cảm xúc khn mặt đóng mợt vai trị quan trọng để cải thiện trải

nghiệm chơi trị chơi.



Bảo mật: Nó có thể giúp xác định hành vi đáng ngờ trong đám đông và có
thể được sử dụng để ngăn chặn tội phạm và những kẻ khủng bớ tiềm năng.



Chăm sóc sức khỏe: Nó có thể hữu ích trong việc tự động hóa dịch vụ y tế.
Cả sức khỏe thể chất và tinh thần có thể được phân tích thơng qua ứng dụng
này.



Dịch vụ khách hàng: Quản lý dịch vụ khách hàng có thể hiệu quả hơn bằng
cách sử dụng hệ thống nhận dạng cảm xúc khuôn mặt. Phân tích phản hồi
của khách hàng và phản ứng của máy tính sẽ đảm bảo tương tác máy tính
với con người trong cuộc sống thực.

1.2 Quá trình phát triển của bài toán
Bài toán nhận dạng cảm xúc khuôn mặt đã có lịch sử nghiên cứu lâu dài. Việc
phát hiện, nhận dạng cảm xúc khuôn mặt là bước phát triển tiếp theo của bài tốn
nhận dạng khn mặt. Từ năm 1964, Woodrow Bledsoe đã bắt đầu nghiên cứu về
việc sử dụng máy tính để nhận dạng khuôn mặt con người. Ông là người đầu tiên
xây dựng chương trình nhận dạng khuôn mặt tự động kết hợp với hệ thớng máy
tính, bằng cách phân loại khn mặt trên cơ sở mốc chuẩn được nhập vào bằng
tay. Các thông số để phân loại là khoảng cách chuẩn, tỉ lệ giữa các điểm như góc,
mắt, miệng, chóp mũi và chóp cằm. Sau này, tại Bell Labs đã phát triển một kĩ
tḥt dựa trên vector với 21 tḥc tính khn mặt được phát hiện bằng cách sử

dụng kỹ thuật phân loại tiêu chuẩn mẫu. Các thuộc tính được lựa chọn đánh giá
chủ ́u là: màu tóc, chiều dài của đơi tai, độ dày môi... Đến năm 1970, hệ thống
FACS (Facial Action Coding System), một hệ hệ thống mã hóa các đơn vị hành
đợng (AU) trên khn mặt để phân tích cảm xúc ra đời. Sau đó được được phát
triển bởi Paul Ekman và Wallace Friesen. Năm 1986, hệ thống WISARD dựa trên
mạng nơron đã có thể nhận biết được tình trạng và biểu cảm khuôn mặt một cách
hạn chế.


7
Từ cuối những năm 90, các nhà nghiên cứu bắt đầu áp dụng các kỹ thuật học
máy để nhận dạng cảm xúc khuôn mặt. Tuy nhiên, phải đến những năm 2000 thì
kỹ thuật này mới bắt đầu được sử dụng rộng rãi. Các hệ thống nhận dạng cảm xúc
khuôn mặt sử dụng các phương pháp học máy dựa trên các tḥc tính hình học
của khn mặt. Hệ thớng u cầu trích x́t đặc trưng khn mặt thủ cơng. Với
kỹ tḥt học máy, hệ thống nhận dạng cảm xúc khuôn mặt có hiệu śt khá cao
trên các bợ dữ liệu nhỏ nhưng lại gặp khó khăn khi xử lý các bộ dữ liệu lớn.
Từ năm 2010 đến nay, các kỹ thuật học sâu đã được áp dụng rợng rãi vào bài
tốn nhận dạng cảm xúc khuôn mặt. Các phương pháp này có khả năng trích xuất
đặc trưng khuôn mặt tự động và hiệu quả, có khả năng học được các đặc trưng
phức tạp của khuôn mặt từ dữ liệu lớn và đa dạng. Kỹ tḥt học sâu có thể cải
thiện đợ chính xác và tin cậy trong việc nhận dạng cảm xúc khn mặt, nhưng lại
địi hỏi bợ dữ liệu h́n luyện và tài nguyên tính toán để huấn luyện các mơ hình
này.
Trong những năm gần đây, ngoài nhận diện cảm xúc khuôn mặt 2D, các kỹ
thuật nhận dạng cảm xúc 3D và thông qua kết cấu da cũng đang được nghiên cứu
phát triển và ứng dụng. Các kỹ thuật nhận dạng đó giúp khắc phục các hạn chế
của ảnh 2D về các vấn đề chiếu sáng, hình dạng, kết cấu khn mặt,…trong ảnh
2D.
Có thể thấy, các kỹ tḥt nhận dạng cảm xúc khuôn mặt đã phát triển đáng kể

trong vài thập kỷ qua. Từ các phương pháp truyền thống dựa trên đặc điểm hình
học đến các mơ hình học sâu, các nhà nghiên cứu đã có những bước tiến lớn trong
việc phát triển các phương pháp có độ chính các cao hơn cho bài toán nhận dạng
cảm xúc khuôn mặt.
1.3 Các thách thức trong vấn đề nhận dạng cảm xúc khn mặt
Ngồi những thành tựu đã đạt được, vấn đề nhận dạng cảm xúc khn mặt
cịn tờn tại những hạn chế. Đầu tiên, cảm xúc khuôn mặt của con người ngồi
những cảm xúc cơ bản thì cịn rất nhiều những cảm xúc đa dạng khác. Hơn nữa,
vì nhận dạng cảm xúc khuôn mặt dựa trên đặc điểm của khuôn mặt nên thực tế


8
không thể biết chính xác được cảm xúc đó là đúng hay không. Về các kỹ thuật
nhận dạng cũng gặp khó khăn khi ảnh khn mặt khơng chính diện, q bé hay
trong điều kiện ánh sáng không thuận lợi.

1.4 Mô tả bài toán
Nhận dạng cảm xúc khuôn mặt là một bài tốn phân loại các biểu cảm trên
khn mặt con người thành các nhãn cảm xúc như vui, buồn, tức giận,… Đây là
mợt bài tốn phân lớp tương đới tiêu chuẩn, đã được nghiên cứu trong một thời
gian khá dài. Bài tốn nhận đầu vào là ảnh khn mặt được lấy từ nguồn dữ liệu
tĩnh (chẳng hạn như file, database), hoặc động (từ livestream, webcam, camera,
video,…). Đầu ra của bài tốn là nhãn cảm xúc tương ứng với khn mặt đó. Vấn
đề bài toán cần giải quyết là làm sao để xây dựng mợt mơ hình có khả năng phân
lớp với đợ chính xác chấp nhận được.

Hình 1.2: Quy trình tiếp cận FER dựa trên CNN

Hình 1.2 minh họa về quy trình tiếp cận bài toán FER dựa trên CNN. Bài toán
nhận đầu vào (input) là ảnh một khuôn mặt. Sau khi được đưa vào mạng, đầu ra

của bài toán là một biểu cảm khuôn mặt duy nhất được nhận dạng dựa trên đầu ra
của softmax.
Hệ thống nhận dạng cảm xúc khn mặt phải xử lý được thơng tin hình ảnh
đầu vào, phát hiện vùng khuôn mặt, phân lớp cảm xúc của vùng khuôn mặt và


9
hiển thị kết quả nhận dạng. Cấu trúc hệ thống được thể hiện như sau:

Hình 1.3: Cấu trúc tổng quan của hệ thống nhận dạng khuôn mặt

Phát hiện khuôn mặt (face detection): Phát hiện khuôn mặt sẽ lấy ra tất cả
các khn mặt trong mợt hình ảnh. Chức năng này làm nhiệm vụ xác định vị trí,
kích cỡ của mợt hoặc nhiều khuôn mặt trên ảnh chụp từ đó tách ra phần mặt. Phần
ảnh mặt được tách ra thường nhỏ hơn nhiều so với ảnh chụp ban đầu, nó sẽ là các
khn mặt cần tìm và chức năng trích chọn đặc trưng sẽ sử dụng các ảnh được
tách ra này.
Tiền xử lý (Pre-Processing): Ch̉n hóa hình ảnh, phân tách các tập dữ liệu
trong CSDL để phù hợp với mơ hình h́n lụn, ch̉n hóa kích cỡ, tỷ lệ ảnh
trong CSDL và ảnh cần nhận dạng hỗ trợ cho việc huấn luyện, thử nghiệm và thực
nghiệm.
Trích chọn đặc trưng (FE): Tìm ra các đặc trưng chính của ảnh mặt, từ các
đặc trưng này hình thành các vector đặc trưng, các vector này sẽ được sử dụng để
so sánh sự giống nhau giữa ảnh mặt cần nhận dạng và ảnh mặt trong CSDL.
Nhận dạng/Phân lớp: Bước nhận dạng (recognition) hay phân lớp
(classification), tức là xác định danh tính (identity) hay nhãn (label) của ảnh đó là
thuộc lớp cảm xúc nào.


10


Chương 2. MỘT SỐ PHƯƠNG PHÁP NHẬN
DẠNG CẢM XÚC KHUÔN MẶT
2.1 Support Vector Machine (SVM)
2.1.1 Khái niệm
Support Vector Machine (SVM) là mợt trong những tḥt tốn Học có Giám
sát phở biến nhất, được sử dụng cho các bài toán Phân loại cũng như Hồi quy.
Tuy nhiên, chủ yếu, nó được sử dụng cho các vấn đề Phân loại trong Học máy
SVM là mợt mơ hình phân loại hoạt đợng bằng việc xây dựng mợt siêu phẳng
(hyperplane) có (n - 1) chiều trong không gian n chiều của dữ liệu sao cho siêu
phẳng này phân loại các lớp một cách tối ưu nhất (Khoảng cách từ các đối tượng
gần nhất tới siêu phẳng là cực đại).
Nói cách khác, cho mợt tập dữ liệu có nhãn (học có giám sát), tḥt tốn sẽ
dựa trên dữ liệu học để xây dựng một siêu phẳng tối ưu được sử dụng để phân loại
dữ liệu mới. Ở khơng gian 2 chiều thì siêu phẳng này là 1 đường thẳng phân cách
chia mặt phẳng không gian thành 2 phần tương ứng 2 lớp với mỗi lớp nằm ở 1
phía của đường thẳng.
Siêu phẳng tạo ra biên giới phân chia 2 lớp của dữ liệu.

Hình 2.1: SVM trong không gian hai chiều và ba chiều


11
2.1.2 Cách hoạt động
Với một tập dữ liệu huấn luyện cho trước ban đầu gồm n mẫu trong không
gian Rd+1 (d tḥc tính dữ liệu và 1 tḥc tính lớp) với các mẫu dữ liệu thuộc vào
1 trong 2 lớp (tạm ký hiệu là lớp +1 và lớp -1). Kỹ thuật SVM bao gồm 2 giai
đoạn như sau:
Giai đoạn huấn luyện:
Giai đoạn này là quá trình đi tìm một siêu phẳng phân tách tốt nhất tập dữ liệu

huấn luyện thành hai lớp +1 và -1. Trong không gian hai chiều, siêu phẳng là một
đường thẳng, trong không gian ba chiều là một mặt phẳng. Một cách tổng quát,
trong không gian d chiều ta gọi chúng là siêu phẳng.
Gọi x  Rd là các điểm trong không gian d chiều, một siêu phẳng sẽ có dạng:
<w, x>+ b = 0, trong đó w  Rd là véc tơ chuẩn của siêu phẳng và b  R là ngưỡng
(bias). Với <w, x> là tích vô hướng của hai véc tơ được định nghĩa trong không
gian Rd. Dễ thấy rằng để xác định một siêu phẳng như vậy, chúng ta cần xác định
bộ các hệ số {w, b} tương ứng.

Hình 2.2: Ví dụ về siêu phẳng phân tách dữ liệu

Một siêu phẳng phân tách bộ dữ liệu thành hai miền (+1 và -1) mợt cách tớt
nhất được định nghĩa là siêu phẳng có khoảng cách lề (margin) giữa hai lớp đạt
cực đại. Hình 1.2. chỉ ra ví dụ về mợt siêu phẳng phân tách hai lớp dữ liệu một
cách tốt nhất trong đó lề giữa hai lớp được tính bằng 2 / ||w||. ||w|| là Norm 2, là


12
khoảng các euclidean từ w tới O và bằng căn bậc hai của tổng bình phương các
giá trị.
Giai đoạn dự đoán
Sau khi đã tìm ra siêu phẳng tối ưu, SVM sẽ sử dụng nó để phân loại dữ
liệu mới dựa vào vị trí của điểm dữ liệu mới so với siêu phẳng. Nếu điểm dữ liệu
nằm ở một phía của siêu phẳng, nó sẽ được phân vào lớp tương ứng.

2.1.3 SVM với các nhân kernel
Trên thực tế, dữ liệu có thể phân tách tuyến tính hoặc không phân tách tuyến
tính. SVM có thể hoạt động tốt trên dữ liệu phân tác tuyến tính.

Hình 2.3: Minh họa dữ liệu phân tách tuyến tính và không phân tách tuyến tính


Trường hợp dữ liệu không phân tách tuyến tính, ta sử dụng các hàm kernel.
Các hàm kernel ánh xạ các đối tượng sang một không gian với số chiều lớn hơn.
Trong không gian mới này, dữ liệu có nhiều khả năng phân tác tuyến tính hơn, từ
đó kết quả phân lớp có thể sẽ tốt hơn.


13

Hình 2.4: Dữ liệu được ánh xạ vào không gian 3 chiều để tăng khả năng phân tách tuyến tính.

2.1.4 Ưu điểm của tḥt tốn
Là mợt kĩ tḥt phân lớp khá phổ biến, SVM thể hiện được nhiều ưu điểm
trong sớ đó có việc tính tốn hiệu quả trên các tập dữ liệu lớn. Có thể kể thêm mợt
sớ ưu điểm của phương pháp này như:
Xử lý trên không gian sớ chiều cao: SVM là mợt cơng cụ tính tốn hiệu quả
trong không gian chiều cao, trong đó đặc biệt áp dụng cho các bài toán phân loại
văn bản và phân tích quan điểm nơi chiều có thể cực kỳ lớn.
Tiết kiệm bợ nhớ: Do chỉ có mợt tập hợp con của các điểm được sử dụng trong
quá trình huấn luyện và ra quyết định thực tế cho các điểm dữ liệu mới nên chỉ có
những điểm cần thiết mới được lưu trữ trong bộ nhớ khi ra quyết định


14
Tính linh hoạt - phân lớp thường là phi tuyến tính. Khả năng áp dụng Kernel
mới cho phép linh đợng giữa các phương pháp tuyến tính và phi tuyến tính từ đó
khiến cho hiệu suất phân loại lớn hơn.
2.1.5 Nhược điểm của tḥt tốn
u cầu tài ngun tính tốn cao khi số lượng dữ liệu tăng lên. Trong trường
hợp số lượng tḥc tính (p) của tập dữ liệu lớn hơn rất nhiều so với sớ lượng dữ

liệu (n) thì SVM cho kết quả khá tời.
Chưa thể hiện rõ tính xác suất: Việc phân lớp của SVM chỉ là việc cố gắng
tách các đối tượng vào hai lớp được phân tách bởi siêu phẳng SVM. Điều này
chưa giải thích được xác suất xuất hiện của một thành viên trong một nhóm là như
thế nào.
2.2 Tḥt tốn KNN
2.2.1 Khái niệm
Mợt trong những phương pháp phân lớp đơn giản nhất là dựa trên lớp của các
láng giềng gần nhất của mẫu cần phân lớp. Cho một mẫu x biểu diễn một đối
tượng cần phân lớp. Mẫu x sẽ được gán một nhãn lớp mà nhãn đó xuất hiện phổ
biến nhất trong tập các lớp của các láng giềng của x. Hiển nhiên, các láng giềng
của x đều đã được phân lớp từ trước. Phương pháp này dựa trên ý tưởng giả định
rằng một đối tượng x sẽ có các đặc điểm, hành vi tương tự như các láng giềng của
nó, và do vậy sẽ là hợp lý nếu nó tḥc cùng mợt lớp với các láng giềng gần nhất.
Kỹ thuật phân lớp dựa trên láng giềng gần nhất được sử dụng rộng rãi trong
các hệ thống nhận dạng mẫu, nhận dạng đối tượng, nhận dạng sự kiện, phân loại
dữ liệu văn bản... Khái niệm “láng giềng” dùng để chi các đới tượng có khoảng
cách hoặc độ tương đồng “gần” với đối tượng x. Từ đây, ta cần phải định nghĩa
một độ đo khoảng cách hoặc độ đo sự khác biệt giữa các đối tượng. Đây là 5 cách
cơ bản để tính khoảng cách 2 điểm dữ liệu x, y có k tḥc tính:
• Khoảng cách Manhattan:
d(x, y) = |𝑥1-𝑦1| + |𝑥2-𝑦2| + … +|𝑥𝑚-𝑦𝑚|


15
• Khoảng cách Chebyshev:
d(x, y) = Max |𝑥𝑖 − 𝑦𝑖 |
𝑖

• Khoảng cách Cosin:

d(x,y) = 1 -

𝑥1 𝑦1 + 𝑥2 𝑦2 + ...+𝑥𝑚 𝑦𝑚
2

√𝑥1 +𝑥2 2 +...+𝑥𝑚 2 .√𝑦1 2 +𝑦2 2 +...+𝑦𝑚 2

• Khoảng cách Euclidean:
d(x, y) = √(𝑥1 − 𝑦1 )2 + (𝑥2 − 𝑦2 )2 + . . . + (𝑥𝑚 − 𝑦𝑚 )2
• Khoảng cách Square Euclidean:
d(x, y) = (𝑥1 − 𝑦1 )2 + (𝑥2 − 𝑦2 )2 + . . . + (𝑥𝑚 − 𝑦𝑚 )2
2.3 Các bước thực hiện thuật toán KNN
Các bước thực hiện tḥt tốn có thể đơn giản như sau:
1: Ch̉n bị dữ liệu (dữ liệu đã được làm sạch, chuyển đởi, sẵn sàng đưa
vào phân tích), chia tập dữ liệu ra làm 2: training data set (để train
model) và test data set (để kiểm chứng model).
2: Chọn một số K bất kỳ, K là một số nguyên, tức là số điểm dữ liệu đã
phân loại có khoảng cách ngần nhất (láng giềng gần nhất) với điểm dữ
liệu chưa phân loại.
3: Tính tốn khoảng cách giữa điểm dữ liệu chưa phân loại với các điểm
dữ liệu đã được phân loại.
4: Với kết quả có được, sắp xếp theo thứ tự với giá trị khoảng cách từ bé
nhất đến lớn nhất.
5: Chọn ra các điểm dữ liệu có giá trị khoảng cách bé nhất với điểm dữ
liệu cần phân loại dựa trên K cho trước, ví dụ nếu K = 2 tức là chọn ra
2 điểm dữ liệu gần nhất, K = 3 là 3 điểm dữ liệu gần nhất.
6: Tiếp theo xem xét giá trị của biến mục tiêu (biến phân loại) của các
điểm dữ liệu gần nhất, chọn ra giá trị xuất hiện nhiều nhất và gán cho
điểm dữ liệu chưa phân loại, ví dụ K = 3, trong đó có 2 điểm dữ liệu



16
được phân loại là A, điểm còn lại là B thì điểm dữ liệu chưa phân loại
lúc này sẽ được phân loại là A.
7: Kiểm chứng lại độ hiệu quả của model trên test data set, và sử dụng các
phương pháp đánh giá khác nhau.
8: Thay đổi giá trị K khác nhau và thực hiện lại quy trình để tìm được K
tới ưu nhất cho tập dữ liệu.
2.3.1 Ưu điểm


Tḥt toán đơn giản, dễ dàng triển khai.



Đợ phức tạp tính tốn nhỏ.



Xử lý tớt với tập dữ liệu nhiễu.

2.3.2 Nhược điểm


Với K nhỏ dễ gặp nhiễu dẫn tới kết quả đưa ra khơng chính xác.



Cần nhiều thời gian để thực hiện do phải tính tốn khoảng cách với tất cả
các đới tượng trong tập dữ liệu.




Cần chủn đởi kiểu dữ liệu thành các ́u tớ định tính.

2.4 Mạng neuron tích chập (Convolutional Neural Network - CNN)
2.4.1 Khái niệm về CNN
Mạng nơron tích chập (còn gọi là ConvNet / CNN) là mợt tḥt tốn Deep
Learning có thể lấy hình ảnh đầu vào, gán độ quan trọng (các trọng số - weights
và đợ lệch - bias có thể học được) cho các đặc trưng/đới tượng khác nhau trong
hình ảnh và có thể phân biệt được từng đặc trưng/đối tượng này với nhau.
Mạng nơ-ron tích chập (CNN) áp dụng mợt biến thể của perceptron đa lớp
(thuật toán phân loại đầu vào trực quan), thường là trên nhiều lớp tích chập được
kết nới hồn tồn hoặc gợp lại. “Tích chập” là quá trình áp dụng một bộ lọc lên
đầu vào, tạo ra các giá trị kích hoạt dưới dạng sớ. Khi áp dụng liên tục cùng mợt
bợ lọc lên tồn bợ hình ảnh, ta tạo ra mợt ma trận kích hoạt (feature maps). Ma
trận kích hoạt sẽ cho biết vị trí và cường độ của các đặc trưng được phát hiện.


×