全链路AI课程设计与开发

作者: 邱奕盛 谢作如

全链路AI课程设计与开发0

摘要:全链路AI的开发是指将AI技术应用在数据集制作、模型训练和模型应用等多个环节。本文依据全链路AI开发思路,实现了一款视力检测AI小助手的制作。除了在项目开发过程中使用了手部检测模型、关键点提取模型和手势判断模型这三个AI模型外,这款视力检测AI小助手还在多处应用了AI技术,如借助大模型的多轮对话完成较复杂程序的编写,解决数据归一化问题等,为中小学实施人工智能教育提供了新的思路。

关键词:视力检测;全链路AI;XEdu;大模型

在青少年AI教学设计中,选择贴近生活的应用场景,面向真实问题解决能提升学生的学习兴趣。在和学生讨论的过程中笔者发现,视力检测工作没法一个人完成,必须团队合作才行。其中最大的难题是,需要工作人员来引导并确认结果——你所指的方向是不是正确。显然,视力检测的引导工作很枯燥,完全可以用AI来替代。

能否设计一款AI小助手,不借助他人就能自行完成视力检测?从技术上看,通过摄像头采集画面,再训练一个能识别手势方向的AI模型就能做到。但要从零开始实现这个AI小助手的开发,说起来简单实则复杂,不仅需要训练手势判断AI模型,还涉及技术分析、数据准备、模型训练和模型应用等多个环节。其中,最烦琐的工作莫过于采集手势数据,难度最高的则在于GUI交互界面编写,因而笔者希望AI为整个项目的所有环节赋能,实现“全链路AI开发”。

全链路AI的技术路线

在进行视力检测时,医生会用视力表中大小不一的图标来确定患者视力的高低,其流程大致可以概括为选择一个图标、看患者手势、判断正误三步,如此反复。如果患者多次判断错误,就可以停止测量,并给出测量结果。AI小助手的工作思路是用电脑屏幕来显示不同大小的图标,使用摄像头来拍摄患者的手势,并通过AI模型来识别手势的类别,进而判断手势是否正确。

为降低开发难度,笔者用多个小模型组合的方式来解决“视力检测”问题。先用现成的预模型判断画面中的手部,再提取手部关键点,最后自行训练一个模型来判断手势的类别。如上页图1所示,这种包括数据准备、模型训练、模型应用这三个环节全都用AI解决的技术路线称为“全链路AI”。值得一提的是,数据准备这个环节,在模型训练和模型应用中的流程是完全一致的,由此确保数据的一致性。

这个视力检测AI小助手用到了三个AI模型,分别是手部检测模型、关键点提取模型以及一个自己训练的手势判断模型。相比于直接把摄像头拍到的手势图片传给AI模型判断的“端到端”AI技术路线,这种全链路AI更为巧妙地利用多个AI模块组合,化解了算力难题,即在低算力设备上也能流畅运行。

用AI辅助数据集制作

经调研,笔者发现人们习惯的“指示方向”手势各不相同。有的人用食指指示方向,而有的人则用大拇指。由于手势的差异,并没有一个现成的数据集供使用,因此,必须做一个数据集来训练模型。既然是全链路AI,自然就想到了用AI模型来帮忙采集数据集。第一步显然是要调用摄像头拍摄指方向的手势,如果检测到有手完整地出现在画面中,就会对检测区域进行处理,针对检测到手的区域进行手部关键点检测。

虽然XEdu中的XEduHub自带了很多AI模型,只需要数行代码就可以调用对应的功能,但借助大模型,就可以“偷懒”一点,只要正确提问就能获得一段标准的程序。与大模型持续对话的过程,既是代码完善的过程,也是理清编程思路的过程。如图2所示,可以把需求和参考文档的链接同时发给大模型,进而获得对应的解答。通过不断给大模型提需求完善代码,最终将获得一段可以将实时手势图像转换为手部关键点的代码,并根据不同指示方向进行数据标注,形成的数据集以CSV格式保存。

模型训练与效果提升

针对手部关键点数据,可以用各种机器学习方法来训练模型。全连接神经网络作为一种万能函数拟合器,可以捕捉和学习数据中的复杂关系和模式,尤其是复杂的手势关系与分类类别之间的对应关系。笔者用BaseNN库搭建了三层神经网络进行训练,参考代码如图3所示。

但很快就遇上了难题:无论怎么训练,模型效果都得不到提升,准确率在35%左右徘徊。经过分析,这是因为数据未经过归一化。如果数据中存在极端值或不同数据的尺度差异很大,模型可能会对这些极端值过度敏感,从而导致过拟合。此外,如果输入数据的范围差异很大,那么在模型优化过程中,难以改善效果或者改善效果的速度会很缓慢。

数据归一化其实很简单,就是将数据映射到0到1之间的区间范围,这样就可以加快训练速度,提高模型的泛化能力和稳定性。经过这一番对话和代码修改,模型的验证效果达到90%以上(如图4)。

模型应用和GUI界面开发

训练好的模型可以实现四类不同手势的区分,接下来,构建模型应用的核心就是判断手势是否和图标一致,这时候需要一个工具来显示图标并进行手势判断,这就需要将GUI界面开发和AI模型推理相结合。为此,笔者使用PySimpleGUI进行开发。设定图标的原始大小和方向,然后等待用户做出反应,在对拍摄的图像进行预处理和归一化之后,将其送入刚才训练好的模型,对用户手势做出判断,这样就完成了一次测试流程。通过不断改变图标的大小和方向来测试用户的视力,这样,就完成了视力检测AI小助手的制作。

小结

从制作视力检测AI小助手的过程中可以发现,虽然AI模型训练很重要,但一个完整AI项目的开发则包含了数据集制作、模型训练和模型应用等多个环节。倘若能在每一个环节中,都向学生渗透和普及相关的AI技术,而不是做一些枯燥的劳动,整个学习过程将会十分精彩,达到“用AI学AI”的效果。

本文为2022年度上海市自然科学基金面上项目“基于多模态数据融合的在线学习认知模型及优化研究”(项目编号:22ZR1421300)的阶段性研究成果。

经典小说推荐

杂志订阅