金 威,李韶远,林明佳,王海政
(天津职业技术师范大学,天津300222)
专注度分析系统主要包括硬件、软件设计两个部分。硬件主控部分对摄像头图像的采集与图像数据流的网络传输、服务器与数据库的搭建与数据分析处理、人脸检测与分析与卷积神经网络的模型判别、APP客户端的图像帧专注度分析结果的显示。硬件部分使用嵌入式控制器驱动高清摄像头进行图像获取,将每帧图像数据通过Wi-Fi模块绑定IP地址与端口号对接到云服务器中,进行数据实时上传[3]。软件部分由服务器接收图像数据进行处理,并与神经网络中已训练好的模型进行卷积,得出图像内学生的专注度数据,并保存到MySQL数据库内,再由基于安卓的客户端应用程序,通过HTTP协议请求服务器,获取数据库中已处理好的专注度数据,进行分析与处理并显示在界面中。客户端应用程序适用于Android操作系统的手机终端,对ISO操作系统不支持[4]。系统的总体框图如图1所示。
图1 系统的总体框图
系统的硬件部分由STM32嵌入式控制器、高清摄像头OV7670、ESP8266-12高速网络传输Wi-Fi模块组成。硬件电源由5 V适配器进行供电,易安装于教室内。5 V电源通过ASM1117-3.3V稳压芯片给STM32主控与Wi-Fi模块供电,OV7670摄像头的供电电压为5 V。外壳部分由3D打印材料按尺寸定制,整体设备尺寸在30 cm×20 cm左右。
硬件部分的核心是STM32控制器,内部通过驱动OV7670摄像头采集当前的图像数据,将图像数据对接高速串口,将图像数据流输出到串口,而串口部分连接的是Wi-Fi模块,该模块在开机后自动进行配置,根据写入芯片的服务器地址,端口号等信息与服务器进行对接,在完成初始化配置之后,再从串口中读取数据流,将图像帧数据通过串口传输到Wi-Fi模块中,再通过TCP网络数据协议发送到云服务器端。若模块初始化失败,系统将处于等待状态,并以一秒一次的周期不断尝试连接服务器,直到服务器作出回应并身份校验成功后,系统才开始正常运行。硬件终端如图2所示。
图2 硬件控制终端
卷积模型部分采用的框架TensorFlow2.0+OPEVCV,模型采用Python语言,基于Pycharm平台进行编写,卷积网络模型主要工作流程是对数据库进行请求,用以获取通过服务器接收到的一帧图像数据,并对图像数据流进行格式整理、数据转换,然后对图像中人脸进行识别,采集人脸特征点,并将有关专注度的脸部特征点进行提取,再进行过滤,得到卷积神经网络可以识别的特征点数据,随后再送入基于VGG16的卷积神经网络[5]。在送入VGG16网络之前中,已准备有将近50 000张的训练数据,用于提高模型的预测准确度,为避免系统在运行时将时间耗费在训练网络上,在搭建模型后,已将大量的数据进行训练,并已得出最佳权重参数[6]。在喂入网络之前,系统会先将已有的训练数据进行训练,得到最优的优化参数,大大减少了训练所需要的时间,系统还具有隔时自动训练的功能,当所传输的图像数据超过1 000张时,系统重新对图像数据进行训练,得到新的权重参数。每次传输一帧图像都会通过训练好的参数进行预测,得出结果后将驱动数据库,并将预测好的数据直接保存到数据库内,供服务器提取数据,响应给客户端。整个模型搭建在云端服务器中,部署在云端最大的好处就是实时性强,可以自动进行数据训练与卷积,无需每次进行手动操作,且云端服务器随时可以接收请求信息,并进行处理,可以极大地提高效率,节省训练时间[7]。整个网络的工作流程如图3所示。
图3 神经网络工作流程图
服务器是硬件数据与软件数据进行交互的前提,使用Java语言进行编写,Java语言适用于移动端与服务器端的开发,故被采纳。在专注度分析系统中,服务器主要有两个客户端对象,即硬件客户端与软件客户端。
在与硬件交互时,采用TCP点对点的数据流传输,因为相对于硬件部分而言,客户端只有一个,而且相对于硬件的Wi-Fi模块而言,TCP的数据流传输方式相较于其他传输方式较为便捷,只需在供网后指定服务器地址与服务器所开辟的端口号即可进行数据对接[8]。而在软件服务器中,需要提供给不同的客户端响应结果,而非单纯的数据流传递。所以在与硬件和软件客户端交互时所采用的数据交互协议是不同的。
在与软件客户端交互时,采用轻量级的Tomcat服务器。该类型服务器虽广泛应用在Web方面[9],但本系统在服务器部分也是以Web架构来进行开发的,其数据在传输中具有较强的可靠性,适用于一对多的服务器-客户端架构中,且有请求与响应,相比TCP数据流而言,Web架构不需要长时间等待连接,当有请求时再响应,就无需占用太多资源,所以多端数据互传更适用于Web架构,此架构在专注度分析系统中也同样适用,服务器主要用于接收硬件Wi-Fi模块发送的图像帧数据,在完成一系列的数据交互与逻辑判断后,最后将部署到阿里云主机内[10],云服务器将提供远程连接的用于客户端的远程访问与请求的公网IP地址。可提供硬件访问,并将图像数据送入数据库内再由服务器中转送入卷积神经网络中,再返回出结果,并将结果保存到MySQL数据库内。当有客户端在请求数据时,服务器将通过JDBC驱动MySQL数据库,将数据进行读取,并判断请求方校验是否正确,若不是本系统的客户端请求服务器,将返回错误结果;在本系统客户端请求服务器并校验成功后,服务器返回的将是已通过卷积神经网络预测出的专注度百分比数据即正确结果[11]。服务器的工作流程如图4所示。
图4 服务器的工作流程图
客户端采用Android应用程序是用来提供用户进行人机交互的界面,基于Andorid的客户端特点在于应用范围广,现如今人们大部分使用的都是基于安卓系统的手机,所以可以广泛应用于不同品牌的安卓系统中,除此以外,安卓系统还具有开发方便、使用方便等优点,客户端主要使用Java语言并在Eclipse IDE开发平台进行程序的编写[12]。在客户端中通过HTTP网络通信协议,请求服务器来进行身份校验,并在需要获得识别结果时发送请求数据,用以获得已经预测出的学生的专注度数据[13],与此同时,图像在APP界面中会进行隔时刷新,所有的图像数据都是通过服务器从数据库中调取,在通过安卓的Activity对数据进行显示。APP的使用极为便捷,直接将编译通过的APK安装包安装到安卓手机上即可进行使用。客户端应用程序界面如图5所示。
图5 客户端APP界面图
在教学过程中,学生的上课的专注度是影响学生成绩和教学效果的重要因素,因而是众多家长重点关注的问题。AI教学的根本是提升学生自身的学习力,在算法愈发有效率、富有科学性,真人教师愈发亲密、具有人格魅力的情况下,学生所提高的不仅仅是某些知识点、知识脉络的掌握程度,甚至超越了学科知识体系,他们会拥有自己的学习力、学习劲头、学习习惯,即所谓“授人以渔”[14]。目前绝大部分学校是通过教师肉眼主观判断学生上课专注度的情况,这种方式不仅占用教师上课时间,分散教师注意力,而且对于学生而言,肉眼判断的准确率低,导致上课效果的测评效果欠佳[15]。特别是无法实时统计和分析上课时学生的专注度,从而产生一定的滞后性。研究本项目可以很好地对学生上课专注度进行测评,以人工智能的手段进行实时监测,可以使得教师在上课时注意力更集中,更好地提高教学质量。