基于头部姿态识别的学习状态检测系统的实现

2022-05-05 06:18:34吴丽娟梁岱立关贵明任海清
关键词:候选框数组人脸

吴丽娟, 梁岱立, 关贵明, 任海清, 黄 尧

(1. 沈阳师范大学 物理科学与技术学院, 沈阳 110034;2. 北部战区 31441部队, 沈阳 110001)

0 引 言

20世纪60年代开始, 学者们展开了对人脸检测技术的研究, 经过几十年的发展, 目前该技术已经在很多领域中得到了应用[1]。将人脸检测和头部姿态识别技术引入教学活动, 了解学生的听课状态, 对课堂教学评价具有积极意义。

近年来,基于深度学习的人脸检测算法有很多,主流算法有两大类[2]:一类是二阶段深度学习算法,主要包括Fast-R-CNN[3], Faster-R-CNN[4], Mask-R-CNN[5]等;一类是一阶段深度学习算法,主要包括YOLO系列[6-8]及SSD(single shot multibox detector)[9-11]。后者较前者有更快的检测速度。SSD网络结构是2016年由Liu提出的,此网络结构简洁明了,提升了模型的精度和运行速度。针对SSD模型对小目标检测效果较差的问题,FU等[12]提出了DSSD结构,此方法虽然可以提高模型的精度,但是却以牺牲模型的运行速度为代价,还有学者提出了DSOD模型[13]等,这些算法都表现出了不错的性能。

对于基于模型的头部姿态识别来说,准确的前提是能够快速精准地获取人脸信息。本文结合SSD算法模型的应用场景,在保证检测精度的同时,致力于提高检测的效率,对SSD算法在特征图的选取和检测后处理的非极大值抑制(NMS)算法上进行了改进,在基于模型的头部姿态识别能够判断2种头部动作(点头和摇头)的基础上,设计了4种头部姿态检测:向左看、向右看、向上看和向下看,从而判断出学生的听课状态。

1 SSD算法模型架构

SSD算法模型融合不同尺度的特征图进行网络提取,分类和定位都被拟合为回归问题,既保持了YOLO模型速度快的特性,也保证了窗口预测与Faster-R-CNN模型一样的精度。SSD算法模型主体架构如图1所示,主要分为基底网络、辅助卷积层和用于特征图预测的预测特征层[14]3个部分。SSD算法模型的基底网络基于VGG-16网络模型,将VGG-16网络后面的三层全连接层和Softmax层用Conv6(FC6)和Conv7(FC7)卷积层代替;辅助卷积网络是在SSD的基底网络后面增添的卷积层,使特征表示在复杂背景下更加具有鲁棒性。SSD算法模型中共有6层预测特征层(detecton& classifier)用于多尺度预测。在检测后处理过程中,利用非极大值抑制(NMS)算法对预测特征层检测的结果进行处理,得到最优候选框。

图1 SSD算法模型架构Fig.1 SSD algorithm model architecture

SSD算法模型使用了6张大小不同的预测特征图来检测不同尺度的目标,分别来自conv4_3,conv7,conv8_2,conv9_2,conv10_2和conv11_2卷积层,前端网络提取的特征图尺寸大,细节性较好,适用于检测小物体。随着特征图尺寸的变小,细节性也随之变差,适用于检测大物体。除此之外,SSD网络设置了不同宽高比的预测候选框并且使用了放大和缩小2种数据增强方式,可以有更多的训练样本参与训练,使得检测结果更加准确。

2 目标检测结果优化及SSD模型架构改进

2.1 非极大值抑制算法的优化

图2 原NMS算法的检测结果Fig.2 The detection results of the original NMS algorithm

SSD算法默认候选框的选取机制会导致很多窗口和其他窗口之间存在很严重的重叠情况,需要非极大值抑制(NMS)算法[15]来选择这些相近区域里置信度最高的候选框,同时去除置信度不高的候选框,最后得出检测结果。SSD算法模型中的NMS算法对候选框的选取不够精准,仍然存在候选框重叠问题,如图2所示,本文在原NMS算法的基础上对其进行了优化。

优化算法设计:以每个候选框左上角的坐标信息为出发点,数组A中存放所有候选框的左上角和右下角的坐标;取数组A中的第1个候选框的坐标信息放入数组B中,将数组A中所有候选框的左上角横坐标与数组B中的第1个候选框的左上角横坐标相减,绝对值相差小于40个像素点的候选框坐标存放到数组B中,并将其在数组A中删掉,此时,数组B中存放的是所有与数组A中第1个候选框相近的候选框坐标;本文选取数组B中左上角横坐标最小的候选框作为最终候选框,将其左上角和右下角坐标存入数组C中……重复以上步骤直到数组A中为空,数组C为去除冗余后得到的候选框坐标信息。若数组A中只存放了一个候选框的坐标信息,则无需进行优化,直接存入数组C中,作为最后的检测结果,算法设计如图3所示。

图3 对NMS算法的优化流程Fig.3 Optimization process of NMS algorithm

图4 优化NMS算法后的检测结果Fig.4 Inspection results after optimizing the NMS algorithm

优化结果如图4所示,能够可以看出优化后的NMS算法可以有效地去除冗余候选框。

2.2 SSD架构改进

SSD算法模型的应用范围较广,适用于复杂场景下的物体检测。原SSD模型中的Conv 8,Conv 9,Conv 10和Conv 11这4个卷积的目的是保证检测效果在复杂背景下依然准确,针对本文而言,应用场景为教室,相对简单,且待检测的人脸属于中等和较小的目标,不需要提取后端网络的特征图就可以保证检测结果的准确性。因此,对SSD算法模型做了如下调整,在进行检测时,程序将跳过原SSD模型中的Conv8_2,Conv9_2,Conv10_2和Conv11_2这4层输出的预测特征图,只在Conv4_3和Conv7输出的2层预测特征图上做预测。改进后的SSD算法模型网络架构如图5所示。

图5 改进后的SSD网络架构Fig.5 Improved SSD network architecture

当只保留第一层预测特征图时,模型未检测到人脸;保留Conv4_3和Conv7输出的2层预测特征图的结果如图6所示,6层特征图全部保留的检测结果如图7所示,即原SSD算法模型的检测结果。

在相同的教室背景及相同的电脑环境配置下,采用平衡样本进行测试。改进后的SSD算法模型与原SSD算法模型的识别正确率Accuracy和识别速率FPS见表1。其中,正确率Accuracy为检测正确的样本数与总样本数的比值,识别速率FPS为每秒算法可以检测图片的帧数。由此可见,改进后的SSD算法模型较改进前在正确率上稍有下降,但没有太大差别,在检测效率上提高了16.17%。

图6 保留2层预测特征图检测结果Fig.6 The result of the two-layer feature map

图7 原SSD模型的检测结果Fig.7 The result of the original SSD model

表1 SSD改进前后对比Table 1 Comparison of SSD before and after improvement

3 头部姿态识别算法的设计与实现

学生头部姿态识别系统共包含4个环节:输入视频流、人脸检测、头部姿态识别及课堂行为结果的保存环节。首先,对输入的视频流进行预处理,每3 min截取60帧视频图像。然后,利用改进的SSD算法找到视频中的人脸并将其裁剪下来;接下来将裁剪好的人脸信息送入头部姿态识别算法中,对学生的头部姿态进行判断;最后,根据学生的头部姿态分析出学生的学习状态。其流程如图8所示。

图8 学生头部姿态识别流程Fig.8 Student head posture recognition process

1) 视频流预处理

