Session 845 minutes

Buổi 8: Nhận diện Cảm xúc Khuôn mặt (Emotion Recognition) & Tổng kết Phần 2

Learning objective: Phân loại biểu cảm Vui vẻ, Buồn, Ngạc nhiên, Tức giận và Bình thường, đặt ngưỡng tin cậy để nhân vật phản hồi phù hợp.

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.
AI chỉ dự đoán biểu cảm từ hình ảnh khuôn mặt. AI không thể biết chính xác cảm xúc hoặc suy nghĩ thật sự của một người.

🎯 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ệnNhãn
Khuôn mặt đang cườiVui vẻ
Khuôn mặt có khóe miệng hướng xuốngBuồ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ặtTứ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:

text
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ảm

2. Thêm Extension nhận diện biểu cảm

Trong PictoBlox:

  1. 1Bấm Mở rộng — Extension.
  2. 2Chọn Face Detection hoặc tiện ích nhận diện biểu cảm.
  3. 3Cho phép PictoBlox sử dụng webcam.
  4. 4Chờ mô hình AI được tải hoàn tất.
  5. 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:

text
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.
🔒 Không lưu hoặc chia sẻ hình ảnh khuôn mặt của người khác khi chưa được đồng ý.

4. Đọc kết quả nhận diện

Tạo hai biến:

text
Biểu_cảm
Độ_tin_cậy

Cập nhật kết quả liên tục:

text
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.

🔍 Tùy phiên bản, tên biểu cảm trả về có thể là tiếng Anh (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

Mục Trọng Tâm

Khi người dùng vui vẻ

text
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ây
Mục Trọng Tâm

Khi người dùng buồn

text
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ây
Mục Trọng Tâm

Khi người dùng ngạc nhiên

text
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 [Ồ]
Mục Trọng Tâm

Khi người dùng tức giận

text
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ây

6. 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.

text
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

Mục Trọng Tâm

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.

text
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ĩ]
Nên dùng lời nói tích cực, lịch sự và không đưa ra kết luận về trạng thái tâm lý của người dùng.

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:

  1. 1Thêm âm thanh khác nhau cho từng biểu cảm.
  2. 2Đếm số lần AI nhận diện biểu cảm vui vẻ.
  3. 3Tạo nhân vật đổi màu theo biểu cảm.
  4. 4Hiển thị biểu tượng emoji tương ứng.
  5. 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:

text
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.
Mục Trọng Tâm

Câu hỏi nhanh

  1. 1AI dựa vào đâu để phân loại biểu cảm?
  2. 2Độ tin cậy có ý nghĩa gì?
  3. 3Vì sao cần đặt ngưỡng độ tin cậy?
  4. 4AI có thể biết chính xác cảm xúc thật của một người không?

Sẵn sàng kiểm tra kiến thức?

Chuyển sang phòng thi riêng để làm bài, xem kết quả và giải thích.

Bài Đánh giá Năng lực Phần 2: Computer Vision & AI Pose Tracking →14 questions · 15 minutes