Session 845 minutes

第8课:面部情绪识别(Emotion Recognition)与第二部分总结

Learning objective: 识别开心、难过、惊讶、生气和平静等表情,设置置信度阈值让角色做出合适的回应。

Theory & practice

😊 第8课:人工情感——会笑也会难过的机器人

🤖 机器人能理解情绪吗?

本课我们用 AI 通过摄像头识别一些面部表情。

深度神经网络会分析图像,并预测最接近的表情,例如:

  • 开心。
  • 难过。
  • 惊讶。
  • 生气。
  • 平静。
AI 只能根据人脸图像预测表情,无法准确知道一个人真实的感受或想法。

🎯 学习目标

完成本课后,你将能够:

  • 理解 AI 如何对面部表情进行分类。
  • 在 PictoBlox 中打开摄像头并分析图像。
  • 读取表情名称和置信度。
  • 让角色根据识别结果做出反应。
  • 认识 AI 系统的一些局限。

1. AI 如何学会识别表情?

为了建立表情识别系统,电脑会学习大量带标签的人脸图像。

例如:

训练图像标签
微笑的脸开心
嘴角向下的脸难过
眼睛睁大、嘴巴张开惊讶
眉头紧皱、嘴唇紧闭生气
没有明显表情的脸平静

神经网络在图像中寻找特征,并与学过的样本比较。

基本流程:

text
摄像头图像
→ 检测人脸
→ 分析特征
→ 与学过的数据比较
→ 预测表情

2. 添加表情识别扩展

在 PictoBlox 中:

  1. 1点击 扩展 Extension。
  2. 2选择 Face Detection 或表情识别扩展。
  3. 3允许 PictoBlox 使用摄像头。
  4. 4等待 AI 模型加载完成。
  5. 5检查识别积木是否已出现。

不同版本的 PictoBlox 中,扩展和积木名称可能略有不同。

3. 打开摄像头并分析图像

编写程序:

text
当绿旗被点击
开启视频,透明度 20%

重复执行
    分析摄像头图像

为了识别得更准确:

  • 坐在光线充足的地方。
  • 让脸位于摄像头中央。
  • 不要离摄像头太远。
  • 避免多人同时出现在画面中。
  • 每个表情保持约一秒。
🔒 未经同意,不要保存或分享别人的人脸图像。

4. 读取识别结果

创建两个变量:

text
表情
置信度

持续更新结果:

text
当绿旗被点击
开启视频,透明度 20%

重复执行
    分析摄像头图像

    将 [表情] 设为
        [人脸 1 的表情]

    将 [置信度] 设为
        [人脸 1 表情的置信度]

表情 保存预测出的表情名称。

置信度 表示 AI 有多大把握。置信度越高,结果越可靠,但仍然可能出错。

🔍 不同版本返回的表情名称可能是英文(happy、sad、surprise、angry、neutral)。先让角色 说 [表情] 看看准确的名称,再在 如果 积木中使用这些名称。

5. 让角色根据表情做出反应

Mục Trọng Tâm

用户开心时

text
如果 <表情 = [开心]> 那么
    换成 [微笑机器人] 造型
    说 "你的笑容真棒!" 2 秒
Mục Trọng Tâm

用户难过时

text
如果 <表情 = [难过]> 那么
    换成 [鼓励机器人] 造型
    说 "我们一起做点开心的事吧!" 2 秒
Mục Trọng Tâm

用户惊讶时

text
如果 <表情 = [惊讶]> 那么
    换成 [惊讶机器人] 造型
    播放声音 [哇]
Mục Trọng Tâm

用户生气时

text
如果 <表情 = [生气]> 那么
    换成 [冷静机器人] 造型
    说 "我们一起慢慢深呼吸吧!" 2 秒

6. 只在 AI 足够有把握时才反应

置信度低时,角色不应立刻做出反应。

text
如果 <置信度 大于 70> 那么
    如果 <表情 = [开心]> 那么
        换成 [微笑机器人] 造型
    否则
        如果 <表情 = [难过]> 那么
            换成 [鼓励机器人] 造型
否则
    说 "我还看不清你的脸。"

设置阈值能避免 AI 不确定时角色频繁切换状态。

7. 小项目:情绪伙伴机器人

Mục Trọng Tâm

任务

制作一个会根据用户表情改变表情和话语的机器人。

text
当绿旗被点击
开启视频,透明度 20%

重复执行
    分析摄像头图像

    将 [表情] 设为 [人脸 1 的表情]
    将 [置信度] 设为 [表情的置信度]

    如果 <置信度 大于 70> 那么
        如果 <表情 = [开心]> 那么
            换成 [开心] 造型
            说 "你好!今天真棒!" 1 秒
        否则
            如果 <表情 = [难过]> 那么
                换成 [鼓励] 造型
                说 "我一直在你身边。" 1 秒
            否则
                如果 <表情 = [惊讶]> 那么
                    换成 [惊讶] 造型
                    说 "有什么有趣的事吗?" 1 秒
                否则
                    如果 <表情 = [生气]> 那么
                        换成 [冷静] 造型
                        说 "我们一起慢慢深呼吸吧!" 1 秒
                    否则
                        换成 [平静] 造型
    否则
        换成 [思考中] 造型
使用积极、礼貌的语言,不要对用户的心理状态下结论。

8. AI 为什么会识别错?

以下情况可能导致结果不准确:

  • 房间太暗或逆光。
  • 脸被头发、口罩或手挡住。
  • 用户离摄像头太远。
  • 脸侧向一边。
  • 表情变化太快。
  • 训练数据不够多样。

如果 AI 识别错了,可以调整光线、正对摄像头并保持表情稳定。

9. AI 真的懂情绪吗?

AI 做的是面部表情分类,不是读心术。

一个人可能:

  • 在微笑,但心里很担心。
  • 没有笑,但心里很开心。
  • 有着与 AI 训练数据不同的自然表情。

因此,不应该用 AI 的结果去评判、打分或对一个人做重要决定。

🧩 挑战

选择一个想法升级项目:

  1. 1为每种表情添加不同的声音。
  2. 2统计 AI 识别到开心表情的次数。
  3. 3让角色根据表情改变颜色。
  4. 4显示对应的表情符号。
  5. 5只有同一表情连续识别三次才做出反应。

统计开心次数的例子:

text
如果 <表情 = [开心]> 那么
    将 [开心次数] 增加 1

✅ 记住

  • AI 从大量带标签的人脸图像中学习。
  • 神经网络利用图像特征预测表情。
  • 置信度表示预测的确定程度。
  • 角色反应前应设置置信度阈值。
  • 光线和人脸位置会影响结果。
  • AI 识别的是表情,并不知道真实的情绪。
Mục Trọng Tâm

快问快答

  1. 1AI 根据什么对表情进行分类?
  2. 2置信度是什么意思?
  3. 3为什么需要设置置信度阈值?
  4. 4AI 能准确知道一个人真实的情绪吗?

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.

第2部分能力测评:计算机视觉与 AI 姿态跟踪 →14 questions · 15 minutes