基于人脸检测的课堂出勤率统计方法研究*

2021-06-18 06:15杨长凡吕梦鸽周泽宇张子腾赵彤阳
南方农机 2021年11期
关键词:出勤率本堂考勤

杨长凡 , 吕梦鸽 , 周泽宇 , 张子腾 , 赵彤阳 , 赵 桐

(中国矿业大学,北京 100083)

0 引言

如今高校大部分仍采用传统点名签到的方式统计学生的出勤状况,这存在着许多隐藏问题,例如消耗人力且效率低下,以及人工点名可能存在“放水”的包庇行为,无法约束学生课堂迟到或早退等行为,大多数考勤资料以纸质形式保存,难以进行统计,容易遗失等。对于高等院校来说,教学的秩序和质量至关重要。在课堂环节,学生是主体,学生对课堂内容的专注程度极其重要。然而,目前老师只能通过课堂随机提问或者观察的方式来实时地获取学生课堂专注度的情况,这种方式易使老师分心,从而影响教学质量。综合学生、老师和高校三方面考虑,找到一种高效的课堂考勤方法是十分有必要的。

随着深度学习、神经网络的发展,人脸检测技术越来越多地在身份核验、大数据统计等信息工程领域广泛应用,各种检测算法如雨后春笋一般涌现[1-2]。2001年,文献[3-4]提出了Viola-Jones检测器,在AdaBoost算法的基础上,使用Haar-like小波特征和积分图方法进行人脸检测,设计了针对人脸检测更有效的特征,并对AdaBoost训练出的强分类器进行级联。文献[5]将Viola-Jones检测器进行了扩展,形成了OpenCV现在的Haar分类器。近年来,人脸检测领域常用的算法有DeepFace、FaceNet、SphereNet和InsightFace[6-9]等。InsightFace[9]算法提出ArcFace 损失函数,将角度距离作为分类依据,提高了准确率。RetinaFace[10]是目前最强的开源人脸检测算法,它提出了一种新型像素智能人脸定位方法,采用多任务学习策略同时预测人脸分数、面部框、五个面部标志点和三维位置。本文借助课堂监控视频,利用RetinaFace算法设计了一种多层次评价等级的课堂考勤方法,旨在进一步提高课堂考勤的效率。

1 RetinaFace算法概述

RetinaFace是一种鲁棒的单级人脸检测算法,该算法利用联合监督和自我监督的多任务学习,实现在各种人脸尺度上执行像素级的人脸定位。使用轻量级主干网络——Mobilenet-0.25,使其可以在VGA分辨率的图片上实时运行,其网络结构如图1所示。

图1 RetinaFace算法网络结构示意图

RetinaFace的特征提取网络采用P2~P6的特征金字塔层,其中P2~P5通过使用自顶向下和横向连接计算相应的ResNet残差阶段C2~C5的输出。P6是在C5处通过一个步长为2的3×3卷积计算得到的。C1~C5使用了在ImageNet-11k数据集上预先训练好的ResNet-152分类网络,P6是通过“Xavier”方法随机初始化得到的。它将P2~P6五个特征金字塔层应用于五个独立的上下文模块,来提高感受野的作用,同时增加刚性上下文建模的能力。

对于任意一个训练的锚点i,多任务损失函数定义为:

其中,Lcls(pi,pi*)是人脸的分类损失函数,pi是第i个锚点框中一个人脸的预测概率,pi*为1表示正锚点框,反之为0代表负锚点框。Lbox(ti,ti*)为人脸检测框的回归损失函数,其中ti={tx,ty,tw,th,}i和ti*={tx*,ty*,tw*,th*,}i代表与正锚相关的预测框和真实框的坐标。Lpts(li,li*)为人脸密集点回归损失函数。损失平衡调节参数λ1~λ3分别设置为0.25、0.1和0.01,增加检测框和面部标志位置的显著性。

RetinaFace在P2~P6特征金字塔级别上使用特定比例的锚点,如表1所示。

表1 细节特征金字塔

其中P2通过平铺尺寸小的锚点来捕获微小的面部,以花费更多的计算时间,承担更多的误报风险作为代价。

2 人脸检测过程及分析

2.1 实验数据

目前常用的人脸检测数据集为WiderFace数据集,但是WiderFace中图片的场景跨度、人脸位置变化较大,图片之间独立性较强,与课堂环境中的区别较大。由于没有公开的课堂环境中人脸数据集,本文在真实的课堂环境中录制视频并将其截取成图像,进行数据采集。笔者选择电气工程及其自动化专业的专业核心必修课“电机与拖动”(以下简称电机课),以及计算机科学与工程专业的学科基础必修课“电工原理”(以下简称电工课),在课堂上分别录制了709s和256s的视频。

由于课堂环境较为单一,人脸位置变化较小,本文选定时间间隔为5s,即每隔5s从视频中提取一张图片作为本文的数据集。电机课与电工课分别得到142张和52张照片,并对每张照片进行了标注,两种课程的样本图片如图2、图3所示。

图2 电机课样本示意图

图3 电工课样本示意图

2.2 实验结果与分析

笔者借助Mobilenet-0.25的 RetinaFace 算法[10],基于Pytorch深度学习框架,采用python 3.7进行编程。硬件配置包括Intel(R)Core(TM) i7-8550U@1.80 GHz,GPU为NVDIA GeForce MX130,RAM为24 GB。

电机课和电工课的检测结果,即人脸坐标和五点信息,如图4、图5所示。由图可知,图片中存在部分人脸未检出现象。主要考虑如下3点原因:

1)视频的录制角度问题,导致许多后排的学生经常被遮挡,甚至前排的学生也会被“完全”遮挡;

