MÔ HÌNH HỆ THỐNG

Một phần của tài liệu Nhận dạng cảm xúc thông qua khuôn mặt dùng mạng nơ ron tích chập CNN (Trang 43)

3.2.1 Sơ đồ khối của hệ thống

Hình 3.1: Sơ đồ khối của hệ thống.

Hình ảnh ngõ vào lấy từ video được quay bởi webcam máy tính. Qua quá trình tiền xử lý, video được cắt ra thành những khung ảnh tĩnh. Các ảnh này tiếp tục được xử lý đưa về ảnh xám, nhận dạng và tách khuôn mặt khỏi ảnh bằng phương pháp Haar-like của OpenCV

[13].Qua giai đoạn xử lý, hình ảnh khuôn mặt trả về ma trận có tọa độ gồm chiều dài, chiều rộng và chiều cao, sau đó giảm độ phân giải của ảnh xuống phù hợp với mô hình của mạng CNN và chuyển đổi ảnh xám sang ảnh nhị phân. Từ ảnh nhị phân, hệ thống sẽ lấy ra các

đặc trưng riêng của từng cảm xúc. Tiếp theo, các đặc trưng đó sẽ được đưa vào mạng CNN để tiến hành so sánh với các dữ liệu đã được huấn luyện trước và dự đoán cảm xúc trong hình ảnh đó. Cuối cùng, mô hình xuất ra hình ảnh đã được gắn nhãn cảm xúc.

3.2.2 Mô hình CNN sử dụng trong hệ thống

Hình 3.2: Kiến trúc mạng CNN được dùng trong hệ thống

Ảnh đầu vào là ảnh xám nhị phân chứa khuôn mặt người có kích thước 48x48. Ảnh qua xử lý trở thành ma trận 2 chiều được đưa vào mô hình CNN. Quá trình huấn luyện trong CNN là sự kết hợp của các lớp như lớp chập, lớp ReLU, lớp MaxPooling, lớp chuẩn hóa (Batch normalization) và lớp chập tách biệt (Separable Conv2D). Lớp kết nối đầy đủ trong mô hình CNN truyền thống được xóa bỏ trong mô hình này. Với việc bỏ đi lớp kết

tăng tốc thời gian chạy thuật toán và khái quát hóa tốt hơn (quá cao số lượng tham số so với kích thước tập huấn luyện có thể gây ra quá khớp)

Đầu tiên, ảnh đầu vào được chập với 8 bộ lọc kích thước 3x3. Bộ lọc sẽ lần lượt được dịch chuyển với một bước trượt chạy dọc theo ảnh và quét toàn bộ ảnh. Tiếp theo, toàn bộ ảnh được thêm vào lớp chuẩn hóa giúp bình thường hóa đầu ra, các hệ số trở nên cân bằng hơn (không quá nhỏ hoặc quá lớn) vì thế sẽ giúp mô hình dễ hội tụ hơn. Sau đó kích hoạt lớp ReLU được đính kèm để phi tuyến, sau quá trình này thu được 8 ma trận phi tuyến có kích thước 24x24. Lớp chập và lớp chuẩn hóa thứ hai thực hiện tương tự, đầu ra sau xử lý vẫn là 8 ma trận có kích thước 24x24. Kết quả ở ngõ ra sau lớp chập thứ hai sẽ được xử lý độc lập ở khối A gồm: lớp chập tách biệt tích chập theo chiều sâu với 16 bộ lọc 3x3, sau đó được chuẩn hóa bởi lớp chuẩn hóa, kích hoạt lớp ReLU, thực hiện thêm một lần chập tách biệt với 16 bộ lọc 3x3 và lớp chuẩn hóa trước khi đưa vào lớp MaxPooling là một ma trận có kích thước 3x3 với bước trượt bằng 2, sau quá trình này thu được 16 ma trận có kích thước 12x12; ở nhánh còn lại thêm một lượng tích chập với 16 bộ lọc 1x1, ở quá trình của nhánh này cũng thu được 16 ma trận có kích thước 12x12 với mục đích điều chỉnh trọng số của đặc trưng khi tính gộp kết quả với quá trình tính chập tách biệt. Sau quá trình ở khối A thu được 16 ma trận có kích thước 12x12. Thực hiện tương tự và lặp lại ở khối A lần lượt với số lượng các bộ lọc 3x3 là 32, 64 và 128, kết quả sau khi qua các lần lặp lại ở khối A là 32 ma trận có kích thước 6x6, 64 ma trận có kích thước 3x3 và 128 ma trận có kích thước 2x2. Đem kết quả cuối cùng đem chập với 7 bộ lọc (tương ứng 7 loại cảm xúc). Kết quả tính toán của CNN được chuyển vào khối giá trị trung bình toàn cục (chuyển kết quả 2D thành vector), kết quả này được xử lý qua một lớp softmax để trả về xác suất của từng loại cảm xúc.

