Buổi 8: Nhận diện Cảm xúc Khuôn mặt (Emotion Recognition) & Tổng kết Phần 2
Theory & practice
😊 Bài 8: Cảm xúc Nhân tạo — Robot Biết Cười và Biết Buồn
🤖 Robot có thể hiểu cảm xúc không?
Trong bài học này, chúng ta sẽ sử dụng AI để nhận diện một số biểu cảm trên khuôn mặt qua webcam.
Mạng nơ-ron học sâu sẽ phân tích hình ảnh và dự đoán biểu cảm gần giống nhất, chẳng hạn:
- Vui vẻ.
- Buồn.
- Ngạc nhiên.
- Tức giận.
- Bình thường.
🎯 Mục tiêu bài học
Sau bài học này, bạn có thể:
- Hiểu cách AI phân loại biểu cảm khuôn mặt.
- Bật camera và phân tích hình ảnh trong PictoBlox.
- Đọc tên biểu cảm và độ tin cậy.
- Cho nhân vật phản ứng theo kết quả nhận diện.
- Nhận biết một số giới hạn của hệ thống AI.
1. AI học nhận diện biểu cảm như thế nào?
Để xây dựng hệ thống nhận diện biểu cảm, máy tính được học từ nhiều hình ảnh khuôn mặt đã có nhãn.
Ví dụ:
| Hình ảnh huấn luyện | Nhãn |
|---|---|
| Khuôn mặt đang cười | Vui vẻ |
| Khuôn mặt có khóe miệng hướng xuống | Buồn |
| Mắt mở to, miệng mở | Ngạc nhiên |
| Lông mày nhíu lại, môi mím chặt | Tức giận |
| Khuôn mặt không biểu cảm rõ | Bình thường |
Mạng nơ-ron tìm các đặc điểm trong hình ảnh rồi so sánh chúng với những mẫu đã học.
Quá trình cơ bản:
Hình ảnh webcam
→ Phát hiện khuôn mặt
→ Phân tích đặc điểm
→ So sánh với dữ liệu đã học
→ Dự đoán biểu cảm2. Thêm Extension nhận diện biểu cảm
Trong PictoBlox:
- 1Bấm Mở rộng — Extension.
- 2Chọn Face Detection hoặc tiện ích nhận diện biểu cảm.
- 3Cho phép PictoBlox sử dụng webcam.
- 4Chờ mô hình AI được tải hoàn tất.
- 5Kiểm tra các khối nhận diện đã xuất hiện.
Tên extension và khối lệnh có thể khác nhẹ tùy phiên bản PictoBlox.
3. Bật camera và phân tích hình ảnh
Tạo chương trình:
Khi bấm vào cờ xanh
Bật video trên sân khấu với độ mờ 20%
Liên tục
Phân tích hình ảnh từ cameraĐể nhận diện tốt hơn:
- Ngồi ở nơi có đủ ánh sáng.
- Đặt khuôn mặt ở chính giữa camera.
- Không đứng quá xa webcam.
- Tránh để nhiều người cùng xuất hiện.
- Giữ biểu cảm trong khoảng một giây.
4. Đọc kết quả nhận diện
Tạo hai biến:
Biểu_cảm
Độ_tin_cậyCập nhật kết quả liên tục:
Khi bấm vào cờ xanh
Bật video trên sân khấu với độ mờ 20%
Liên tục
Phân tích hình ảnh từ camera
Đặt [Biểu_cảm] thành
[Biểu cảm của khuôn mặt 1]
Đặt [Độ_tin_cậy] thành
[Độ tin cậy của biểu cảm khuôn mặt 1]Biểu_cảm lưu tên kết quả dự đoán.
Độ_tin_cậy cho biết AI chắc chắn đến mức nào. Độ tin cậy càng cao thì kết quả càng đáng tin hơn, nhưng vẫn có thể sai.
happy, sad, surprise, angry, neutral). Hãy cho nhân vật Nói [Biểu_cảm] để xem đúng tên, rồi dùng chính tên đó trong các khối Nếu.5. Cho nhân vật phản ứng theo biểu cảm
Khi người dùng vui vẻ
Nếu <Biểu_cảm bằng [Vui vẻ]> thì
Chuyển sang trang phục [Robot cười]
Nói "Nụ cười của bạn thật tuyệt!" trong 2 giâyKhi người dùng buồn
Nếu <Biểu_cảm bằng [Buồn]> thì
Chuyển sang trang phục [Robot động viên]
Nói "Hãy cùng thử một hoạt động vui nhé!" trong 2 giâyKhi người dùng ngạc nhiên
Nếu <Biểu_cảm bằng [Ngạc nhiên]> thì
Chuyển sang trang phục [Robot ngạc nhiên]
Phát âm thanh [Ồ]Khi người dùng tức giận
Nếu <Biểu_cảm bằng [Tức giận]> thì
Chuyển sang trang phục [Robot bình tĩnh]
Nói "Mình cùng hít thở thật chậm nhé!" trong 2 giây6. Chỉ phản ứng khi AI đủ tin cậy
Nếu độ tin cậy thấp, nhân vật không nên phản ứng ngay.
Nếu <Độ_tin_cậy lớn hơn 70> thì
Nếu <Biểu_cảm bằng [Vui vẻ]> thì
Chuyển sang trang phục [Robot cười]
Không thì
Nếu <Biểu_cảm bằng [Buồn]> thì
Chuyển sang trang phục [Robot động viên]
Không thì
Nói "Mình chưa nhận diện rõ khuôn mặt."Việc đặt ngưỡng giúp nhân vật tránh thay đổi trạng thái liên tục khi AI chưa chắc chắn.
7. Dự án nhỏ: Robot đồng hành cảm xúc
Nhiệm vụ
Tạo một robot thay đổi khuôn mặt và lời nói theo biểu cảm của người dùng.
Khi bấm vào cờ xanh
Bật video trên sân khấu với độ mờ 20%
Liên tục
Phân tích hình ảnh từ camera
Đặt [Biểu_cảm] thành [Biểu cảm của khuôn mặt 1]
Đặt [Độ_tin_cậy] thành [Độ tin cậy của biểu cảm]
Nếu <Độ_tin_cậy lớn hơn 70> thì
Nếu <Biểu_cảm bằng [Vui vẻ]> thì
Chuyển sang trang phục [Vui]
Nói "Chào bạn! Hôm nay thật tuyệt!" trong 1 giây
Không thì
Nếu <Biểu_cảm bằng [Buồn]> thì
Chuyển sang trang phục [Động viên]
Nói "Mình luôn sẵn sàng đồng hành cùng bạn." trong 1 giây
Không thì
Nếu <Biểu_cảm bằng [Ngạc nhiên]> thì
Chuyển sang trang phục [Ngạc nhiên]
Nói "Có điều gì thú vị vậy?" trong 1 giây
Không thì
Nếu <Biểu_cảm bằng [Tức giận]> thì
Chuyển sang trang phục [Bình tĩnh]
Nói "Mình cùng hít thở thật chậm nhé!" trong 1 giây
Không thì
Chuyển sang trang phục [Bình thường]
Không thì
Chuyển sang trang phục [Đang suy nghĩ]8. Vì sao AI có thể nhận diện sai?
Kết quả có thể không chính xác khi:
- Phòng quá tối hoặc ánh sáng chiếu từ phía sau.
- Khuôn mặt bị che bởi tóc, khẩu trang hoặc bàn tay.
- Người dùng đứng quá xa camera.
- Khuôn mặt quay sang một bên.
- Biểu cảm thay đổi quá nhanh.
- Dữ liệu huấn luyện chưa đủ đa dạng.
Nếu AI nhận diện sai, hãy thay đổi ánh sáng, nhìn thẳng vào camera và giữ biểu cảm ổn định.
9. AI có thật sự biết cảm xúc không?
AI đang thực hiện phân loại biểu cảm khuôn mặt, không phải đọc suy nghĩ.
Một người có thể:
- Cười nhưng vẫn đang lo lắng.
- Không cười nhưng vẫn cảm thấy vui.
- Có biểu cảm tự nhiên khác với dữ liệu AI đã học.
Vì vậy, không nên dùng kết quả AI để phán xét, chấm điểm hoặc đưa ra quyết định quan trọng về một người.
🧩 Thử thách
Hãy nâng cấp dự án bằng một ý tưởng:
- 1Thêm âm thanh khác nhau cho từng biểu cảm.
- 2Đếm số lần AI nhận diện biểu cảm vui vẻ.
- 3Tạo nhân vật đổi màu theo biểu cảm.
- 4Hiển thị biểu tượng emoji tương ứng.
- 5Chỉ phản ứng khi cùng một biểu cảm được nhận diện ba lần liên tiếp.
Ví dụ đếm biểu cảm vui:
Nếu <Biểu_cảm bằng [Vui vẻ]> thì
Thay đổi [Số_lần_vui] một lượng 1✅ Ghi nhớ
- AI học từ nhiều hình ảnh khuôn mặt đã được gắn nhãn.
- Mạng nơ-ron dùng các đặc điểm hình ảnh để dự đoán biểu cảm.
- Độ tin cậy thể hiện mức chắc chắn của dự đoán.
- Nên đặt ngưỡng tin cậy trước khi nhân vật phản ứng.
- Ánh sáng và vị trí khuôn mặt ảnh hưởng đến kết quả.
- AI nhận diện biểu cảm, không biết chính xác cảm xúc thật.
Câu hỏi nhanh
- 1AI dựa vào đâu để phân loại biểu cảm?
- 2Độ tin cậy có ý nghĩa gì?
- 3Vì sao cần đặt ngưỡng độ tin cậy?
- 4AI có thể biết chính xác cảm xúc thật của một người không?