2.5 .2Các thư viện sử dụng trong Python
3.2 MÔ HÌNH HỆ THỐNG
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.