选题背景
“民以食为天”,学校的课程安排每天都很紧张,为了给师生提供一个舒适、安全、高效的就餐体验,食堂就餐环境、食品卫生及结算效率变得尤为重要,解决好上述问题也将有助于智慧校园的智能化升级改造。
笔者前期参加某高职院校承办的“职业院校教师素质提高计划”国培项目为期半个月的培训,每天前往食堂就餐,饭菜卫生可口、自助结算方式快捷高效。培训结束后,拟针对中职学校食堂人多、排队结算效率低的问题,开发一个类似的人工智能应用项目,既解决本校食堂就餐存在的实际问题,又可作为计算机应用专业人工智能应用实践的教学案例。
食堂自助结算系统优势在于降低对人工操作的依赖,特别是在高峰时段可大幅缩短排队时间,有效提升食堂的整体运营效率及就餐体验,还可降低人工结算的出错率,降低人力成本。此外,自助结算系统能自动记录每次交易的数据,为食堂管理提供详尽的消费数据分析,帮助决策者更好地优化菜单、管理库存以控制成本。
课程设计
课程目标
学生通过来自校园真实项目的学习,能够运用编程思维分析和设计解决方案,通过摄像头识别定位餐盘颜色并定位边框,通过颜色关联对应价格完成结算;理解深度学习的一般流程,包括数据收集、特征提取、模型训练与优化推理等过程;体验智能如何产生、机器如何看见;掌握基于MMEdu实现图像目标检测各模块的代码及实现功能,理解模型训练各参数含义及优化技巧;理解人工智能技术改变传统结算方式的优势,并主动探索其潜在价值;关注数据隐私和用户体验,能够认识人工智能技术可能对校园就业带来的影响。
学情分析
面向对象为职高二年级的学生,在前期公共基础课信息技术课程中已学习过Python程序设计,具备一定的编程基础。XEdu是为中小学人工智能教学设计的工具,其核心工具为计算机视觉库MMEdu,学生不需要理解深度学习背后复杂的原理,可将其当作一个“黑匣子”先用起来。
课程内容
深度学习全流程包括数据收集与清洗、选择模型算法、模型训练与评估、参数调整优化、模型推理、模型转换与部署等环节,使用GPU算力完成训练更高效。训练好的模型可以用新的数据进行推理验证,得出最优的权重文件。这个过程中,数据收集准备是主要工作,模型训练是核心工作,模型部署让项目变成一个可展示的产品。
为什么要自己训练模型?人工智能关注的是智能如何产生,即模型如何搭建和训练。人工智能开放平台提供的是通用的人工智能能力,而自己训练的模型实现的是个性化的人工智能能力。最重要的是通过MMEdu训练模型得到的人工智能解决问题的能力是真实的、永久的,与前者不同,调用的是部署在云端的公用人工智能模型,一离开人工智能开放平台就失去了人工智能识别能力。当学生亲历了机器学习解决问题的过程,才能深刻理解数据、算法和算力对人工智能的意义。


课时安排
大单元教学设计已成为撬动核心素养导向课堂转型的一个支点。建构核心素养导向的综合学习,强调从课时设计到单元学习设计的转变,要清晰理解核心素养目标,研究课标中的内容要求,以及学情,对学什么、为什么学、怎么学、学得怎么样,进行结构化、系统化、整体化的规划,确定单元任务。本单元共分为8个课时。
教学准备
Thonny编辑器(Python集成开发环境IDE)、UMU互动学习平台(发布学生任务学习单)、XEdu一键安装包(用于本地模型训练)、人工智能教育平台在线完成数据标注、OpenHydra算力服务器平台在线完成模型训练、利用Mind+部署行空板。
实施过程
准备数据集
第一步:采集图片
采集学生在食堂就餐的餐盘图片,收集了约1 000张早、中、晚餐的餐盘实物图片,存放在images文件夹中,用于餐盘颜色识别。如果要实现50多种菜名的识别,需要准备2 000张左右的图片。
第二步:制作数据集
在人工智能教育平台选择“在线工具”,然后选择“人工智能工坊”中的“数据标注”,点击“创建数据标注”。然后上传images图片文件夹,在“数据标注”界面的右上角选择“分类管理”,分别添加7种类别,选择对应的类别,框选出餐盘的边界,从而完成标注,成功创建数据集(见图1)。