3.3 TẬP DỮ LIỆU

3.3.1 Tập dữ liệu mẫu có sẵn

Các tập dữ liệu khác nhau chủ yếu về số lượng, chất lượng và độ sạch của hình ảnh. Tập dữ liệu FERC-2013 [2] có khoảng 35.000 hình ảnh trắng đen có độ phân giải thấp chỉ chứa khuôn mặt cho thấy cảm xúc tự nhiên. Đối với mỗi hình ảnh dùng cho quá trình kiểm tra, sử dụng phân loại Cascade dựa trên tính năng Haar của OpenCV [13], tất cả dữ liệu

được xử lý trước. Chỉ có phần hình vuông có khuôn mặt khi nhận dạng được giữ lại, được thay đổi kích thước và được chuyển đổi thành một mảng có giá trị đen trắng là 48x48.

Hình 3.3: Một số hình ảnh trong tập dữ liệu mẫu

Tập dữ liệu với định dạng “.csv” chứa hai cột là cảm xúc và pixel. Cột cảm xúc có chứa các số từ 0 đến 6, đại diện cho 7 cảm xúc cơ bản hiện diện trong hình ảnh. Cột pixel chứa một chuỗi dữ liệu được bỏ trong dấu ngoặc kép cho mỗi hình ảnh. Nội dung của chuỗi này là các giá trị pixel được phân tách bằng dấu cách.

Bảng 3.1: Bảng phân loại số lượng cảm xúc trong tập dữ liệu mẫu FERC-2013 Cảm xúc Giận dữ Khó chịu Sợ hãi Vui vẻ Buồn Ngạc nhiên

Tổng 35888 100

Hình 3.4: Biểu đồ số lượng cảm xúc trong tập dữ liệu mẫu FERC-2013

3.3.2 Tập dữ liệu riêng

Tập dữ liệu riêng được tạo ra nhằm mục đích kiểm tra độ chính xác của mô hình CNN được huấn luyện. Tập dữ liệu riêng bao gồm: tập dữ liệu A và tập dữ liệu B. Trong đó, tập dữ liệu A là hình ảnh được lấy từ webcam máy tính. Tập dữ liệu bao gồm 8 người trong đó có 3 nữ và 5 nam. Mỗi hình ảnh là một cảm xúc với cường độ khác nhau và sự mở rộng các góc cạnh của khuôn mặt. Với số lượng người tham gia thực nghiệm trên, tập dữ liệu sẽ có 280 hình ảnh được chia cho 7 loại cảm xúc. Hình ảnh dùng cho quá trình kiểm tra là hình ảnh màu trong các điều kiện môi trường khác nhau. Tập dữ liệu B là hình ảnh được lấy từ tập dữ liệu CK+ [10]. Tập dữ liệu bao gồm 700 hình ảnh được lựa chọn từ tập dữ liệu trên. Hình ảnh dùng cho quá trình kiểm tra là hình ảnh xám với những người được khảo sát có giới tính và màu da khác nhau. Số lượng hình ảnh trong tập dữ liệu riêng được thể hiện ở bảng 3.2 và hình 3.5.

