4171| 2
|
[教程] 【AI2+AI】个人图像分类器:PICaboo(躲猫猫) |
本帖最后由 szjuliet 于 2022-1-6 01:15 编辑 【AI2+AI】个人图像分类器:PICaboo(躲猫猫)难度: 中级 课程类型: 教程 学科: 计算机科学 年级:
本教程由Youth Mobile Power提供 项目启动文件: Personal Image Classifier: PICaboo 教程地址: https://appinventor.mit.edu/explore/resources/ai/picaboo[/p] 在这两部分的教程中,你将学习一种名为机器学习(ML)的人工智能(AI),探索一个名为“图像分类”的例子 ———— 一种计算机将它们看到的东西放入不同容器中的方法。你将创建一个app,它可以看到你做出的人类手势并智能响应! 1. 项目简介本教程使用自己的个人图像分类(PIC)模型制作一个“躲猫猫”游戏。在游戏中,当你露出脸时,小宝宝会笑,你遮住脸时,小宝宝会哭。 什么是“躲猫猫”游戏?小宝宝不太明白如何理解自己周围的视觉世界。他们缺乏一种理解,即物体在看不见的情况下仍然存在。这个概念被著名的儿童心理学家让·皮亚杰(Jean Piaget)描述为“客体永存性”(object permanence)。在美国,父母经常和他们年幼的宝宝玩一种叫“躲猫猫”的游戏。在游戏中,父母会用手或枕头等将自己的脸藏起来,在宝宝吃惊的时候脸“消失不见”。然后妈妈突然露出脸来说:“躲猫猫,我看见你了!”——这让宝宝非常高兴,他惊讶地看到父母突然“不知道从哪儿冒出来”。这里有一个躲猫猫的视频。 机器学习理解视觉数据有点像小宝宝学习视觉线索。小宝宝和计算机都需要很多例子(大量的训练数据)。此外他们还需要示例的类别易于区分(在视觉上截然不同的数据类)。 重要提示:请注意不能使用模拟器来测试app。模拟器不能运行MIT App Inventor扩展,如PersonalImageClassifier (PIC)扩展。为了确保移动设备具备PIC所需的硬件能力,在AI2伴侣上运行LookTest.aia文件(可在附件中下载)进行测试。如果在手机屏幕顶部的状态显示“status: Ready!”,说明 PersonalImageClassifier 扩展可在手机上正常工作。如果屏幕没有显示,手机将无法运行app及对应的扩展。如果扩展能够正常工作,请将设备指向一个对象并按下“分类”按钮,尝试对某些对象进行分类。 2. PICaboo 第1部分:训练模型首先,需要训练一个图像分类模型。这个训练在App Inventor - 个人图像分类器页面进行。按照PICaboo第1部分pdf文档(可在附件中下载)中的说明进行操作。在本步骤的最后导出model.MDL文件到你的计算机。在本教程的下一部分中,你需要将这个文件上传到App Inventor。 3. PICaboo 第2部分:设计和编写app图形用户界面 (GUI) 的示例位于启动文件中(请在附件中下载)。 (如果你愿意,可以更改组件的属性以获得你想要的外观。但是不要重命名组件,因为本教程将参考说明中的给定名称。) 4. 上传训练好的模型文件单击“非可视组件” PersonalImageClassifier1。 该组件将根据你训练的模型对你的姿势进行分类。 通过单击“模型”属性并选择保存在电脑中的模型文件并上传。 5. 事件序列下图显示了 PICaboo 中的事件序列。 用与正确事件对应的字母填写缺失的块。 (正确答案:从左至右为A, B, C) 6. 查看已有代码现在切换到“逻辑设计”来为app编写行为。 首先查看启动文件中已经有的代码块。 这些代码块在app首次启动时设置 PersonalImageClassifier。 如果 PersonalImageClassifier 返回错误,事件块会在 StatusLabel 中显示错误。 当分类器准备好开始对图像进行分类时,将调用 块。 StartButton 和 ToggleCameraButton 已启用。 “Ready”显示在StatusLabel中。 BarLabel1 和 BarLabel2 被分配了模型标签的名称(“Me”和“NotMe”)。 这些是你在模型中训练的分类。 当按下 ToggleCameraButton 时,摄像头从前置摄像头切换到后置摄像头,反之亦然。 StartButton 会停止或启动 PersonalImageClassifier 分类过程。 按钮文本从“Start”变为“Stop”,反之亦然。 7. 图像分类结果(第 1 部分)现在我们终于来到提供分类模型重要结果的代码块。在编码之前,让我们看看这个来自组件 PersonelImageClassifier 的数据是如何接收和使用的。 当分类器为其所见生成分类时,将调用 事件处理程序块。在本教程中,你的主要任务是完成此块中的代码。 以称为“字典”的数据结构的形式列出了分类。在计算机科学中,字典存储键/值对 ———— 很像现实世界的字典存储单词及其定义。但与现实世界的字典不同,字典数据结构可以保存与任意值关联的任意键。它们几乎可以是任何类型:字母、单词、多字串、数字以及所有这些的组合。下面是一个例子: 在上面的键/值对示例中,键是“Name”,值是“Tel”。这个字典是一本普通的电话簿。 8. 图像分类结果(第 2 部分)PersonelImageClassifier 返回的列出了两个类(“Me”和“NotMe”)的名称(键)及其置信度(值)。 下面的代码块代表了这个数据结构。 (注意:字典按置信度从高到低的顺序列出了结果中的键/值对。) 在此示例中,由具有 0.925(即 92.5%)的高置信水平的分类“Me”和具有 0.075(即 7.5%)的低置信水平的分类“NotMe”组成。 这些置信水平由你在训练阶段创建的模型计算得出。 在这种情况下,PICaboo app中的婴儿会微笑,因为计算机确信它看到了你的脸。 9. 图像分类结果(第 3 部分)要从中找出特定键的值,可以使用代码块。 在下面的示例中,如果你在给定的字典中搜索关键字“Me”,会得到 0.925 ———— 其相关的置信度(值)。 如果没有匹配的键,返回的值是 0。 10. 获得分类事件处理程序块通过初始化两个局部变量开始。 (局部变量只能在定义它们的代码块内使用。)
你很快就会看到代码如何使用上面这些局部变量。 11. 初始化变量将变量 和 初始化为与每个类“Me”和“NotMe”相关的置信水平。 (请记住,这些置信水平是 返回的字典数据结构中的值。) 提示 如图所示初始化局部变量。 如果将鼠标悬停在参数上,会看到所需的块。 请务必用数学块中的“0”替换默认的“未找到”文本块。 这确保在分类器尚未返回结果的情况下分配 0% 的置信水平。 解决方案 12. 事件序列概括当分类器得到分类时,你可以:
13. 设置Percentage和BarGraph首先将 Percentage1 文本设置为“Me”类的置信度。 该值是 0 到 1 之间的小数,因此你需要将其转换为百分比(乘以 100)并添加“%”符号。 例如,如果置信水平为 0.75,则此适当百分比为 75%。 其次,请注意 BarGraph1 是一个彩色标签,通过其宽度显示“Me”类的置信度。 相应地设置其 WidthPercent。 你可以复制你编写的早期代码的一部分。 最后,对 Percentage2 和 BarGraph2 做类似的事情。 对于这些情况,请务必使用 局部变量。 提示
解决方案 14. 构建条件语句现在构建 条件块,它测试具有更高置信度的类是否是“Me”分类。 这意味着计算机会以更高的置信度识别出你的面部。 提示 解决方案 15. 显示开心宝宝和难过宝宝首先为 的 then 部分构建代码:
现在,为 的 else 部分构建代码并将这些代码块对齐到它们所属的位置。 (使用模板中已有的浅粉色色块。) 提示 解决方案 16. 完成代码完成后整个代码应如下所示: 17. 测试app你能和屏幕上的宝宝一起玩躲猫猫吗? 连接到 AI 伴侣来测试app。 记得在遮脸时将手指张开一个裂缝来观察宝宝的反映。 宝宝是不是你一露脸就笑,一遮脸就哭? 置信度水平会发生什么变化? 当你的手在你面前上下挥动会发生什么?置信度水平会发生什么变化? 恭喜你完成了! 你已经创建了一款人工智能app,它使用机器学习对图像进行分类并智能地响应你的操作。 拓展你的app以下是扩展项目的一些想法。探索这些想法或想出你自己的拓展!
关于Youth Mobile Power我们很多人整天都在手机上度过,痴迷各种app。尽管我们知道手机会对我们的注意力、隐私甚至安全构成威胁,但我们还是继续打字和刷手机。但“口袋里的电脑”也为年轻人创造了未开发的机会,让他们学习、联系并改变我们的社区。 这就是为什么麻省理工学院和YR媒体联手推出了青年移动动力系列。YR青少年制作故事,突出年轻人如何以令人惊讶和强大的方式使用手机。与此同时,麻省理工学院的团队正在不断改进MIT App Inventor,让像你这样的用户能够创建像YR报道中提到的那样的APP。 回归初心:从故事中获得灵感,开始制作你自己的app吧! YR和麻省理工学院的合作部分得到了美国国家科学基金会的支持。本材料基于美国国家科学基金会在批准号下支持的工作。(1906895, 1906636)。本材料中所表达的任何意见、发现、结论或建议均为作者个人观点,并不一定反映美国国家科学基金会的观点。 点击此处查看更多由YR创建的app和交互式新闻内容。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed