基于眼球追踪以及人脸姿态估计的监考系统
金玉洲1 胡叶民1****
1(南京师范大学计算机与电子信息学院 南京 210046)
Invigilation System Based on Eye tracking and face posture estimation
Yuzhou Jin1 , Yemin Hu1
1(College of Computer and Electronic Information, Nanjing Normal University , Nanjing 210046)
Abstract Due to the epidemic situation, online teaching is more frequent, and the most affected one is the examination problem, such as online examination form and how to ensure the fairness of online examination, that is, online examination needs to ensure the same invigilation strength as offline examination, and the traditional invigilation method needs real-time supervision of invigilators. However, due to the particularity of online examination, it can’t meet the requirements of ordinary invigilation, so the online invigilation system has solved this problem well. Online invigilation adopts many technologies, such as face detection, eye tracking, face posture estimation, etc., aiming at online invigilation through artificial intelligence. Firstly, face detection and matching, searching the registered information for pictures saved by keywords and identifying and matching them with trained face_recognition, entering the system after confirming that the information meets the requirements, and then making real-time judgment under the double detection of face posture estimation and eye tracking, Face posture estimation is mainly used to identify whether the supervised person’s face is facing beyond the screen, while eye tracking is to check whether the invigilator has the possibility of cheating by squinting his eyes.
Key words manual invigilation; face detection and matching; face pose estimation: eye tracking; test behavior prediction
摘要 疫情影响,线上教学更加频繁,其中最受影响的是考试问题,如线上考试形式以及如何保证线上考试公平性,即线上考试需要保证与线下考试同等的监考力度,传统监考方式需要监考人员实时监督,但由于线上考试的特殊性,无法做到平常监考的要求,线上监考系统较为良好的解决了这一问题。线上监考采用人脸检测,眼球追踪,人脸姿态估计等诸多技术,旨在通过人工智能的方式进行在线监考,首先人脸检测与匹配,在注册的信息中搜索按关键字保存的图片并用已训练好的face_recognition进行识别与匹配,确认信息符合后进入系统,随后在人脸姿态估计与眼球追踪的双重检测下来进行实时判断,人脸姿态估计主要用以识别被监察者人脸朝向是否超出屏幕,而眼球追踪则是在人脸保持在屏幕内的时候检查被监考者是否有利用眼睛左右斜视从而作弊的可能。
关键词 人工智能监考;人脸检测与匹配;人脸姿态估计;眼球追踪;考试行为预测
线上考试的优点在于不会受地点影响,可以根据自身需要自由选择考试地点,但随之带来的是考试的公平性无法得到保障,线上监考不仅增加了监考老师的工作量同时也会以为各种原因出现多多少少的不公平现象。程序是从计算机视觉的姿态估计应用出发,不仅适用于线上监考,更可以扩展至其他计算机视觉应用,如驾驶行为提醒,视频分析,动作分析,人机交互[1]等。监视策略[2]主要包括信息与人脸输入匹配[3],眼球追踪[4],人脸姿态估计[5]。对于人脸识别与匹配的算法效率对比效果如表1所示,因此最终选用face_recognition[3]算法。对于眼球追踪主要基于3D标准人脸模型的68个点中的左眼球点。人脸姿态估计则通过数学技巧以及欧拉角的计算共同求得。
Table 1 Efficiency Comparison of Face Recognition and Matching Algorithms
表1 人脸识别与匹配的算法效率对比
策略 | 复杂度 | 性能 | 识别率 |
---|---|---|---|
LBPH[6] | 高 | 高 | 高 |
Dlib | 低 | 高 | 低 |
face_recognition[3] | 低 | 高 | 高 |
程序主要工作包括4个方面:
\1) 首先是人脸检测与匹配算法face_recognition,在注册同时会采集人脸图像以便在下次登录时通过匹配来确定人脸输入图像与输入的信息相匹配;
\2) 监视方法之一是眼球追踪,通过固定眼球的当前位置,追踪下一时间的眼球的活动轨迹,并在眼球活动异常的情况下做出相应措施;
\3) 监视的另一方法是通过计算当前视线落点,并与屏幕中点进行比较,最后判断视线停留的地方;
\4) 利用tkinter[7]构建界面元素,并将界面交互与数据存储,程序运行逻辑结合.
1 相关工作
计算机视觉中的一大重要应用就是姿态估计,其中人脸姿态估计更是具有很多的应用场景。我们在人脸姿态估计的算法基础上进行拓展。
随着线上教学的普及,智能监考应用就不断出现,如雨课堂,学习通,钉钉等等。每个的监考的主要算法都不尽相同。但都包含的是通过设备自带的摄像头等设备记录使用者的动作,分析音频等等,文献[2]总结了人脸识别技术在无人监考中的应用,和使用到的算法和思想。
监考系统就基于文献[2]中提到的诸多方法主要包括人脸与眼球运动检测,在匹配完成后进入监考系统内时,首先是会通过对3D标准人脸进行一定的矩形变换从而与输入人脸重合,进而确定所有68个点在三维坐标下的位置,而人脸姿态估计就基于其中的一些数据点比如鼻子用于测量距离屏幕的距离,左眼用于实现眼球追踪,其他点如嘴等用于定位人脸以确定欧拉角。
前后经过多次修改,主要有人脸识别算法的替换与优化,将opencv中的dlib人脸识别算法,替换为face_recognition算法。优化人脸姿态估计算法,在原有的欧拉角等的基础上,采用计算视线落点的方法,提高检测的准确度。
2 人脸识别
在本节中,主要介绍人脸识别方法的原理与具体实现细节。
2.1 实现技术
基于python的人脸识别库face_recognition。
2.2 face_recognition的识别原理
(1)找出一张图片中的所有人脸
首先对图像做简化处理:
• 将图像转变为黑白图像。
• 然后将人脸图像转变为如下梯度直方图(HOG)。
定向梯度直方图,也称为HOG,是一个类似于Canny边缘检测器SIFT (比例不变和特征变换)的特征描述符。 它在计算机视觉和图像处理中用于目标检测。不同的人脸图像在光照不同的情况下会有比较明显的差异,但是局部的特征基本是差不多的。将人脸图像转换成HOG其实就是关注局部细节,同时会使图像更加简单,便于提取出图中所有人脸图像如图1所示。
Fig. 1 Illustration of HOG
图 1 定向梯度直方图(HOG)示意图
(2)脸部仿射变换
仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。仿射变换是在几何上定义为两个向量空间之间的一个仿射变换或者仿射映射由一个非奇异的线性变换(运用一次函数进行的变换)接上一个平移变换组成。
仿射变换可以用来解决图像中人脸姿势的问题,可以将各种姿态的人脸通过仿射变换转换成正确的姿势。首先提取出人脸的68个特征点,之后通过仿射变换,将人脸调整端正,以便于之后的识别。
Fig. 2 Illustration of Facial Affine Transformation
图 2 脸部仿射变换示意图
(3)脸部编码
Face_recognition基于CNN网络,将人脸编码成128维的向量数据。通过深度学习技术训练大量的人脸数据,提取出各种人脸的特征数据,如图3所示,最终训练好的模型可以应对各种状态下的人脸图像,相比传统的人工定义特征的方式性能优势明显。
Fig. 3 Illustration of Face Coding
图 3 脸部编码示意图
(4)分类识别
人脸图像编码完成后,还需要使用分类模型来判断这张脸是谁的,将其与数据库中的人脸进行比对,置信度在一定范围内时就认为是一个人。face_recognation采用KNN的模型对人脸进行分类,如图4所示。
Fig. 4 Illustration of KNN
图 4 KNN模型示意图
3眼球跟踪
在本节中,主要介绍眼球追踪的原理与具体实现细节。
3.1 实现技术
基于OpenCV和numpy实现眼动检测。
3.2 实现原理
(1)选择一个Roi(感兴趣的区域)
设置一个Roi区域,可以将注意力放在这一块区域,避免了头发,鼻子,眼睫毛等干扰我们的判断。
Fig. 5 Select an Roi.
图 5 选择一个Roi
(2)灰度变换
对于眼球的检测,我们有很多种方法,可以检测眼白、虹膜或瞳孔。但是其中最简单的方法还是检测瞳孔,我们将人眼图像转换成灰度格式,可以明显的发现,眼睛周围的区域比瞳孔更亮,所以我们将图像转换成灰度格式。
Fig. 6 Illustration of Gray Scale Transformation
图 6 灰度变换示意图
(3)找到阈值,去除噪音
转换成灰度格式后只提取瞳孔。从阈值中找到轮廓,之后简单去除噪音,选择面积最大的元素,这一块元素是瞳孔的可能性很大,忽略其余的。
(4)提取瞳孔并显示
最后把所有的东西都显示在屏幕上。
4 人脸姿态估计
在本节中,主要介绍计算视线落点位置在人脸姿态估计中的原理与具体实现细节。
4.1 实现技术
基于dlib中的68个人脸特征点,相似三角形原理以及空间几何
4.2 实现原理
(1)获取距离屏幕距离
通过getEyePixelDist函数获取准确的眼角像素距离再由get_distance函数利用相似三角形原理估算距离屏幕距离。
Fig. 7 Illustration of Similar Triangles Estimated Distance
图 7 相似三角形估算距离示意图
(2)计算欧拉角(x轴,z轴)
利用cv2.RQDecomp3x3函数返回欧拉角数组其中angles[0],angles[1]分别是对应于x轴与z轴的偏角
Fig. 8Illustration of Ola pt
图 8 欧拉角示意图
(3)计算视线落点与中心点的相对位置
利用前面的距离以及欧拉角,将视线与屏幕中心点以及人脸所构成的三角形的三个点投影到x轴,z轴平面上以计算最后落点相较于中心点的相对位置。
5测试效果
5.1正常情况
正常情况下所有的标签都会显示normal,表示此时,参与者的状态是在认真答题,且没有检测范围内的作弊行为的产生,同时也会显示欧拉角和距离,如图9所示。
Fig. 9 Illustration of Normal Circumstances
图 9 正常情况下的示意图
5.2非正常情况
(1) 脸部法线交点落在屏幕内但眼球斜视出屏 幕
这种情况是当参与者脸部保持正常状态但眼睛却向旁边过度斜视,这会被判定为可能存在的作弊行为,此时状态为warning,乱瞟为True。但欧拉角状态为normal,这提示,可能存在的作弊行为是由参与者过度斜视导致的,如图10所示。
Fig. 10 Illustration of Excessive Strabismus
图 10 过度斜视下的示意图
(2) 脸部法线交点未落在屏幕内
当参与者脸部朝向过度偏向非屏幕中心方向时,会判定可能存在的作弊行为,此时状态为warning且欧拉角都为warning,此时即提示可能存在的作弊行为是由于脸部朝向违规导致的而与视线方向无关,如图11所示。
6总结
6.1问题评估
人脸识别算法的优劣
OpenCV的LBPH算法识别人脸
优点:
• 旋转不变性(局部二进制循环左移或右移其表示不变)
• 一定程度上消除了光照变化的问题
• 纹理特征维度低,计算速度快
缺点:
• 识别正确率比较低
• 当光照变化不均匀时,各像素间的大小关系被破坏,对应的LBP算子也就发生了变化
Fig. 11 LBPH Algorithm for Face Recognition
图 11 LBPH算法识别脸部
face_recognition库识别人脸
优点:
• 准确率有较大的提升
• 识别效率也相较于LBPH更高
缺点:
• 效率虽然也有一定程度的提高,但是帧率仍然比较低
• 判断人脸的准确率较高,但是有时检测不到人脸
Fig.12 face_recognition Algorithm for Face Recognition
图 12 face_recognition算法识别脸部
6.2解决对策
(1)跳帧检测
通过每隔几帧检测,肉眼感觉不出来,提升流畅度。
(2)目标跟踪
不需要对每一帧人脸都进行特征提取,而是跟踪每一张脸,若人脸出现变化时才更新。
(3)有倾向性的训练
训练数据倾向于亚洲人、戴眼镜的人可以比较显著的提高识别效率。
6.3前景展望
(1)监考系统
检测考生的状态,是否在摄像头前,是否眼睛看向了屏幕外的地方,对其是否作弊进行判断,予以警告或处罚。
(2)疲劳驾驶提醒系统
检测司机的眼睛和脸部姿态,判断是否闭上了眼睛,并发出警报进行提醒。
作者贡献声明:作者一优化了人脸识别算法的实现,眼球追踪算法的编写以及程序的测试和调试和PPT的编写,作者二负责编写人脸姿态估计算法部分,UI界面设计以及逻辑,功能的整合并撰写论文。
参 考 文 献
[1] Yuxing Mao,Yanlai Yu,Beitao Han,et al.Human-machine information interaction based on face pose estimation[J]. Journal of Chongqing University, 2012, 35(1):1-6
(毛玉星,于燕来,韩倍涛 等。应用人脸姿态估计实现人机信息交互[J] 重庆大学学报 2012, 35(1): 1-6)
[2] Dongxin Wang,Hao Feng. Research on the Application of Face Recognition Technology in Unmanned Invigilator System[D]. Zhejiang University of Technology Master’s Thesis, 2012, 35(1): 1-78
(王冬欣,冯浩。 人脸识别技术在无人监考系统中的应用研究[D] 浙江工业大学硕士学位论文 1-78)
[3] CSDN Tutorial on using face_recognition face recognition module, v1.0 [OL].[2022-05-24]https://blog.csdn.net/weixin_41010198/article/details/87106
[4] Github GazeTracking, v1.0 [OL], [2022-05-25] https: //github.com/an toinelame/GazeTracking
[5] ZhiHu Face pose estimation algorithm sharing, v1.0 [OL] ,[2022-06-01] https://zhuanlan.zhihu.com/p/138595937
[6] CSDN Three classic face recognition algorithms _ Face recognition series II | FisherFace, LBPH algorithm and Dlib face detection, v1.0 [OL], [2022-5-27] https://blog.csdn.net/weixin_39820910/article/details/110924287
[7] ZhiHu A large collection of windows tutorials for tkinter windows of Python GUI ,v1.0 [OL],[2022-5-28] https://zhuanlan.zhihu.com/p/81429343