APP下载

基于卷积神经网络的学生疲惫状态反馈策略

2023-06-11陈旭凤韩佳辉

科技风 2023年13期
关键词:卷积神经网络人工智能

陈旭凤 韩佳辉

摘 要:现代教育领域仍然是以教师与学生一对多的模式为主,这样就导致了教师在教学环境中既要完成教学过程,又要时刻关注学生学习状态,很难做到在少数学生出现疲惫状态时及时发现并做出提醒。针对这一现状,本文提出基于卷积神经网络的学生疲劳状态反馈策略,建立数据集并训练出疲惫状态识别分类模型,结合机器视觉系统可应用到教学场景中,在适当时机向教师发出预警,提醒教师改变课堂氛围,从而更好地帮助学生及时调整学习状态,提高学习效率。

关键词:人工智能;卷积神经网络;情绪分类;疲惫状态识别

随着人工智能的关键技术发展,面部表情识别技术在“人工智能教育”领域起着重要作用。利用识别结果可以分析学生的学习动态,给老师提供及时反馈。从微观角度来看,实时反馈可以帮助教师更全面获得学生们的及时表达,从而推断学生们的学习情况和提高课堂教学质量;从宏观的角度来看,它促进了技术支持教学的发展,使教学方法更加科学和现代,并加速了教育现代化的到来。

美国著名心理学家Ekmann和Friese将人类的表情分为七个基本表达:悲伤、自然、快乐、愤怒、惊讶、厌恶和恐惧。面部表情识别是计算机视觉和人工智能研究方面的一个非常具有吸引力的研究,具有广阔的应用前景,例如远程教育、安全驾驶、人工智能、情感语音研究、交通出行、辅助教学系统等领域,这些应用也不断推动着人脸面部表情识别技术的发展[1]。当前的人脸表情识别流程主要是人脸检测、特征提取和表情分类,本文主要针对表情分类部分开展研究。

据教育领域相关研究可知,我国长期处于一对多的教学模式,这样就导致了教师在教学环境中既要做到教学,又要时刻关注学生学习状态,很难做到在少数学生出现疲惫状态时及时发现并做出提醒。针对这一情况,本文提出基于卷积神经网络的学生疲劳状态反馈策略,在适当时机向教师发出预警,提醒教师改变课堂氛围,从而更好地帮助学生及时调整学习状态,提高学习效率。

本文主要包含四部分内容:模型搭建、数据集建立、模型训练与保存、应用模型设计反馈策略。

1 模型搭建

本文搭建基于GPU服务器的深度学习环境平台,使用Pytorch深度学习框架构建了一个基于卷积神经网络的图像分类模型。

1.1 环境部署

想要实现Pytorch基于卷积神经网络的人脸表情识别的网络模型搭建,首先需要搭建满足研究需要的程序运行平台[2]。

本文所使用软硬件环境包括:(1)软硬件平台:Windows操作系统、Python3.7、AnaConda3;(2)编译器:Pycharm;(3)深度学习框架:Pytorch-GPU、OpenCV;(4)模型训练加速平台:NVDIA GeForce RTX 2080 Ti。

在windows10操作系统下,安装AnaConda3软件,完成后进入CMD命令工作界面,使用指令创建虚拟环境,并进行下一步深度学习环境部署:(1)使用conda指令安装opencv等所需环境,进入pytorch官网,根据Python和CUDA选择对应的版本,然后在CMD命令窗口输入官方给出提示可通过运行;(2)在CMD指令窗口分别输入以下指令,打开jupyter notebook编程页面,在打开成功的网页页面输入以下指令进行环境测试,测试Pytorch是否安装成功:若输出版本号则为成功;(3)下载安装并启动Pycharm,配置编译环境为部署好的虚拟环境mydlenv。到此后续程序可在Pycharm中进行编写与运行、调试。

1.2 建构模型

通过Pytorch搭建基于卷积神经网络的分类模型结构,如图1所示。首次搭建只采用其中的卷积-全连接部分[3],后期优化时可以考虑向模型中添加Face landmarks+HOG features 部分。

卷积部分输入图片尺寸为48×48×1,经过一个3×3×64卷积核的卷积操作,再进行一次2×2的池化,得到一个24×24×64的feature map 1(以上卷积和池化操作的步长均为1,每次卷积前的padding为1,下同)。将feature map 1经过一个3×3×128卷积核的卷积操作,再进行一次2×2的池化,得到一个12×12×128的feature map 2。将feature map 2经过一个3×3×256卷积核的卷积操作,再进行一次2×2的池化,得到一个6×6×256的feature map 3。卷积完毕,数据即将进入全连接层。进入全连接层之前,要进行数据扁平化,将feature map 3拉一个成长度为6×6×256=9216的一维tensor。随后数据经过dropout后被送进一层含有4096个神经元的隐层,再次经过dropout后被送进一层含有1024个神经元的隐层,之后经过一层含256个神经元的隐层,最终经过含有2个神经元的输出层。在输出层后加上softmax层,取概率最高的类别为分类结果。