2)画面内的人脸数量较少,画面边缘的人脸,会出现时而在镜头内,时而不在镜头内的情况;

3)受拍摄设备的限制,后排、角落中学生的人脸部位较为模糊,亦或相机失焦、偶尔的局部亮度过低等,都会导致算法检测不出人脸,导致了误差。

综合上述误差分析,为了更好地计算课堂出勤率,删去了3个由于坐在后排,脸部经常被遮挡或频繁不在镜头内的学生图像,单个位置检出率低于30%的人脸位置,重新进行人脸检测,最后通过所有画面中的总方框数除以总检测到的人数进行计算,得到的总检出率为81.20%。

图4 电机课检测结果示意图

图5 电工课检测结果示意图

3 出勤率统计方法

根据拍摄到的画面及教室的比例,选择电机课和电工课图片中的应到人数为班级总人数的四分之一,即22人和15人,并以此给出课堂出勤率的计算方法。

3.1 三种计数方案

根据2.2节中的检测结果,提出3种计数方案。

1)比较所有图片中的人脸数量,取数量最小的数值作为最终的出勤人数。视频中有些人坐在教室的后排或边缘,经常不抬头,甚至整堂课持续趴在桌上,这种情况将其记录为未出勤。经计算得到,电机课与电工课检测出的人数最小值分别为10人和8人,对应的出勤率分别为45.5%和53.3%。

但同时,由于存在人脸被遮挡、摄像头清晰度不高等原因所致的未检测到的情况,以最小值作为最终结果而不将其计入考勤,这种考勤方法显得有些严苛。

2)比较所有图片中的人脸数量,取数量最大的数值作为最终的出勤人数。取最大值作为最终结果,这种方法能够弥补由于设备和算法问题而带来的漏检。经计算得到,电机课与电工课检测出的人数最大值分别为17人和11人,对应的出勤率分别为77.3%和73.3%。

但是这种检测方法,无法检出学生迟到早退的现象,也就是说,只要检测到一次全班同学都在的情况,本堂课即被记为全勤,如果中间有学生溜走,最终结果也不会有所变化。

3)因此提出了第3种方法,比较每张图片中的人脸数量,取出现次数最多的数值作为最终的出勤人数,即众数的概念。这样可以有效避免取最小值、最大值带来的漏检、多检和忽略迟到早退的现象,可以反映出较为真实的课堂出勤情况。经计算得,电机课与电工课检测出人数的众数分别为14人和10人,对应的出勤率分别为63.6%和66.7%。

采用最大值、最小值和众数的计数方法较为笼统、单一。于是,笔者提出了一种多层次的评价标准,可以将出勤情况分为多个等级,从而灵活地进行课堂考勤,为智能化课堂考勤提供一种新的可解思路。

3.2 多层次评价标准

分别根据电机课和电工课得到的142张和52张图片,按照一定的间距,在尽可能跨越全部图片的原则下,均匀地抽取五组连续图片,最终确定电机课和电工课每组图片的数量分别为5张和3张。这样就得到了一个缩小后的数据集,并依此来进行考勤统计。抽取图片均匀跨越了整个课堂视频的始终,数据集可信度高,可以将其视为整个课堂的真实情况。

对电机课的5张照片进行处理,若该位置有检测框,即记为1,若没有则记为0。若该位置在5张图片中只要出现一次人脸框,即算作本组中出现,接着将得到的5组结果进行求和,得到最终的评价值。这样记录考勤,可以有效记录到迟到早退的情况,即使迟到早退,也有分值被记录,不会被单纯地算作未出勤,同时也不会被绝对地否定,即一次都没被相机抓拍到即记作未出勤。设定5表示优秀,4代表良好,3为一般,0~2则为较差。其中,5分和4分都能很好地表明该位置上的同学本堂课认真听课,没有缺勤的情况。3分则表示,该位置上的同学可能有迟到、早退的现象,亦或是在教室的角落玩手机、睡觉等,听课效果不佳。0分~2分的情况,老师可以根据自己的标准,来判定该位置上的同学,本堂课算作出勤还是缺勤。将所有位置上同学的得分取平均值,即可得到本堂课的综合评价分数。经计算得,电机课和电工课的得分分别是4.78分和4.55分,均为优秀。

经综合评价可知,电机课的最终得分总体上是略高于电工课的。考虑是由于电机课为该专业的核心必修课,而电工课则为大类必修课。电机课的课程性质较电工课更重要,难度更大,学生心里更加重视,因此出勤率更高。

4 结论

借助Retinaface算法,提出了一种基于人脸检测的多等级评价的课堂考勤方法。该方法对真实课堂的画面分时间段、分组进行人脸检测,将各组之间的检测情况求和,得到该位置上同学本堂课的出勤表现得分。设定优秀、良好、一般、较差四个等级反馈给授课教师,依此作为本堂课每个位置同学的出勤及听课情况的评判标准。经计算得,电机课和电工课的最终得分分别为4.78分和4.55分,均为优秀。在下一步的研究中,准备将人脸比对与识别加入算法中,即可给出每名同学的出勤情况统计表,同时,进一步优化网络,训练自己的网络模型,提高课堂环境中人脸的检测能力和检测效率。

猜你喜欢
出勤率本堂考勤
事业单位人员考勤管理存在的问题及对策
三级甲等医院应用PDCA循环提升考勤管理的创新
智能人脸识别考勤系统
学生旷课率高?美国学校安排专人叫起床
走进崇本堂
浅谈用人单位的考勤管理在劳动管理中的重要位置
务本堂
务本堂
不来的理由
巧解百分数问题