Môn Học | Máy học (Machine Learning) |
---|---|
Lớp | CS114.O11 |
GV Lý Thuyết | PGS.TS Lê Đình Duy |
GV Lý Thuyết | ThS. Phạm Nguyễn Trường An |
MSSV | Họ và Tên | Github | |
---|---|---|---|
22521145 |
Trương Lê Vĩnh Phúc | [email protected] | |
22521467 |
Lê Thành Tiến | [email protected] |
- Tổng Quan Về Đồ Án
- Mô Tả Bộ Dữ Liệu
- Mô Tả Về Đặc Trưng
- Mô Tả Thuật Toán Máy Học
- Cài Đặt, Tinh Chỉnh Thông Số
- Kết Quả và Kết Luận
-
Nếu trở lại 10 năm trước, thì một tấm ảnh chỉ có nhiệm vụ đơn thuần là lưu giữ lại một khoảnh khắc. Trong thời đại 4.0 ngày nay, mọi thứ dần trở nên số hóa (từ quản lý thông tin, bán háng, thu thập dữ liệu,...). Ảnh đã trở thành một trong những phương tiện giao tiếp, thu thập dữ liệu quan trọng và ngày càng phổ biến. Nhóm quyết định dùng ảnh chân dung con người để xây dựng một mô hình máy học phân loại thành nhiều cảm xúc khác nhau. Ý tưởng trên có thể ứng dụng vào việc phân tích cảm xúc của người mua hàng, phân tích cảm xúc của bệnh nhân tâm thần.
-
Dữ liệu được thu thập từ các nguồn: google, bing, unsplash.com, freepik.com
-
Đối tượng sử dụng là những cơ sở bán hàng thông qua các ứng dụng họp trực tuyến (zoom, google meet,....), bệnh viện tâm thần.
- Input: Ảnh chứa mặt của 01 người
- Output: Ảnh cắt mặt và mô tả cảm xúc
- Tìm kiếm các keywords của cảm xúc liên quan (angry face humman, happy face,....) trên các trang web google, bing, unsplash.com, freepik.com,...
- Sử dụng extension của trình duyệt google Chrome (Download All Images) để tải về tất cả các ảnh có trong trang.
- Khi sử dụng nhiều trang để tìm kiếm cùng một loại cảm xúc, nhiều trang có các tấm ảnh giống nhau.
- Một tấm ảnh có thể tìm thấy ở 2 cảm xúc khác nhau (VD: fear và neutral).
- Nhiều tấm ảnh không liên quan xuất hiện chung trang, gây mất thời gian phân loại.
Sau 10 lần thu thập data đầu tiên, có tất cả 5000 ảnh, thuộc vào 5 class. Mỗi class có 1000 ảnh.
ID | Tên cảm xúc | Số lượng | Hình ảnh |
---|---|---|---|
0 | Angry | 1000 | |
1 | Fear | 1000 | |
2 | Happy | 1000 | |
3 | Neutral | 1000 | |
4 | Sad | 1000 |
- Lọc ảnh trùng
- Xoá các ảnh không phải ảnh người thật
- Xoá các ảnh khó phân biệt với cảm xúc khác
- Sau khi label và lọc ảnh, còn lại 5000 ảnh. Tiến hành chia train/val với tỉ lệ 8/2:
- Train: 4000 ảnh.
- Validate: 1000 ảnh.
- Sử dụng Dlib để phát hiện khuôn mặt
- Cắt ảnh chỉ giữ lại vùng xung quanh khuôn mặt
- Resize ảnh về 48x48 pixel.
- Chuyển ảnh thành ma trận pixel kích thước 48x48 pixel
- Ghi ma trận vào file csv cùng với ID của label
-
Support Vector Machines (có tài liệu dịch là Máy véctơ hỗ trợ) là một trong số những thuật toán phổ biến và được sử dụng nhiều nhất trong học máy trước khi mạng nơ ron nhân tạo trở lại với các mô hình deep learning. Nó được biết đến rộng rãi ngay từ khi mới được phát triển vào những năm 1990.
-
Mục tiêu của SVM là tìm ra một siêu phẳng trong không gian N chiều (ứng với N đặc trưng) chia dữ liệu thành hai phần tương ứng với lớp của chúng. Nói theo ngôn ngữ của đại số tuyển tính, siêu phẳng này phải có lề cực đại và phân chia hai bao lồi và cách đều chúng.
- Trong không gian N chiều, một siêu phẳng là một không gian con có kích thước N-1 chiều. Một cách trực quan, trong một mặt phẳng (2 chiều) thì siêu phẳng là một đường thẳng, trong một không gian 3 chiều thì siêu phẳng là một mặt phẳng. Để phân chia hai lớp dữ liệu, rõ ràng là có rất nhiều siêu phẳng có thể làm được điều này. Mặc dù vậy, mục tiêu của chúng ta là tìm ra siêu phẳng có lề rộng nhất tức là có khoảng cách tới các điểm của hai lớp là lớn nhất. Hình dưới đây là một ví dụ trực quan về điều đó.
- Để phân chia hai lớp dữ liệu, rõ ràng là có rất nhiều siêu phẳng có thể làm được điều này. Mặc dù vậy, mục tiêu của chúng ta là tìm ra siêu phẳng có lề rộng nhất tức là có khoảng cách tới các điểm của hai lớp là lớn nhất. Hình dưới đây là một ví dụ trực quan về điều đó.
- C là tham số đối với biên mềm trong mô hình SVM. Nó kiểm soát sự đồng nhất của biên quyết định.
- Giá trị C lớn sẽ tạo ra một biên quyết định chặt chẽ, có thể dẫn đến việc mô hình không tổng quát hoá tốt (overfitting).
- Giá trị C nhỏ hơn sẽ tạo ra một biên mềm, cho phép mô hình tổng quát hoá tốt hơn nhưng có thể không xác định các điểm nhiễu.
- Gamma đặc trưng mức độ ảnh hưởng của một điểm dữ liệu đến việc tạo ra biên quyết định. Giá trị gamma càng cao, mức độ ảnh hưởng càng giảm.
- Đối với kernel “rbf”, “poly”, và “sigmoid”, gamma quyết định hình dạng của siêu phẳng quyết định.
- Kernel quyết định loại hàm nhân được sử dụng trong SVM để biến đổi không gian dữ liệu. Các giá trị phổ biến cho kernel là “linear”, “rbf” (Radial Basis Function), “poly” (Polynomial), và “sigmoid”.
Sau khi thực hiện train model, để xác định model của chúng ta có đủ tốt hay chưa cũng như đảm bảo khả năng nhận diện trong tương lai ta cần có một phương pháp đánh giá với tiêu chí cụ thể. Đối với bài toán Classification, model thường được đánh giá dựa trên Precission, Recall, F1-score.
Class | Tên cảm xúc | Precision | Recall | F1-Score |
---|---|---|---|---|
0 | Angry | 0.5561 | 0.5278 | 0.5416 |
1 | Fear | 0.5251 | 0.4947 | 0.5095 |
2 | Happy | 0.7767 | 0.8333 | 0.8040 |
3 | Neutral | 0.8191 | 0.7762 | 0.7971 |
4 | Sad | 0.4692 | 0.5156 | 0.4913 |
- Mô hình có hiệu suất khá tốt trong việc nhận diện cảm xúc “Happpy” và “Neutral”, với các độ đo hiệu suất đều ở mức cao.
- Cần cải thiện thêm hiệu suất cho các cảm xúc “Angry”, “Sad” và “Fear” để đảm bảo hiệu suất giữa các lớp.
- Hệ thống sẽ trả về thông tin phân loại trực tiếp trên video, không chỉ ảnh.
- Việc phân loại cần yếu tố thời gian, do đó yêu cầu thiết bị có cấu hình mạnh. Nhưng đa phần các loại điện thoại di động bây giờ không được thiết kế để thực hiện tác vụ này. Chúng em sẽ triển khai model lên web, người dùng sẽ giao tiếp với hệ thống thông qua web. Khi đó ta chỉ cần quan tâm tới tốc độ mạng (Vấn đề về mạng thì dễ giải quyết hơn).
- Hướng phát triển tiếp theo là kết hợp model này với Zoom, Google Meet, vì được sử dụng rộng rãi hiện nay ở Việt Nam cho nhiều mục đích.