本文预期训练模型输出为二分类,结果对应是否疲惫的两种状态,因此输出类型值out_features为2。

2 数据集建立

2.1 数据采集

采集学习过程中人脸情绪图像數据,建立训练集和测试集,并标注好对应的标签。通过摄像头等视觉传感器以及网络爬取等手段获取视频或图像数据,通过Python编程使用Opencv库对获取到的图像数据进行读取和预处理;对预处理后的图像数据再进一步进行深度学习模型的训练集和测试集划分,并对训练集进行对应标签的建立。

本文所采用的人脸图像数据获取方法为自用笔记本电脑摄像头录制连续的学习状态视频,再对视频加以多种处理得到模型训练集,具体步骤如下:

(1)获得连续录制视频后,使用OpenCV对视频定时采样,实现图像帧提取并保存图像。

(2)由于所提取出的包含人脸在内的图像,人脸位置有远近大小之分,为了后续模型训练更准确,提高数据集的质量,使用OpenCV对图像进行批量适度的裁剪并重新保存图像文件。

(3)为了便于后期模型训练,匹配当前模型输入图像的像素尺寸,使用OpenCV对裁剪后的图像进行批量分辨率修改。

通过以上步骤,得到自建用于模型训练的人脸图像数据集,共11589张图片。部分示例图像如图2所示。

通过人工标注,完成对以上图像数据的标签分类,目的标签为二分类——0:不疲惫;1:疲惫。

2.2 数据集预处理

在得到数量充足的人脸图像数据后,还需要经过进一步处理将其划分为用于训练模型、验证模型的数据集,本文训练集与验证集的比例为3∶1。测试模型则使用少量网络爬取的实际人脸图像。

3 模型训练与保存

训练、验证用于疲惫状态识别的图像分类模型。基于GPU服务器的深度学习环境平台,对采集的学习过程中人脸图像数据进行分类模型的训练和优化,保存训练结果[4]。

3.1 模型训练

基于前序工作,就可以通过数据的前向传播和误差的反向传播来训练图像分类模型了。在此之前,还需要指定优化器(即学习率更新的方式)、损失函数以及训练轮数、学习率等超参数。本文采用的优化器是SGD,即随机梯度下降,其中参数weight_decay为正则项系数;损失函数采用的是交叉熵;使用学习率衰减。

在训练模型过程中,通过epochs(训练轮数)、Learning_rate(学习率)、wt_decay(衰减权重)的参数调整,先初步选定较为合适的超参数初始值;在此数据基础上优化运行环境,并微调超参数,筛选出训练集与验证集相准确率相对较高的模型。在经过多次训练验证后,从训练结果记录数据中挑选出相对最优模型,其参数设置为:epoch=80,Learning_rate=0.05,wt_decay=0.01。模型在训练集上达到的识别准确率约为94.97%,在验证集上达到的识别准确率约为92.36%。在本次运行环境下,整体模型训练时间约为332秒。

3.2 模型保存

模型的保存与加载方法与训练的模型大小有关。本次训练的模型结构相对而言较为轻便,因此使用torch.save(model,'model_net1.pkl')直接保存整个模型(包括结构和参数)。

4 应用模型设计反馈策略

4.1 模型测试

为测试模型对于非训练图像数据的分类性能,设计加载模型程序,并采用网络爬取的方式获得测试图像,测试本文所得模型对于实际场景下疲惫状态的识别效果[5]。

用于测试的图像数据为网络爬取的65张彩色图片,截取部分示例见图3。

加载所保存的模型进行疲惫分类测试,运行程序得到的结果如图4所示。

其中,最后一行输出结果即为图片分类结果。张量tensor[1]表示识别结果为标签1,对应分类为疲惫(模型分类为二分类:0-不疲惫;1-疲惫)。

使用训练的疲惫分类模型对以上图像进行测试,将得到的模型分类结果记录在表格中,与人工判定的label真实值进行对比。对于测试图像,模型的识别准确率设置为:真实值与测试值label相同的数量之和与测试图像总数量的比值。通过对当前最优分类模型进行测试,实验所得其疲惫状态识别准确率为78.46%。

4.2 学生疲惫状态反馈策略

使用本文所得模型,可以完成对输入的人脸图像进行疲惫状态的识别,输出结果为0(不疲惫)或1(疲惫)。针对教学场景下学生疲惫状态的反馈策略问题,可基于嵌入式机器视觉实验箱设计如下反馈系统解决方案。

