1 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO BÁO CÁO CUỐI KỲ Nhận dạng cảm xúc trên khuôn mặt 1 MỤC LỤC MỤC LỤC 1 DANH MỤC HÌNH 2 CÁC TỪ VIẾT TẮT 3 1 GIỚI THIỆU[.]
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
BÁO CÁO CUỐI KỲ
Nhận dạng cảm xúc trên khuôn mặt
Trang 2MỤC LỤC
MỤC LỤC 1
DANH MỤC HÌNH 2
CÁC TỪ VIẾT TẮT 3
1 GIỚI THIỆU 4
1.1 GIỚI THIỆU 4
1.2 MỤC TIÊU 4
1.3 GIỚI HẠN ĐỀ TÀI 4
2 THÁCH THỨC 5
3 PHƯƠNG PHÁP DCNN 6
3.1 Giới thiệu CNN 6
3.2 Cấu trúc của DCNN 8
3.2.1 Giới thiệu DCNN 8
3.2.2 Lớp Convolution 9
3.2.3 Lớp Pooling 10
3.2.4 Lớp Fully-Connected 10
3.3 Giải quyết các thách thức khi sử dụng DCNN 11
4 TẬP DỮ LIỆU VÀ MÔI TRƯỜNG HUẤN LUYỆN 12
4.1 Tập dữ liệu sử dụng 12
4.2 Môi trường huấn luyện 13
4.3 Mô hình DCNN sử dụng trong dự án 13
5 KẾT QUẢ THỰC HIỆN 15
6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 18
6.1 Kết luận 18
6.2 Hướng phát triển 18
TÀI LIỆU THAM KHẢO 19
Trang 3DANH MỤC HÌNH
Hình 2 1 Hình ảnh bị nhiễu do cường độ ánh sáng thấp 5
Hình 2 2 Hình ảnh chụp nhiều tư thế 5
Hình 2 3 Hình ảnh bị che do đeo kiếng mát 6
Hình 3 1 Mô hình CNN 7
Hình 3 2 Ma trận cửa sổ trượt 7
Hình 3 3 Cấu trúc DCNN so với CNN 8
Hình 3 4 Mô hình ma trận vào, ra ở lớp Convolutional 9
Hình 3 5 Ảnh trước và sau lớp Pooling 10
Hình 3 6 Ảnh được chụp với nhiều tư thế 11
Hình 3 7 Nhận dạng cảm xúc khi bị che một phần 11
Hình 4 1 Ví dụ về tập dữ liệu sử dụng 12
Hình 4 2 Trang web kaggle.com 13
Hình 4 3 Mô hình DCNN thực hiện 14
Hình 5 1 Giá trị “accuracy” và “loss” 15
Hình 5 2 Phân phối hiệu suất 16
Hình 5 3 Ma trận tương quan 16
Hình 5 4 Bảng dự đoán kết quả 17
Hình 5 5 Kết quả thực hiện khi chạy trên tập kiểm tra 17
Trang 4CÁC TỪ VIẾT TẮT
CNN : Convolutional Neural Network
DCNN: Deep Convolutional Neural Network
Trang 51 GIỚI THIỆU
1.1 GIỚI THIỆU
Con người rất giỏi việc nhận diện khuôn mặt và các hình mẫu phức tạp Ngay cả khi một thời gian trôi qua vẫn không ảnh hưởng đến khả năng này và con người muốn máy tính trở nên mạnh mẽ như họ trong việc nhận diện khuôn mặt [1]
Hệ thống nhận diện khuôn mặt có thể giúp:
Tra cứu thông tin tội phạm
Giám sát bằng camera để phát hiện tội phạm tại các khu vực công cộng
Tìm trẻ lạc dựa vào các camera đặt ở các nơi công cộng
Phát hiện các nhân vật VIP đặt chân vào khách sạn
Phát hiện tội phạm tại các nơi công cộng
Biểu thức tiết lộ những gì diễn ra trong tâm trí con người tại một thời điểm Những điều này thường được thể hiện qua lời nói, cử chỉ cơ thể hoặc nét mặt Trong tất cả các phương thức biểu hiện hiện có, nét mặt dường như là phương tiện biểu cảm nhất mà con người thể hiện cảm xúc của mình Vai trò quan trọng của nét mặt trong cuộc sống hàng ngày của con người đã khiến một số nhà nghiên cứu phát triển các hệ thống tự động để nhận biết và giải thích chúng [2]
1.2 MỤC TIÊU
Xây dựng hệ thống nhận dạng cảm xúc khuôn mặt cho phép nhận diện biểu cảm của từng khuôn mặt có trong hình
Xác định đối tượng nhanh chóng và đủ tin tưởng (độ chính xác hơn 90%)
1.3 GIỚI HẠN ĐỀ TÀI
Hệ thống chỉ nhận dạng khuôn mặt rồi ánh xạ để phát hiện cảm xúc của con người bao gồm: bình thường, vui, buồn, giận dữ, ngạc nhiên, sợ hãi và ghê tởm
Hệ thống chỉ nhận diện được những ảnh được cắt sẵn khuôn mặt để đưa vào huấn luyện và kiểm tra
Trang 62 THÁCH THỨC
Trong thực tế việc nhận diện khuôn mặt gặp rất nhiều khó khăn Các yếu tố làm ảnh
hưởng đến sự chính xác của kết quả ảnh:
Đặc điểm khuôn mặt khác nhau: mỗi người đều có đặc điểm chân mày, mắt,
mũi, miệng khác nhau dẫn đến việc nhận dạng bị sai lệch Ví dụ: người có nếp
nhăn trên trán và bị nhíu chân mày chưa chắc là đang trong trạng thái giận
dữ…
Hình 2 1 Hình ảnh bị nhiễu do cường độ ánh sáng thấp
Ánh sáng: cường độ sáng của đối tượng, do đó khi ánh sáng thay đổi, thông tin
về đối tượng sẽ bị ảnh hưởng [1]
Hình 2 2 Hình ảnh chụp nhiều tư thế
Trang 7 Tư thế của đối tượng: tư thế của đối tượng sẽ xác định thông tin của đối tượng
đó Việc tư thế thay đổi quá lớn sẽ làm thay phần lớn thông tin về đối tượng, dẫn đến kết quả nhận dạng sai
Hình 2 3 Hình ảnh bị che do đeo kiếng mát
Trang phục của đối tượng: Kết quả nhận dạng có thể bị ảnh hưởng lớn nếu như đối tượng có các trang phục khác biệt so với mẫu như đeo kính, đội mũ,… [1]
3 PHƯƠNG PHÁP DCNN
3.1 Giới thiệu CNN
Convolutional Neural Network (CNN – Mạng nơ-ron tích chập sâu) là một trong những mô hình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay: hệ thống xử lý ảnh lớn như Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chức năng thông minh như nhận dạng khuôn mặt người dùng, phát triển xe hơi tự lái hay drone giao hàng tự động CNN bao gồm các lớp “Convolution” và “Max-Pooling” được xếp xen kẽ với nhau Giai đoạn cuối thường gồm 1 hoặc nhiều lớp “Fully-Connected”
Trang 8Hình 3 1 Mô hình CNN
Convolutional:
Là một cửa sổ trượt (Sliding Windows) trên một ma trận
Hình 3 2 Ma trận cửa sổ trượt
Các convolutional layer có các parameter(kernel) đã được học để tự điều chỉnh lấy ra những thông tin chính xác nhất mà không cần chọn các feature
Convolution hay tích chập là nhân từng phần tử trong ma trận 3 Sliding Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận có kích thước nhỏ như trong ví
dụ trên là 3×3
Trang 93.2 Cấu trúc của DCNN
3.2.1 Giới thiệu DCNN
DCNN có cấu trúc giống với CNN nhưng số lượng các hidden layers lại nhiều hơn
so với CNN thông thường Những hidden layers này được sử dụng để trích xuất nhiều đặc trưng hơn và tăng độ chính xác cho thuật toán [3]
DCNN được chia ra làm 2 loại:
Tăng số lượng các hidden layers
Tăng số lượng các nodes trong 1 hidden layers
Hình 3 3 Cấu trúc DCNN so với CNN
Mạng DCNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo
Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu) Trong quá trình huấn luyện mạng (traning) DCNN tự động học các giá trị qua các lớp filter dựa vào cách thức thực hiện
Trang 10Cũng giống như mô hình CNN, DCNN cũng có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality) Với cùng một đối tượng, nếu đối tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì
độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling) Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter Đó là lý do tại sao DCNN cho ra mô hình với độ chính xác rất cao
3.2.2 Lớp Convolution
Convolution layer là lớp quan trọng nhất và cũng là lớp đầu tiên của của mô hình DCNN Lớp này có chức năng chính là phát hiện các đặc trưng có tính không gian hiệu quả Trong tầng này có 4 đối tượng chính là: ma trận đầu vào, bộ filters, và receptive field, feature map Conv layer nhận đầu vào là một ma trận 3 chiều và một bộ filters cần phải học Bộ filters này sẽ trượt qua từng vị trí trên bức ảnh để tính tích chập (convolution) giữa
bộ filter và phần tương ứng trên bức ảnh Phần tương ứng này trên bức ảnh gọi là receptive field, tức là vùng mà một neuron có thể nhìn thấy để đưa ra quyết định, và mà trận cho ra bới quá trình này được gọi là feature map [4]
Để hình dung, các bạn có thể tưởng tượng, bộ filters giống như các tháp canh trong nhà tù quét lần lượt qua không gian xung quanh để tìm kiếm tên tù nhân bỏ trốn Khi phát hiện tên tù nhân bỏ trốn, thì chuông báo động sẽ reo lên, giống như các bộ filters tìm kiếm được đặc trưng nhất định thì tích chập đó sẽ cho giá trị lớn
Hình 3 4 Mô hình ma trận vào, ra ở lớp Convolutional
Trang 113.2.3 Lớp Pooling
Sau hàm kích hoạt, thông thường chúng ta sử dụng tầng pooling Một số loại pooling layer phổ biến như là max-pooling, average pooling, với chức năng chính là giảm chiều của tầng trước đó Với một pooling có kích thước 2x2, các bạn cần phải trược filter 2x2 này trên những vùng ảnh có kích thước tương tự rồi sau đó tính max, hay average cho vùng ảnh đó [4]
Hình 3 5 Ảnh trước và sau lớp Pooling
Ý tưởng đằng sau tầng pooling là vị trí tuyết đối của những đặc trưng trong không gian ảnh không còn cần thiết, thay vào đó vị trí tương đối giữ các đặc trưng đã đủ để phân loại đối tượng Hơn nữa giảm tầng pooling có khả năng giảm chiều cực kì nhiều, làm hạn chế over-fitting và giảm thời gian huấn luyện tốt
3.2.4 Lớp Fully-Connected
Tầng cuối cùng của mô hình DCNN trong bài toán phân loại ảnh là tầng fully connected layer Tầng này có chức năng chuyển ma trận đặc trưng ở tầng trước thành vector chứa xác suất của các đối tượng cần được dự đoán Ví dụ, trong bài toán phân loại số viết tay MNIST có 10 lớp tương ứng 10 số từ 0-1, tầng fully connected layer sẽ chuyển ma trận đặc trưng của tầng trước thành vector có 10 chiều thể hiện xác suất của 10 lớp tương ứng [4]
Trang 123.3 Giải quyết các thách thức khi sử dụng DCNN
Khi thực hiện bằng phương pháp DCNN, bài toán đã giải quyết được những khó khăn thường hay gặp phải Vị dụ như:
Giải quyết vấn đề nhận dạng được cảm xúc khi trời tối
Hình 3 6 Ảnh được chụp với nhiều tư thế
Giải quyết được vấn đề khi ảnh được chụp ở nhiều tư thế
Hình 3 7 Nhận dạng cảm xúc khi bị che một phần
Nhận dạng được cảm xúc khuôn mặt dù ảnh bị che hay bị mờ đi
Trang 134 TẬP DỮ LIỆU VÀ MÔI TRƯỜNG HUẤN LUYỆN
4.1 Tập dữ liệu sử dụng
Trong dự án này nhóm lựa chọn bộ dữ liệu FER2013
Dữ liệu bao gồm hình ảnh thang độ xám 48x48 pixel của khuôn mặt Các khuôn mặt
đã được tự động căn giữa nhiều hơn hoặc ít hơn và chiếm cùng một khoảng không gian trong mỗi hình ảnh Nhiệm vụ là phân loại từng khuôn mặt dựa trên cảm xúc thể hiện trên nét mặt thành một trong bảy loại (0 = Giận dữ, 1 = Chán ghét, 2 = Sợ hãi, 3 = Hạnh phúc,
4 = Buồn, 5 = Bất ngờ, 6 = Trung lập ) [5]
Hình 4 1 Ví dụ về tập dữ liệu sử dụng
Trong tập dữ liệu FER2013, các cảm xúc bao gồm nhiều ảnh với các tư thế khác nhau
và độ sáng của background cũng đa dạng Việc này hỗ trợ rất nhiều trong việc huấn luyện
mô hình Kết hợp với phương pháp DCNN ta có thể dễ dàng giải quyết các vấn đề thách thức trong việc huấn luyện và đưa vào kiểm tra
Chia tập dữ liệu thành hai phần bao gồm bộ train(80%) gồm 28709 ảnh và bộ test(20%) bao gồm 7178 ảnh Với tập dữ liệu khá lớn ta có thể chia tập train thành hai bộ
dữ liệu là train(80%) gồm 22976 ảnh và tập valid(20%) gồm 5742 ảnh để huấn luyện đạt kết quả tốt hơn Như vậy tập dữ liệu sẽ được chia thành ba phần gồm:
Train: 2967 ảnh
Valid: 5742 ảnh
Test: 7178
Trang 144.2 Môi trường huấn luyện
Mô hình được huấn luyện trên kaggle.com
Hình 4 2 Trang web kaggle.com
Thực hiện trên kaggle có những ưu điểm:
Tốc độ xử lý nhanh: Đối với những máy có cấu hình yếu, không thể chạy trên máy tính được, ta có thể chạy trên kaggle Kaggle sẽ cung cấp cho chúng ta môi trường làm việc gồm CPU/GPU, RAM để thực hiện
Dữ liệu: Trên kaggle cung cấp rất nhiều tập dữ liệu sử dụng Ta có thể lấy về hoặc thêm trực tiếp khi sử dụng
Bên cạnh đó cũng có nhiều khuyết điểm mà kaggle chưa tối ưu được:
Thời gian thực hiện: Thời gian thực hiện trên kaggle chỉ cho phép 9 tiếng Nếu
mô hình thuật toán chạy quá lâu sẽ bị gián đoạn và ta phải chạy lại từ đầu
4.3 Mô hình DCNN sử dụng trong dự án
Trong dự án lần này, nhóm thực hiện mô hình DCNN với:
6 lớp Convolution
3 lớp Maxpooling
Trang 15Hình 4 3 Mô hình DCNN thực hiện
Trang 16Trong mô hình DCNN thực hiện trong dự án, nhóm có thêm hàm “Batch Normalization” và “dropout”:
Hàm “Batch Normalization”, chuẩn hóa hàng loạt, là một phương pháp được
sử dụng để làm cho mạng nơ-ron nhân tạo nhanh hơn và ổn định hơn thông qua quá trình chuẩn hóa lớp đầu vào bằng cách căn giữa và chia tỷ lệ lại [6] Chuẩn hóa hàng loạt làm giảm số lượng do giá trị đơn vị ẩn thay đổi xung quanh [7]
Hàm “Dropout”, bỏ học Trong mạng neural network, kỹ thuật dropout là việc chúng ta sẽ bỏ qua một vài unit trong suốt quá trình train trong mô hình, những unit bị bỏ qua được lựa chọn ngẫu nhiên Việc bỏ học giúp ta tránh việc bị
“over-fitting”
5 KẾT QUẢ THỰC HIỆN
Đánh giá kết quả của mô hình dựa trên việc nhận dạng đúng cảm xúc của khuôn mặt Đối tượng cần quan tâm là độ chính xác của việc nhận dạng cảm xúc
Hình 5 1 Giá trị “accuracy” và “loss”
Trong hình 5.1, ta thấy biểu đồ biểu diễn độ chính xác(hình bên trái) đạt giá trị cao nhất ở train là 0.5969 và ở valid là 0.6313 Xu hướng của độ chính xác vẫn còn tiếp tục theo chiều hướng lên Để cải thiện độ chính xác ta có thể tăng epochs để huấn luyện đạt được kết quả tốt hơn Và biểu đồ biểu diễn giá “loss”(hình bên phải) đạt giá trị thấp nhất ở train là 1.1004và ở valid là 1.0080 Xu hướng của giá trị “loss” vẫn còn xuống nên việc tăng epochs có thể cải thiện tốt mô hình
Trang 17Hình 5 2 Phân phối hiệu suất
Trong hình 5.2, kết quả cho thấy việc phân phối các ngưỡng đạt được của mô hình
Do mô hình huấn luyện đạt kết quả trên 0.6(đối với “accuracy” hình bên trái) và dưới 1.1(đối với “loss” hình bên phải) ở các epoch gần cuối nên đa phần các ngưỡng tập trung nhiều từ 0.5-0.6(hình bên trái) và 1-1.3(hình bên phải)
Hình 5 3 Ma trận tương quan
Để đánh giá được mô hình chạy tốt hay không của bài toán nhận dạng nhiều class, ta dựa vào ma trận tương quan để đánh giá Dựa vào đường chéo chính của ma trận tương quan để đánh giá mô hình, nếu đường chéo chính đạt kết quả cao(so với cột đó) thì mô
Trang 18hình ta hoạt động tốt Dựa vào ma trận ta cũng có thể xem những class nào dễ bị nhầm lẫn với nhau
Hình 5 4 Bảng dự đoán kết quả
Trong hình 5.4, ta thấy độ chính xác trung bình của mô hình đạt 0.63 Ta có thể từ
ma trận tương quan để đưa ra các giá trị “precision” và “recall” để đánh giá
Hình 5 5 Kết quả thực hiện khi chạy trên tập kiểm tra
Để kiểm tra mô hình, ta sử dụng bộ train để đưa vào mô hình kiểm tra Chọn ngẫu nhiên bảy tấm hình từ hai class là giận dữ và hạnh phúc để xem xét Kết quả đa phần các
Trang 19ảnh được dự đoán chính xác Bên cạnh đó một số ảnh được chụp ở nhiều tư thế cũng được
dự đoán chính xác
6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1 Kết luận
Sau khi tìm hiểu và thực hiện đề tài “ Nhận dạng cảm xúc trên khuôn mặt”, nhóm đã đạt được những kết quả như sau:
Hệ thống đã nhận dạng được 7 cảm xúc gồm: bình thường, vui, buồn, giận
dữ, ngạc nhiên, sợ hãi và ghê tởm trên khuôn mặt với ảnh đầu vào là ảnh đã được chụp sẵn
Phát hiện cảm xúc khuôn mặt ở nhiều tư thế
Tuy nhiên hệ thống cũng còn một số nhược điểm chưa khắc phục được:
Hệ thống vẫn còn xảy ra tình trạng nhận dạng không chính xác cảm xúc buồn
và ngạc nhiên
Hạn chế công cụ huấn luyện nên độ chính xác không được cao(độ chính xác 0.63 chưa đạt so với yêu cầu ban đầu)
Hướng mặt của ảnh đầu vào phải trực diện với camera, các góc nghiêng lớn hơn 30º thì hệ thống không phát hiện được cảm xúc khuôn mặt
6.2 Hướng phát triển
Cải thiện model để đạt độ chính xác cao:
Thay đổi các layer trong DCNN: nhóm dự kiến thay đổi cấu trúc của DCNN
để xem sự thay đổi có ảnh hưởng nhiều đến kết quả hay không
Tăng số lượng datasets: vì tập dữ liệu ban đầu còn có sự chênh lệch về dữ liệu giữa các biểu cảm nên nhóm dự kiến tăng số lượng bằng cách thay đổi độ sáng hay background của các ảnh để tăng dữ liệu(cân bằng dữ liệu giữa các ảnh) Phát triển mô hình để áp dụng trong thực tế: Nhận dạng cảm xúc bằng video,camera,… Trong thực tế việc nhận dạng cảm xúc cũng đóng vai trò quan trọng trong các cuộc khảo sát hay trình bày sản phầm mới Phát triển mô hình vừa phát hiện và vừa nhận dạng cảm xúc khuôn mặt để thống kê kết quả Từ đó đưa ra các đánh giá tốt nhất cho hướng phát triển của một sản phẩm