挨个点名费时费力?这所高校研发了新工具
在高校本科教学管理中,“到课率”是一个反映教学管理水平、学风和教学质量的重要指标。传统的到课率统计方法主要靠点名,但在课堂上逐一点名会占用极其宝贵的上课时间,因而很多任课教师并不愿意采纳,但没有到课率数据又影响教学管理部门对全校教学情况的总体把握。因此,高校教学管理部门迫切需要一种准确、实时、低成本的到课率统计工具。
现有到课率统计方法及不足
现有的到课率统计主要方法是精确识别每个学生后,统计到课总人数,再通过实到人数和应到人数的计算得出到课率。
这种方法要求精确识别出每个学生,具体方法包括刷校园卡签到、指纹签到、扫二维码签到、人脸识别签到等;也有研究尝试利用教室中无线接入点(AP)设备的手机终端连接数据进行无感知签到,但存在诸多技术和管理上的局限。
精确点名对于任课教师计算学生平时成绩有意义,但教学管理部门更关心宏观的到课率数据。由于并不是所有老师都会在课堂上点名,且点名数据也不一定会在教学管理系统中及时体现,因此,教师点名并不能解决高校教学管理部门对到课率统计数据的需求。
有研究尝试在教室中安装红外、蓝牙等设备进行无感知的到课人数统计(商俊燕等,2017),但这些方法在经济性和技术可行性等方面都存在各种局限,无法大规模推广。
目前,人脸识别的相关技术已经很成熟,特别是基于深度机器学习的人脸检测和识别方法已被广泛研究和应用(LeCun等,2015)。
但是,在教室这个场景下,有很多既有条件达不到技术要求:首先,很多教室摄像头像素还达不到人脸识别的要求;其次,一些中大型教室,横向过宽,或是纵向太深,摄像头对两侧和后排学生的人脸识别率很低;再者,如果想解决上述问题,就需要增加高清摄像头的个数和相关软硬件系统,需要大量投资。
因此,在大学教学管理中,目前的各种有感知和无感知的到课(人数)率统计方法都存在各种技术、管理和经济上的局限,高校教学管理部门迫切需要一种能够基于学校既有的软硬件设备进行及时、便捷的到课率统计的方法。
基于机器学习的到课率统计
近些年来,很多高校建设了大批智慧教室、标准化考场和录播教室,这些教室里都安装了标清或高清摄像头。
如果能够利用这些摄像头进行基于“头肩识别”(即只识别人头部形状特征,不识别面容特征)的到课人数统计,再结合课表数据,统计到课率,则可以最大限度地利用学校现有软硬件资源,又能给教学管理部门亟需的到课率数据,以较低的成本获得最大的管理收益。
目前,基于多层神经的深度机器学习技术日趋成熟,特别是在模式识别领域颇有建树,Caffe、TensorFlow和Pytorch等都是比较优秀的开源机器学习框架。
其中,PyTorch以其优秀的性能和灵活的平台适用性,获得了越来越广泛的应用。PyTorch是Facebook人工智能研究院(FAIR)基于Torch开发的开源Python机器学习框架。PyTorch简洁、高效、快速,追求最少的封装,入门容易,功能强大,对Python和C++的支持都比较好,在科研和工程领域都很适用。
教室里的“头肩识别”,是典型的模式识别(Pattern Recognition)问题。对教室摄像头的实时流传输(RTSP)视频流进行抽帧后,对图片中人的头部进行标注,利用开源深度机器学习框架搭建“头肩识别”模型,利用标注数据集对模型进行多轮训练、调参和优化,并将优化后的模型进行部署。
通过对接课表数据,在上课时段,按照固定时间间隔进行RTSP视频流抽帧和到课人数统计,并将到课人数与课表中应到课人数进行比对,生成到课率数据。
在用户端,通过对接教师、学院、系、专业等数据,生成多维度的到课率统计报表。也可提供标准的数据接口(比如API),供其他系统调用到课人数和到课率数据。系统结构模型如图1所示。
图1 基于深度机器学习的到课率统计系统框架
系统实现
上海外国语大学松江校区现有约100间标准化考场,教室前后方均安装了摄像头,其中,绝大部分为标清摄像头,小部分为高清摄像头,这些摄像头均支持RTSP视频流协议。实施步骤如下:
1.采用PyTorch搭建“头肩识别”模型,利用事先获得的500张标注好的各类课堂照片,对模型进行初步训练,解决模型的“冷启动”(Clod Boot)问题。
2.配置视频引流服务器,同步课表数据,根据课表信息,从摄像头视频矩阵中对RTSP视频流进行抽帧,获取真实的课堂照片;
3.分别随机抽取大、中、小教室的课堂照片各2000张,共计6000张,在C++编程环境中,模拟开源的图像标注工具LabelIm(版本号1.8.0)对图像进行自动标注,经人工抽样检查,C++自动标注准确3.率只有80%左右,招募学生志愿者,对这些照片的标注进行人工修正;
4.将修正后的照片放入“头肩识别”模型进行训练,经过多轮调参、优化迭代后,逐步提高“头肩识别”模型的准确率和性能(图2);
图2 经标注的教室人像照片
5.配置课人数识别服务器,将训练好的“头肩识别模型”部署在服务器上(Ubuntu14.04+ Python2.7环境),引流服务器将视频帧推送至到课人数识别服务器,进行到课人数统计;
6.同步课程数据,系统在上课时间点开始后5分钟、课程中间5分钟、课程结束前5分钟,每分钟从摄像头中抓一次图像,计算课堂人数,将该数字与同步过来的课表信息中的课堂应到人数进行比对,生成到课率、迟到率、早退率等数据;
7.采用Python Flask Web框架将各功能模块进行集成,作为到课率统计系统的后端应用;采用JQuery编写系统前端的业务逻辑和交互界面。
系统从2021年5月10日开始正式上线运行,从5月10日至5月300(共3个教学周,15天)系统截取的视频帧中,每天随机抽样40张照片,共计600张照片人工计算识别准确率,经统计,到系统计算到课率的平均准确率为96.8%,复合准确率为99.2%,已经能够满足管理层面对到课率统计准确性的要求。
平均准确率的计算方法为:
复合准确率的计算方法为:
其中,mi为第i张照片的机器识别人头数,hi是第i张照片人工统计人头数,n=600。
将到课率数据与课程、课表、学院、专业等信息进行组合,教务处及分管教学的副院长可以按专业、学院、年级、教学周、学期等不同维度查询到课率统计信息,并可以生成相关报表,为学校的教学管理提供参考数据(图3)。
图3 到课率数据统计界面
本研究充分利用上海外国语大学标准化考场内现有的摄像头,基于开源深度学习框架PyTorch搭建人头识别模型并利用标注数据集进行训练,基于Ubuntu和Python环境,在学校数据中心现有的CPU服务器上进行容器化部署,对到课人数行统计,在生产环境下获得了96.8%~99.2%的准确率。
将统计结果与课表、课程、教室、教务等数据进行对接,生成的各维度的到课率报告、迟到率报告、早退率报告等统计数据,有效支持学校的教学管理工作。本系统最大限度地利用了高校现有硬件资源,基于开源框架和开源系统进行开发和部署,做到了低投入、高产出。
基于教室摄像头RTSP视频流(或者利用厂商提供的SDK抓取视频流)进行教学过程分析是一个很有意义的研究领域,目前尚处于起步阶段。基于教室摄像头视频数据进行学生上课专注度分析、课堂活跃度分析、师生互动情况分析等都是很值得探索的研究课题。
作者:赵衍(上海外国语大学信息技术中心)