4.2.1 图像获取设备

使用性价比高的视觉传感器作为系统的图像获取设备,例如USB摄像头模组,100万像素,720P。

4.2.2 图像识别处理

疲惫状态检测,即图像识别处理过程需要实现三部分功能:接收摄像头所传输的数据,加载训练好的模型进行疲惫状态识别,输出识别结果并判断是否需要发出预警。

第一步,运行环境设置。由于实验箱多为Ubuntu Linux操作系统,可在Linux环境下搭建部署pytorch深度学习环境,用于加载与运行人脸疲惫检测的现有模型与测试程序。运行环境的设置参数值可参考本文1.1软硬件环境配置部分。第二步,进行人脸疲惫状态检测。使用Python进行程序编写,完成摄像头传输图像或视频数据的读取与保存,对图像或视频数据进行预处理后,加载疲惫分类模型进行疲惫状态人脸的检测。为节省系统性能,本步骤可设置为定时进行检测,例如每5分钟运行一次疲惫状态检测程序。

第三步,记录并分析识别结果。根据疲惫状态识别结果,例如若课堂中呈现疲惫状态的学生达到总人数的30%,则系统向反馈预警装置发出有效信号。

4.2.3 反馈预警装置

设置适当的预警方式对教师进行预警,例如,同时设置声光报警。其中面向教师的嵌入式实验箱显示屏,可以显示文字如“请您注意改善课堂教学效果”,同时使用音频输出口输出一定提示音。

通过以上学生疲惫状态反馈系统的运行,可实现在课堂教学中,每隔一定時间(如5分钟)进行学生人脸识别,若处于疲惫状态人数达到总人数的一定比例,则向教师发出声音提示以及显示内容的预警。

5 结论和改进

本文提出了一套基于AI人脸情绪识别的学生疲惫状态反馈策略设计方案。通过采集与建立学习过程中人脸数据集,搭建与训练基于卷积神经网络的人脸情绪识别模型,得到了相对最优的人脸疲惫状态检测模型。通过对模型进行实验测试,得到以下结论与改进方向。

5.1 研究结论

基于自建人脸疲惫训练数据集,训练所得人脸疲惫状态检测模型,其测试准确率达到了78.46%。基于此模型,可实现在课堂教学中进行学生人脸情绪识别,在适当时机向教师发出预警,提醒教师改变课堂氛围,从而更好地帮助学生及时调整学习状态,提高学习效率。

5.2 改进方向

本文所得模型的测试准确率仍然有可提升的空间[6]。可通过以下方式对训练模型的精度进行优化,提高疲惫状态的识别率。

完善数据集:可将CK+数据集重新人工标注以匹配疲惫的表情(打哈欠、揉眼睛等);将自建数据集与CK+数据集融合成新的大数据集来进行训练和验证模型。

优化网络模型:网络结构调整,可尝试加入Face landmarks+HOG features,更新模型结构;更新优化器,当前使用SGD,可對比BGD、MBGD、指数加权平均等优化器;修改超参数,基于以上工作,重新进行多轮试验调整超参数的值,得到新的相对最优解。

参考文献:

[1]胡敏,等.表情识别技术的教育应用[J].教育现代化,2019,6(75):100-102.

[2]廖星宇.深度学习入门之PyTorch[M].北京:电子工业出版社,2017.

[3]详解CNN卷积神经网络[EB/OL].https://blog.csdn.net/liangchunjiang/article/details/79030681.

[4]模型的训练和测试、保存和加载[EB/OL].https://blog.csdn.net/u011276025/article/details/78507950.

[5]使用训练好的模型测试自己图片[EB/OL].https://blog.csdn.net/u011276025/article/details/72817353.

[6]李珊,邓伟洪.Deep Facial Expression Recognition:A Survey[J].中国图像图形学报,2020,25(11).

平台支撑:“河北省冶金工业过程数字化控制技术创新中心”支撑(平台编号:SG2021185);“河北省钢铁焦化企业污染治理技术创新中心”支撑(平台编号:SG2020220)

基金项目:中央引导地方科技发展资金项目(项目编号:216Z1004G);河北省科技厅大学生科技创新能力培育专项项目(项目编号:2021H011002)

作者简介:陈旭凤(1991— ),女,汉族,河北定州人,硕士研究生,讲师,研究方向:人工智能、机器视觉。

*通讯作者:韩佳辉。

猜你喜欢

卷积神经网络人工智能
我校新增“人工智能”本科专业
2019:人工智能
人工智能与就业
数读人工智能
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法
深度学习算法应用于岩石图像处理的可行性研究
基于深度卷积网络的人脸年龄分析算法与实现
下一幕,人工智能!
下一幕,人工智能!