Session 845 minutes
第8课:面部情绪识别(Emotion Recognition)与第二部分总结
Learning objective: 识别开心、难过、惊讶、生气和平静等表情,设置置信度阈值让角色做出合适的回应。
Theory & practice
😊 第8课:人工情感——会笑也会难过的机器人
🤖 机器人能理解情绪吗?
本课我们用 AI 通过摄像头识别一些面部表情。
深度神经网络会分析图像,并预测最接近的表情,例如:
- 开心。
- 难过。
- 惊讶。
- 生气。
- 平静。
AI 只能根据人脸图像预测表情,无法准确知道一个人真实的感受或想法。
🎯 学习目标
完成本课后,你将能够:
- 理解 AI 如何对面部表情进行分类。
- 在 PictoBlox 中打开摄像头并分析图像。
- 读取表情名称和置信度。
- 让角色根据识别结果做出反应。
- 认识 AI 系统的一些局限。
1. AI 如何学会识别表情?
为了建立表情识别系统,电脑会学习大量带标签的人脸图像。
例如:
| 训练图像 | 标签 |
|---|---|
| 微笑的脸 | 开心 |
| 嘴角向下的脸 | 难过 |
| 眼睛睁大、嘴巴张开 | 惊讶 |
| 眉头紧皱、嘴唇紧闭 | 生气 |
| 没有明显表情的脸 | 平静 |
神经网络在图像中寻找特征,并与学过的样本比较。
基本流程:
text
摄像头图像
→ 检测人脸
→ 分析特征
→ 与学过的数据比较
→ 预测表情2. 添加表情识别扩展
在 PictoBlox 中:
- 1点击 扩展 Extension。
- 2选择 Face Detection 或表情识别扩展。
- 3允许 PictoBlox 使用摄像头。
- 4等待 AI 模型加载完成。
- 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为每种表情添加不同的声音。
- 2统计 AI 识别到开心表情的次数。
- 3让角色根据表情改变颜色。
- 4显示对应的表情符号。
- 5只有同一表情连续识别三次才做出反应。
统计开心次数的例子:
text
如果 <表情 = [开心]> 那么
将 [开心次数] 增加 1✅ 记住
- AI 从大量带标签的人脸图像中学习。
- 神经网络利用图像特征预测表情。
- 置信度表示预测的确定程度。
- 角色反应前应设置置信度阈值。
- 光线和人脸位置会影响结果。
- AI 识别的是表情,并不知道真实的情绪。
Mục Trọng Tâm
快问快答
- 1AI 根据什么对表情进行分类?
- 2置信度是什么意思?
- 3为什么需要设置置信度阈值?
- 4AI 能准确知道一个人真实的情绪吗?