Bảng 3.2: Bảng phân loại số lượng cảm xúc trong tập dữ liệu riêng Cảm xúc Giận dữ Khó chịu Sợ hãi Vui vẻ Buồn Ngạc nhiên Bình thường Tổng

3.4 QUÁ TRÌNH HUẤN LUYỆN VÀ KIỂM TRA3.4.1 Quá trình huấn luyện 3.4.1 Quá trình huấn luyện

Tập mẫu FERC-2013 [2] đã được phân loại và sắp xếp theo mục đích sử dụng cho việc huấn luyện và kiểm tra. Tập dữ liệu này là tập hợp hình ảnh của 7 cảm xúc đã được chuyển đổi thành ma trận nhị phân có kích thước 48x48 và có gắn nhãn.

Đầu tiên, cá nhân thực hiện sẽ khôi phục lại hình ảnh với kích thước 48x48 từ ma trận nhị phân trong tập mẫu với đuôi “.csv”, đồng thời gắn nhãn cảm xúc tương ứng với hình ảnh đó. Dữ liệu đã được xử lý ảnh được đưa vào mô hình CNN tiến hành huấn luyện.

Sau quá trình huấn luyện, các trọng số và dữ liệu của mạng sẽ được lưu vào tập tin có đuôi là “.hdf5”. Tên tập tin này gồm các tham số sau: số lần huấn luyện được lặp lại, độ chính xác

Hình 3.6: Lưu đồ thuật toán quá trình huấn luyện.

3.4.2 Quá trình kiểm tra

Tập dữ liệu riêng được cá nhân thực hiện được đưa vào mạng, dựa vào các trọng số và dữ liệu trong tập tin, mạng sẽ dự đoán các cảm xúc và xuất ra ma trận dự đoán.

CHƯƠNG 4 KẾT QUẢ

4.1 KẾT QUẢ HUẤN LUYỆN VÀ KIỂM TRA (adsbygoogle = window.adsbygoogle || []).push({});

Độ chính xác qua kiểm tra dùng đánh giá mô hình trong quá trình huấn luyện. Sau lần huấn luyện đầu tiên, độ chính xác qua kiểm tra đạt được là 43.59%, tiếp tục tiến hành huấn luyện 125 lần nhận được kết quả là 64,6%. Lấy kết quả so sánh với đề tài đã nghiên cứu [1] được thể hiện trong bảng 4.1 thấy được độ chính xác qua kiểm tra của cá nhân thực hiện là tốt hơn do mô hình được huấn luyện với số lượng ảnh là 28709 hình và 125 lần huấn luyện.

Hình 4.1: Biểu đồ độ chính xác qua kiểm tra trong quá trình huấn luyện. Bảng 4.1: So sánh độ chính xác qua kiểm tra giữa hai mô hình.

Mô hình Mô hình cá nhân thực hiện Mô hình trong [1]

Độ chính xác kiểm tra ( % ) 64% 62%

tương quan giữa cảm xúc đầu vào và dự đoán có sự tương quan lớn. Các cảm xúc “vui”, “bình thường” và “ngạc nhiên” có độ chính xác cao do tập mẫu có số lượng dùng huấn luyện lớn, đồng thời đây cũng là các cảm xúc dễ làm, ít sự tương đồng với các cảm xúc khác. Cảm xúc “khó chịu” tuy có độ chính xác cao nhưng do cảm xúc này có số lượng tập mẫu huấn luyện thấp, các tập riêng dùng để kiểm tra không nhiều, nên độ chính xác đạt được khá cao lên đến 0.6. Ba cảm xúc còn lại bao gồm “giận dữ”, “sợ hãi” và “buồn” có tỉ lệ thấp do có nhiều sự tương đồng tại các điểm trên khuôn mặt dẫn đến việc kiểm tra gây nhầm lẫn, khiến cho sự đánh giá của máy tính sai lệch khá nhiều. Trong nghiên cứu [1], tác giả cho rằng để tăng độ chính xác lên đến 90% cần tập mẫu, tập kiểm tra phải nằm trong điều kiện lý tưởng của phòng thí nghiệm (ánh sáng hoàn hảo, máy ảnh ngang tầm mắt và máy ảnh đối diện với các điểm nhận dạng trên khuôn mặt). Tuy tập dữ liệu của cá nhân thực hiện chưa đạt được các điều kiện như trên nhưng sau qua trình huấn luyện, cá nhân nhận thấy đường chéo trên ma trận tương quan đậm hơn so với nhưng điểm còn lại như vậy tập dữ liệu có thể được đánh giá là tương đối tốt.

