总机电话:010-64522026   编辑部:010-62178764   邮发代码:82-418   刊号:ISSN1671-4350   定价:16.00

[追踪]人工智能与项目式学习:设计一个有AI味的启动仪式道具

文_谢作如/温州科技高级中学

2024-01/总第334期

阅读数5

问题的提出

2017年10月,在全国中小学校园创客嘉年华活动启动仪式中,笔者设计了一个名叫“汇·聚”的启动仪式道具,10多位国内创客骨干教师各持一块micro:bit(开源硬件),不断按下按键,每按一次都能在大屏幕上涂抹一个“点”的颜色,当“点”越来越多,就组成了活动启动的画面。2023年3月,在上海人工智能实验室主办的高校教育技术学专业AI课程建设高峰论坛上,实验室的工作人员开发了“高校师范生AI教育共同体”启动仪式道具,很有AI味:用摄像头识别嘉宾是否在做“点赞”手势,大屏幕上用进度条呈现“点赞”人次,进度条加载完毕后就能触发酷炫的视频,宣告“高校师范生AI教育共同体”正式成立。于是,在温州科技高级中学的首届科技节活动筹备会议中,大家提出参考上海人工智能实验室的启动仪式,“复刻”(remake)一个有AI味的启动道具,应用于学校科技节活动。


启动仪式道具核心技术分析

启动仪式道具的工作流程分析

一个典型的启动仪式大致可以分为活动准备、嘉宾交互和正式启动3个环节。其中嘉宾交互环节一般要体现“汇聚力量”这一主题,而正式启动环节直接播放一个启动视频是最稳妥、经济的选择。因此,一般的启动仪式道具工作流程如图1所示,可以看出,不同启动道具核心区别在于嘉宾交互环节。

202401xjn1-1.jpg

图1 启动仪式道具工作流程

嘉宾交互环节的识别技术选择

在AI识别技术方面,有很多可以选择的对象(表情、手势、声音等)和启动方式(呈现笑脸数量、做同一种手势数量、鼓掌热烈程度等)。从AI识别的难度看,动作是一种序列数据,识别起来难度较大,尤其在嘉宾数量比较多的情况下,序列数据的推理对算力的要求也比较高。而无论是识别表情、手势还是吉祥物一类的目标,相关技术均比较成熟,比如上海人工智能实验室的XEduHub工具,内置了很多常见的检测模型,使得编程难度进一步降低。经过权衡,学生最终选择了识别双手点赞姿势作为识别对象,一方面双手点赞很有仪式感,AI判断起来较容易,更重要的是,在硬件上仅需一个高清摄像头即可,很容易实现。


设计启动道具项目实施步骤

素材准备

启动画面和视频制作

首先,需要制作一个嘉宾交互环节的等待画面和一段正式启动环节需要的视频素材。其中,等待画面可用AIGC工具生成一张图,留下显示画面和数字或滚动条的位置。比如,图2中心形的位置,用于显示摄像头实时采集的画面,而右侧区域用于显示交互检测的进度。制作视频的工具和方法很多,在此不作详述。

202401xjn1-2.jpg

图2 等待画面演示效果

数据集采集和整理

从人工智能解决问题的角度看,采集相应的数据从而形成数据集是后续模型训练的常规准备工作。但识别“双手点赞”姿势,属于人体关键点的识别技术,相关技术已非常普遍,比如MediaPipe、MMPose和XEduhub等工具,均提供了很好的预训练模型,开箱即用,无须收集数据。当然,如果识别的是某个特定的Logo图片或吉祥物,则须做数据标注。

环境搭建

虽然浦育平台(www.openinnolab.org.cn)提供了已经预装好开发环境的容器(虚拟服务器),打开浏览器就能开发这个AI项目。但考虑到AI程序最终要运行在本地电脑上,还是需要先搭建开发和运行环境,可使用XEdu一键安装包或pip方式安装Python库。

XEdu一键安装包

XEdu一键安装包内置了Python环境和必要的模块,直接解压就能使用,支持Win7(64位)及以上系统。如果直接运行Thonny文件出错,则可以先运行“故障解决”脚本,一般的问题都能得到解决。

pip方式安装

开发Python程序需要一个趁手的工具,笔者推荐Thonny。安装Thonny后,再通过“包管理”工具安装“XEdu-python”。熟悉命令行的话,可以直接输入“pip install XEdu-python”完成安装。

代码编写

从启动仪式道具的工作流程可看出,项目代码需实现三大功能。

处理摄像头画面

摄像头画面的获取,一般都是借助OpenCV库。这方面的代码可借助大语言模型生成,比如在“商量”(商汤大语言模型)中输入类似的提示词(Prompt):“请给我一段Python代码,获取摄像头画面,并逐帧缩小显示在一张名为“bg.jpg”的图片中间,并在图片中的右边显示数字”。大语言模型会输出一段代码,复制到Thonny中就能运行。

识别嘉宾手势

XEduHub内置的人体关键点检测任务主要有“pose_body”“pose_face”“pose_hand”等,分别对应身体、脸部和手部检测。因为有很多嘉宾,直接识别手部效果不好,常见的做法是先检测出身体(任务名为det_body),然后把身体的画面截取出来提取人体或手部关键点(任务名分别为pose_body17和pose_hand),再判断是否做了“双手点赞”的动作,其流程为:获取摄像头画面—检测人体—检测手势—计数。

在XEduHub中,人体关键点检测的任务有很多种。如图3所示,任务名称最后的数字表示关键点的个数。运行不同模型所需的算力和时间也不同,与本地电脑算力密切相关。交互检测环节可能有很多嘉宾,速度非常重要,因此,检测“双手点赞”姿势未必需要“pose_wholebody133”,可以找一些巧妙的办法,比如用“pose_body17”,判断关键点9和10(左右双腕)是否高过腰线(关键点11和12)等。

202401xjn1-3.jpg

图3 XEduHub内置人体关键点识别任务

启动视频的控制与播放

在Python中,有很多方法可以实现加载、播放视频,比如“movie.py”“pygame”。鉴于代码已经用到了OpenCV,也可选择OpenCV播放视频,另外开启一个进程播放音乐。


项目成果演示与反馈

这个有AI味的启动仪式给温州科技高中的师生留下了深刻印象,大家惊叹于学生已经能够驾驭AI功能,也感慨于AI技术的平民化。美中不足的是,由于嘉宾从3位增加到9位,增大了AI模型计算的压力,电脑在算力方面有些力不从心。

在设计过程中,学生还提出了更多的创意,比如大家一致认为用整齐的动作能让现场气氛变得更热烈;对编程有研究的一名学生则提出另一种视频控制方案:在预先做好的视频中,将进度条(或百分比)均匀制作在视频中,而不是靠现场合成,然后在现场用代码控制视频播放的进度。

至于AI检测部分,学生也有更多想法,比如直接用任务“det_hand”检测出手,再用任务“pose_hand”检测手部关键点,可能速度更快;或者用BP网络(全连接网络)训练一个手部关键点的分类模型,用于判断是否做了点赞姿势,比用“if”判断要精确,可减少误判。


参考文献

[1]谢作如,张敬云. 用Micro:bit做活动启动仪式道具[J]. 中国信息技术教育,2017(21):64-67.

[2] XEdu文档. XEduHub功能详解[EB/OL]. (2023-12-1)[2023-11-23]. https://xedu.readthedocs.io/zh/master/xedu_hub/introduction.html.


以下平台可使用同一账号密码登录,点击开始同步密码

确认