由于在教室环境下的学生处于运动之中,利用第一帧视频进行人脸检测得到的面部位置会在几分钟之后不再适用。因此,本文对输入视频流进行等间隔截取操作,每3 min截取60帧视频,将这60帧视频作为人脸检测的输入,以此来更新学生面部的位置变化。

2) 人脸检测

学生的头部姿态识别是建立在学生面部准确检测的基础之上,要想实现头部姿态识别,首先要进行人脸检测,本文在SSD算法的基础上,针对应用场景对其进行了修改,在此环节中,不仅要得到每个学生面部的位置信息,还要对每个位置上对应的学生面部进行裁剪。为了匹配视频流预处理操作,每3 min对SSD算法进行一次更新,得到新的学生面部位置和裁剪后每个学生的面部信息,将每个学生的面部信息作为头部姿态识别算法的输入。

图9 人脸关键点坐标Fig.9 Key point coordinates

3) 头部姿态识别

本文采用的头部姿态识别的方法是基于模型的方法,即首先获得人脸关键点信息,然后,根据这些人脸关键点信息以设定阈值的方式对头部姿态进行识别。在获取到每个学生的面部信息之后,利用face_landmark_localization人脸关键点检测模型[16]得到人脸68个关键点信息,取其中的19个关键点,如图9所示。然后,根据获得的19个关键点利用PnP算法得到学生头部旋转欧拉角,其计算公式为公式(1)。

其中,R为3×3的旋转矩阵,如公式(2)所示,T为3×1的平移矢量,本文主要利用旋转矩阵R来获得头部旋转欧拉角。(Xw,Yw,Zw,1)T是头部标准3D关键点坐标,Zc为face_landmark_localization模型预测的19个关键点坐标。

(1)

(2)

公式(3)和公式(4)分别为头部偏航欧拉角θx和头部俯仰欧拉角θy的求取公式。

通过头部偏航角和俯仰角信息,以设置阈值的方式判定学生的头部姿态,本文采取动态的判定方式,以连续的15帧为一个检测周期,判定规则见表2。其中,Y代表头部偏航角,P代表头部俯仰角。

表2 学生头部姿态判定规则Table 2 Judgment rules of student head posture

4) 将头部姿态结果保存成视频

得到学生头部姿态信息后,为了后续查看校验方便将识别结果录制成视频。

图10 头部姿态识别系统识别结果Fig.10 Recognition result of head posture recognition system

学生头部姿态识别系统的识别结果如图10所示,本系统没有对面向前方的头部姿态进行识别,只对摇头、点头、向左看、向右看、向上看及向下看这些疑似没有认真听课的动作和姿态进行识别和记录。误检率和漏检率见表3,是0.008和0.012。这一结果对学生课堂状态分析的影响在误差允许的范围内。

表3 头部姿态识别系统的误检率和漏检率

4 结 语

本文基于教室的教学环境,对SSD算法网络架构和检测后处理中的NMS算法进行了改进,应用改进后的SSD算法模型与头部姿态识别相结合的方式对教室中学生的头部姿态进行识别,实现了处于教室背景下在不降低检测效果的同时提高检测效率,可以准确地识别学生点头、摇头的2种头部动作及向左看、向右看、向上看和向下看的4种头部姿态。经过修改的SSD算法与头部姿态识别相结合,对学生头部动作和姿态识别准确率较高,为后续实现跟踪监测每个学生的课堂学习状态研究奠定了基础。

猜你喜欢
候选框数组人脸
重定位非极大值抑制算法
JAVA稀疏矩阵算法
电脑报(2022年13期)2022-04-12 00:32:38
面向自然场景文本检测的改进NMS算法
有特点的人脸
基于Soft-NMS的候选框去冗余加速器设计*
JAVA玩转数学之二维数组排序
电脑报(2020年24期)2020-07-15 06:12:41
三国漫——人脸解锁
动漫星空(2018年9期)2018-10-26 01:17:14
一种针对特定目标的提议算法
寻找勾股数组的历程
马面部与人脸相似度惊人