Hình 4.3: Ma trận tương quan của mô hình với ngõ vào là dữ liệu tập riêng

Kết quả kiểm tra tập riêng được thể hiện ở bảng 4.2 bên dưới. Đem kết quả sau khi kiểm tra so sánh với đề tài đã nghiên cứu [1], độ chính xác qua kiểm tra của mô hình của cá nhân thực hiện (trong tệp tin “_emotion_training.log”) và đề tài nghiên cứu [1] thể hiện

Bảng 4.2: Đánh giá tỉ lệ nhận dạng cảm xúc khi kiểm tra tập riêng.

Bảng 4.3: So sánh độ chính xác giữa hai mô hình.

Độ chính xác ( % )

4.2 ỨNG DỤNG NHẬN DẠNG CẢM XÚC THÔNG QUA KHUÔN MẶT TRÊN KIT

RASPBERRY PI 4

Hình 4.4: Camera kết nối với kit raspberry Pi 4

Sau quá trình huấn luyện và kiểm tra mô hình, cá nhân thực hiện lấy kết quả đạt được xây dựng một ứng dụng trên kit Raspberry Pi 4 với sự hỗ trợ thiết kế giao diện của bộ công cụ GUI Tkinter.

Hình 4.5: Giao diện của ứng dụng nhận dạng cảm xúc

- Nút nhấn “Chọn file” dùng để chọn file cần được nhận dạng, file được chọn với hai định dạng chính. Nếu là hình ảnh thì file đó có đuôi “.jpg” hoặc “.png”, nếu là video offline thì file có đuôi “.mp4”. Khi đã chọn được file, ứng dụng sẽ thông báo đến người dùng tin nhắn “Đã chọn file!!!”.

- Nút nhấn “Nhận dạng” dùng để nhận dạng cảm xúc cho file đã chọn ở nút nhấn

“Chọn file”. Đối với hình ảnh sau khi nhận dạng được biểu diễn bằng cửa sổ và kết quả sẽ được lưu vào folder có tên “result”.

- Nút nhấn “Trực tuyến” dùng để nhận dạng cảm xúc đối với luồng video trực tuyến.

- Nút nhấn “Thoát” dùng để đóng ứng dụng.

Hình 4.6: Thông báo khi đã chọn được file.

 Nhận dạng cảm xúc của 7 loại cảm xúc được nghiên cứu trong để tài này với những hình ảnh từ hình 4.7 đến hình 4.14.

Hình 4.7: Nhận dạng cảm xúc “ bình thường

Hình 4.8: Nhận dạng cảm xúc “ bình thường ”từ một ảnh bất kỳ được tải lên hệ thống Hình 4.7 và 4.8 miêu tả nhận dạng cảm xúc bình thường với độ chính xác khá cao lên đến 77.95% và 88.45% do các chi tiết biểu cảm cảm xúc bình thường trên khuôn mặt khá rõ ràng.

Hình 4.9: Nhận dạng cảm xúc “ vui vẻ

Hình 4.9 miêu tả nhận dạng cảm xúc vui vẻ với độ chính xác lên đến 93.98% do các chi tiết biểu cảm cảm xúc vui vẻ trên khuôn mặt khá chi tiết như miệng và các hàm răng được mở ra và giãn rộng, các chi tiết trên vùng má và lông mày cũng có sự thay đổi như cong hơn nên hệ thống nhận dạng có độ chính xác tương đối tốt.

Hình 4.10: Nhận dạng cảm xúc “ ngạc nhiên