图1 数据标注示例
第三步:转换COCO数据集
COCO数据集是一个大型的、丰富的物体检测数据集。XEdu中MMEdu的MMDetection模块支持的数据集类型为COCO,如需训练自己创建的数据集,数据集需转换成COCO格式。使用BaseDT库将平台标注格式的数据集转换成COCO格式后,会自动创建“images”和“annotations” 两个文件夹,分别用于存放图片和标注信息。按比例划分训练集、验证集和测试集后,可基于此数据集使用MMEdu完成训练。
选择模型算法
多目标检测用于识别图像中的多个目标。目标检测任务有两个主要的子任务:定位和分类,定位是找到图像中物体的位置,然后用一个框将其框起;分类是将图像中的物体分类为某一类别。目标检测分为单步检测和两步检测,单步检测是二者一起进行,一步直接生成边框和类别,比如SSD_Lite、YOLO模型,本项目采用的是SSD_Lite模型。
开始模型训练
由于训练时间较长,使用XEdu一键安装包,在本地运行项目,需要提前配置好CUDA环境,或者在OpenHydra平台在线训练。
预训练模型 使用预训练模型能加速训练过程,减少计算资源和时间的消耗,可将第一轮训练的模型作为预训练模型,接着在第一轮的基础上继续训练。
权重文件 权重文件是存储模型训练后得到的参数值文件,使得研究者能够持久化模型的训练成果,权重文件的常见格式是pth和onnx。
训练策略 轮次和学习率都是超参数。一开始先用大学习率训练,快速收敛到较优位置;后面再调小学习率,慢慢细化。在原来权重文件的基础上继续训练的步骤为:导入MMEdu中的目标检测模块—模型实例化—配置基本信息—训练模型。
模型推理与测试
模型推理步骤:同上导入MMEdu中的目标检测模块—模型实例化—指定待推理图片—保存训练模型的路径—指定类别标签路径—推理图片—展示推理结果(见图2)。

图2 模型推理结果示例
模型转换
开放神经网络交换(ONNX)旨在实现不同神经网络开发框架之间的互通互用。通过model.convert模型转换函数,将MMEdu训练完的模型权重文件转换至轻量的边缘硬件设备能够运行的文件,可节省数据传输时间,保证数据隐私性,但推理受算力限制。转换后除生成了ONNX文件外,还生成了一个同目录下同名的py文件。
模型部署
训练出来的人工智能模型,如何才能更好地展示出来,需要加上一些简单的交互方式,让它看起来更像一个“完整的产品”;也可以将模型部署到开源硬件比如行空板上,让它变成一个应用项目。
程序通过图形用户界面(GUI)接收指令,完成相应的工作,并将结果反馈在交互界面上,这种边缘智能又称为“人工智能的最后一公里”。以下以图形用户界面“菜名识别”为例说明(见图3)。Tkinter是Python自带的一个GUI开发库,无需额外安装,提供了丰富的控件用于构建图形用户界面。利用大语言模型根据提示词生成Python代码,提示词为:“请给出Python代码,创建一个界面,左侧加载模型推理后的图片,右侧为账单详情,表格中显示识别出的菜名及对应的单价,并计算出合计金额。”不断调试直至正常运行。

图3 图形用户界面设计示例
学习成果
学生通过真实的项目实践,学会了数据收集、标注和转换,学会了使用MMEdu完成模型训练,包括调整优化学习率、轮次等超参数,以及利用预训练模型迁移学习技术提高训练效率和准确性。同时,还学会了模型推理、转换和图形用户界面部署。自助结算系统的核心功能分为基础版和进阶版。基础版通过识别餐盘颜色完成结算,食堂共有7种颜色的餐盘代表7种不同的价格,师生可以自助选餐,将选好菜的托盘放入结算区,通过结算区内置摄像头对餐盘完成目标检测,并根据不同颜色的餐盘对应的价格,计算出结算刷卡的金额。进阶版不仅能识别餐盘颜色,还能识别出每道菜的菜名,在显示屏上显示出完成检测的餐盘图片、菜名及对应价格,最后完成自助刷卡结算(见图4)。

图4 食堂自助结算系统示例
最后,学生通过分组制作项目报告或演示文档,系统展示实现过程、结果及实际运行演示。学习效果评价见表2。
反思与改进
如果食堂又增加了新的菜品,或者增加了水果、酸奶等,该怎么办呢?仅需收集新增菜品、食物的不同图像数据并进行标注,确保有适量样本进行补充训练或微调模型。
为了更好地展示作品、方便随身携带,可使用Mind+编程将文件上传到行空板运行。一个摄像头加一块行空板,加上小音箱即可实现多模态开发。同时,也可利用“微信小程序教育平台”将训练好的模型发布到微信小程序中用于体验。■
来源: 中国青少年科技教育工作者协会
科普中国公众号
科普中国微博

帮助
中国青少年科技教育工作者协会 