APP下载

人脸识别在物理操作实验考试中的应用研究*

2022-02-22杜兰田越王英杰帅辉明

自动化技术与应用 2022年1期
关键词:人脸人脸识别卷积

杜兰,田越,王英杰,帅辉明

(1.南京工业职业技术大学,江苏南京 210023;2.南京理工大学紫金学院,江苏南京 210023)

1 引言

大学物理实验是众多高校培养理工科学生物理素养之必不可少的训练手段,而操作实验考试被广大高校当成检查学生对物理理论知识真正掌握程度的考核方法[1]。目前,因为参与考试学生数量众多,大规模集中统一组织物理操作实验考试难度巨大,各个高校最普遍的组织物理操作实验考试的方式是抽签法。抽签法就是从学生在大学物理实验课程中已做过的实验里面随机抽取一个实验作为考试项目,以此考查学生的实验能力和实践能力。现有抽签方式有两种,一种是手工抽签,另一种是计算机系统抽签。手工抽签是老师事先准备好物理实验考试项目及仪器,将纸签和考试项目一一编号对应,将纸签放入抽签盒,由考生随机抽取一个纸签,然后根据抽签结果进行考试。手工抽签是在考试现场面对着所有考生和老师公开开展抽签工作,优点是师生参与感强,抽签结果立马可见;缺点是人工执行抽签,费事费力,有了人为的操作就容易对抽签结果的公正性存疑。计算机系统抽签是设计与实现计算机系统来完成抽签工作,如齐云等使用Excel 的VFP 编程开发了物理实验操作考试随机抽签系统[2];而王道光等使用Matlab加强了物理操作实验考试抽签的随机效果,并使用GUI对话框实现了与学生的互动[3]。计算机系统抽签无需人工干涉,自动快捷,省事省力。现有的计算机实现物理实验操作考试抽签系统的流程一般步骤如下:(1)梳理实验考试项目名称、实验教室、仪器数目等形成考试项目表,梳理考生学号、姓名、班级、考试时间段等形成考生信息表。(2)使用Matlab 或者VPF 随机抽取考生学号完成抽签,显示抽签结果。抽签结果显示的是姓名和考试项目一一对应的表格,但是监考老师不一定认识考生,目前大多数高校的考生身份验证的流程比较老旧,由监考老师参照考生签到表上的照片、考生的身份证和学生卡与学生进行人工比对,精准度不高,存在误判与替考的风险,识别效率低下。

当下人脸识别技术已在考试系统中有成功应用[4-5]。因此,将人脸识别这一成熟技术引入大学物理操作实验考试有着极其重要的现实意义。

本文所做的主要贡献如下:

(1)使用Django 框架基于B/S 开发“物理操作实验考试抽签系统”,其Web界面友好,互动性强,更易于与学校的其他系统(如教务系统)兼容。

(2)将人脸检测与识别技术与大学物理操作实验考试融合,很好地解决了现有考生身份验证困难的问题。

2 人脸识别技术原理

人脸识别技术的算法有三大代表:(1)几何特征描述人脸辨别算法。(2)局部特征描述人脸辨别算法。(3)以深度学习为基础的人脸辨别算法。其中,深度学习的基础理论是人工神经网络(Neural Network,ANN),而卷积神经网络(convolutional neural networks,CNN)是一种不但包含卷积计算而且具备深度结构的前馈神经网络,不只具有高效的深层图像识别能力,更值得一提的是在大量学习数据的时候性能稳定,在人脸识别的应用也越来越广泛。

2.1 CNN模型的结构原理

典型的CNN 包含输入、卷积、激活(ReLU)、池化、全连接和输出等功能层,LeNet-5[6]就是经典的CNN 结构,如图1所示。具体工作流程为:(1)将原始图像数据传递进入到输入层。(2)把输入数据使用卷积层进行卷积操作。(3)卷积层完成卷积运算之后采用非线性的激活(ReLU)函数作非线性处理。(3)连接池化层,实现缩小图像尺寸的目标。(4)交替传递多个卷积层和池化层,进一步不断实现减小特征图尺寸的目标,降低到合适的参数规模,接入全连接网络,输出结果。

2.2 MTCNN模型的结构原理

多任务级联卷积神经网络(Multi-task convolutional neural network,简称MTCNN)模型由3 层简单CNN 模型级联构成,易于人脸检测、对齐和裁剪。第一层是Proposal Network(P-Net)全卷积网络,第二层是Refine Network(R-Net)全卷积网络,第三层是Output Network(O-Net)全卷积网络[7]。具体工作流程为:(1)按照不同比例缩放原始图像,构建12×12、24×24和48×48三种尺寸的图像金字塔,分别作为3个不同网络层的训练数据集。(2)将12×12的图像转换成12×12×3大小的图像,传入P-Net 层,使用3 个卷积层和1 个池化层来生成10 个1×1 的特征图(人脸关键特征点定位)、候选窗的预测结果和候选边框回归向量,并使用候选边框向量回归方法校准这些候选窗,使用非极大值抑制合并高度重叠的候选框。(3)将P-Net层输出的候选窗与第2层训练数据集合并,转为24×24×3 大小的图像,传入R-Net 层,使用3个卷积层和2个池化层,生成64个3×3的特征图,连接128 大小的全连接层。使用2 大小的全连接层采用Softmax逻辑回归进行候选框分类,使用4大小的全连接层进行候选框位置回归,得到最终bounding box 的坐标。(4)将R-Net层输出的候选窗与第3层训练数据集合并,转为48×48×3 大小传入O-Net 层,使用由4 个卷积层和3 个池化层,生成128 个3×3 的特征图,连接256 大小的全连接层,最后生成具有5个人脸关键特征点的人脸矩形框图。

2.3 FaceNet模型的结构原理

FaceNet[8]在Google 研发的深度CNN 模型基础上,删除了传统的Softmax 分类,利用L2 的归一化输出512维的人脸特征向量,基于特征的三元组损失(triplet-loss)更新网络权值参数和偏移参数,完成人脸识别、验证和聚类等工作。FaceNet模型结构如图1所示,具体工作流程为:(1)权值初始化,Batch(批量)输入人脸样本。(2)使用Inception 结构训练FaceNet 深度卷积神经网络。(3)L2归一化操作,得到512 维的人脸特征向量(Embedding)。(4)计算triplet-loss,求取模型的输出结果与预测结果之间的误差,使用随机梯度法逆向传播误差,更新权值,更新Embedding。

图1 FaceNet模型结构

3 系统设计与实现

3.1 系统物理实现方案

本系统基于B/S 架构使用Django 开源开发框架设计与实现,它的物理实现方案如图2所示。

图2 系统物理实现方案

系统管理员主要负责数据库管理和网站维护等工作。任课教师用户通过浏览器登录物理操作实验考试抽签系统后,点击抽签,在完成抽签后会显示抽签结果页面。考生用户通过浏览器访问物理操作实验考试抽签系统,登录后会显示考试项目和考场等相关考试信息。考生在对应考试时间到达相应实验教室后,系统调用人脸识别模块进行身份认证,认证通过,则进入考场按座位号找到位置开始做实验。

3.2 系统流程

本系统的整体框架如图3所示,主要包含数据库存储、抽签模块、人脸检测模块、人脸识别模块和签到模块等。它实现的流程如下:

图3 系统整体框架

(1)管理员进入系统管理页面,进行数据库管理和系统维护工作。

(2)任课教师用浏览器登录系统,进入抽签模块,随机抽签,得到抽签结果。

(3)学生用浏览器登录系统,查看自己的考试信息。

(4)监考教师登录系统,查看抽签结果。

(5)到了考试时间,学生到达考试现场,摄像头拍摄视频,利用MTCNN对实时画面进行人脸检测,通过裁剪得到相对标准的人脸区域图像,然后使用FaceNet进行人脸识别认证,自动签到之后开始考试。

Step1:利用摄像头实时采集图像,预处理筛选质量好的图像。

Step2:利用MTCNN网络对实时图像进行人脸候选框检测。

Step3:对MTCNN 五点标定检测到的人脸候选框,裁剪至标准的160×160大小,对人脸进行预处理。

Step4:利用FaceNet提取人脸图像的特征向量(Embdding)。

Step5:在MySQL数据库中根据该场考试(Test)表中的考生学号(StudentID)到考生信息(Student)表中找到和学号一一对应的人脸特征信息(Embdding),逐个计算欧式距离。

Step6:将识别的身份信息存储到签到表中,进行语音播报“您好,XXX”,完成人脸识别,学生可以进入操作考试实验地点开始考试。如果所有结果都大于一定的阈值(如0.85),则判定为非数据库内的人,需要人为干预。

3.3 数据库设计

使用MySQL数据库存储学生信息表(Student)(如表1所示)、教师信息(Teacher)表(如表2所示)、考试项目表(Project)(如表3所示)、考试表(Test)(如表4所示)、抽签结果签到表(Check)(如表5所示)等。

表1 学生信息表(Student)

表2 教师信息表(Teacher)

表3 考试项目表(Project)

表4 考试表(Test)

表5 签到表(Check)

对于表1学生信息表里Embedding(512 维人脸特征向量)存入到数据库的算法如表6所示,它的核心思想是将ndarrary 格式的Embedding 矩阵转换为字符串(String)格式,这样就能很方便地保存到学生信息表(Student)中的String格式的Embedding字段了。

表6 将Embedding存入数据库的算法

3.4 加载网络

本文模型的训练和环境搭建依托MTCNN和FaceNet开源

项目,FaceNet 的源码链接https://github.com/davidsandberg/facenet,可以下载下来建立模型。

创建MTCNN网络结构的可调用如下语句:

pnet,rnet,onet=align.detect_face.create_mtcnn(sess,None)

3.5 MTCNN人脸检测与裁剪

人脸检测与裁剪模块主要工作是对实时画面进行人脸检测与关键特征五点标定,然后进行裁剪与对齐。

(1)人脸检测的核心代码语句:

bounding_boxes,_=align.detect_face.detect_face(image,minsize,pnet,rnet,onet,threshold,factor)#bounding_boxes存储人脸框5个关键特征点的数据

(2)五点标定画人脸候选框的核心代码如下:

for i in range(len(bounding_boxes)):

det=np.squeeze(bounding_boxes[i,0:4])

bb=np.zeros(4,dtype=np.int32)

#界定候选框的裁剪边缘,裁剪的人脸框比MTCNN获取的人脸框大margin大小

bb[0]=np.maximum(det[0]-margin/2,0)

bb[1]=np.maximum(det[1]-margin/2,0)

bb[2]=np.minimum(det[2]+margin/2,w)

bb[3]=np.minimum(det[3]+margin/2,h)

#使用cvRectangle绘制矩形

cv.rectangle(bgr,(bb[0],bb[1]),(bb[2],bb[3]),(0,0,255),2,8,0)

(3)裁剪与对齐的方法如下:

向align_dataset_mtcnn.py传入参数image_size160和margin32,在上一步得到人脸候选框的基础上裁剪32像素,缩放到160×160像素大小,将人脸框传递至FaceNet网络中。

3.6 FaceNet生成Embbing特征库

要提取人脸特征的512 维向量首先要建立FaceNet Embedding 模型,然后通过该模型计算出特征向量,FaceNet生成Embbing特征库算法如表7所示。

表7 将Embedding存入数据库的算法

3.7 摄像头获取图像

获取图像的主要工作是利用OpenCV从摄像头获取实时画面,转化为灰度图像,传递至人脸检测模块。获取图像算法如表8所示。

表8 获取图像算法

3.8 人脸识别

人脸识别模块的主要工作是指根据MTCNN检测到的人脸图片,提取人脸特征的512 维向量,计算提取的Embedding 结果。然后根据数该考试表(Test)里的学生姓名,逐条找到学生信息表(Student)里面记录的Embedding字段,计算两者之间的欧式距离,算法如表9所示。

表9 欧式计算算法

3.9 抽签

本系统使用不放回抽样的方式来实现随机抽签。首先从数据库把考试表(Test)中的(Student_ID)读取到列表中,按考试编号(Test_ID)一次抽取一个学生,抽到之后就从抽签池中该该学生学号删除,然后继续往下抽签,一次到抽完为止,具体不放回抽样算法如表10所示。

表10 不放回抽样算法

3.10 总体结构

将人脸检测识别功能封装到Django 的名为camera的APP 中,具体是放在该APP 文件夹的views.py 文件里,这样就将人脸检测识别功能模块封装到Django 工程中了。

4 结束语

本文主要介绍了“人脸识别在物理操作实验考试”中的应用,具体描述了“基于Django 的物理操作实验考试系统”的设计与实现过程。经过编码开发和系统测试以后,将系统部署到实际工作环境后的实际效果如图4到图5所示。

图4 抽签结果

图5 人脸识别测试实例

人脸识别已在物理操作实验考试系统中成功应用,识别率达到90%,大大提高了考试签到效率。基于Web页面的操作简单友好,师生接受度较好。该系统为开展组织物理操作实验提供了较大的便利,为人脸识别技术在智慧校园中的应用奠定基石,下一步的重点工作是将该系统与教务系统兼容。

猜你喜欢

人脸人脸识别卷积
人脸识别 等
基于3D-Winograd的快速卷积算法设计及FPGA实现
有特点的人脸
一起学画人脸
揭开人脸识别的神秘面纱
卷积神经网络的分析与设计
人脸识别技术的基本原理与应用
从滤波器理解卷积
三国漫——人脸解锁
基于傅里叶域卷积表示的目标跟踪算法