Hình 4.10 miêu tả nhận dạng cảm xúc ngạc nhiên với độ chính xác lên đến 67.6% do các chi tiết biểu cảm cảm xúc ngạc nhiên trên khuôn mặt khá cụ thể như lông mày nâng lên, mắt mở to, há miệng nên hệ thống nhận dạng có độ chính xác tương đối tốt so với tập mẫu đã huấn luyện.

1Hình 4.11: Nhận dạng cảm xúc “ buồn

Hình 4.11 miêu tả nhận dạng cảm xúc buồn với độ chính xác lên đến 63.47% do các chi tiết biểu cảm cảm xúc buồn trên khuôn mặt khá chi tiết như đuôi mí mắt trên sụp xuống, mắt mất tập trung,và diện tích bên trong mắt bị thu hẹp, ngoài ra gì má nâng cao lên. Các chi biểu cảm trên khuôn mặt cụ thể như đã huấn luyện nên hệ thống nhận dạng tương đối tốt. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4.12: Nhận dạng cảm xúc “ giận dữ

Hình 4.12 miêu tả nhận dạng cảm xúc giận dữ với độ chính xác lên đến 83.27% do các chi tiết biểu cảm cảm xúc giận dữ trên khuôn mặt khá rõ ràng như lông mày nhướng lên và kéo gần lại nhau và cong cao hơn, mí mắt trên kéo lên, mí mắt dưới căng, miệng hơi kéo sang hai bên và há rộng để hở một phần răng. Các cho tiết biểu cảm trong môi trường tốt và biểu cảm rõ ràng nên hệ thống nhận dạng có độ chính xác tương đối tốt.

Hình 4.13: Nhận dạng cảm xúc “ khó chịu

Hình 4.13 miêu tả nhận dạng cảm xúc khó chịu với độ chính xác lên đến 85.79% do các chi tiết biểu cảm cảm xúc khó chịu trên khuôn mặt khá rõ ràng như nhăn sống mũi và môi trên và môi dưới được thu hẹp, hai mắt nhíu lại , vùng diện tích đôi mắt và miệng được thu hẹp khá lớn, bên cạnh đó lông mày cũng có sự thay đổi như cong ở mức độ trung bình. Các chi tiết trên làm hệ thống nhận dạng có độ chính xác tương đối tốt.

Hình 4.14: Nhận dạng cảm xúc “ sợ hãi

Hình 4.14 miêu tả nhận dạng cảm xúc sợ hãi với độ chính xác chỉ 45.82% do đây là cảm xúc biểu cảm khó, dễ nhầm lẫn với nhiều cảm xúc khác. Ngoài ra các chi tiết biểu cảm gần có sự tương đồng với cảm xúc buồn.

 Nhận dạng cảm xúc sai đối với một số hình ảnh từ hình 4.15 đến hình 4.19.

Hình 4.15: Nhận dạng cảm xúc “ bình thường ” thành cảm xúc “ buồn ” do biểu cảm không rõ ràng

Hình 4.16: Nhận dạng cảm xúc “ bình thường ” thành cảm xúc “ sợ hãi ” do cường độ sáng quá cao và ảnh được nhận dạng bị ngược sáng.

Hình 4.17: Không nhận dạng được khuôn mặt do góc nghiêng và các đặc trưng trên khuôn mặt bị mất.

Hình 4.18: Nhận dạng cảm xúc “ bình thường ” thành cảm xúc “ sợ hãi ” do cường độ ánh sáng trên khuôn mặt yếu.

Hình 4.19: Nhận dạng cảm xúc “ bình thường ” thành cảm xúc “ buồn ” do khuôn mặt bị thay đổi góc nghiêng đồng thời khuôn mặt không ngang tầm và chính diện với camera

Nhận xét: Trong quá trình nhận dạng cảm xúc , các cảm xúc có thể bị nhận dạng sai do

các ảnh hưởng sau:

- Điều kiện cường độ sáng quá thấp hoặc quá cao

Một phần của tài liệu Nhận dạng cảm xúc thông qua khuôn mặt dùng mạng nơ ron tích chập CNN (Trang 43)