基于ArcFace 算法的人脸识别应用研究

2022-06-15 09:06薛继伟孙宇锐辛纪元
电子设计工程 2022年11期
关键词:人脸人脸识别特征

薛继伟,孙宇锐,辛纪元

(东北石油大学计算机与信息技术学院,黑龙江大庆 163000)

课堂考勤一直是教师评估学生学习状态以及评定学生平时成绩的重要方式之一,现如今大部分教师依旧使用人工点名这种传统的考勤方式,存在替课、效率低下等问题。因此,近年来工作人员一直在探索全新的考勤方式,主要有指纹识别[1]、人脸识别、RFID[2]等技术。但指纹识别技术不仅需要提前采集学生指纹,学生签到时也需要现场对比,虽然减少了教师点名的工作量,却并未节省时间。RFID 技术的弊端是需要学生随时携带签到卡。以上两种方式虽然非常适合企业级的考勤管理,却并不适合教室场景的应用。人脸识别技术是一种重要的生物特征识别技术,且在司法刑侦、电子护照以及各种考勤系统中都有应用[3]。利用人脸识别技术可以在学生无感知的情况下,达到考勤的目的,为学生和教师节省时间[4]。

1 相关工作

人脸识别技术如今已经逐渐成熟,传统的人脸识别算法有基于几何特征的方法、模板匹配算法和基于外观形状的方法等。随着深度学习研究的发展,人脸识别技术也在不断更新。DeepFace 是深度学习人脸识别方法的开山之作,它可以实现人脸检测、对齐和识别。其在最后的识别阶段使用了多种方法,包括直接算内积、计算加权的卡方距离(Chisquare Measure)以及孪生神经网络等。FaceNet 中提出了Triplet Loss 三元组损失,由Anchor、Negative 和Positive 3 个元素组成,通过训练该损失增大了Anchor到Negative的距离,减小了Anchor到Positive的距离。为了使神经网络最终得到的特征更有辨识力度,不同学者对Softmax 公式进行了多种改进。如:CenterLoss 方法在Softmax 的基础上添加维持类别中心的损失函数,L-Softmax 方法去掉了神经网络最后一层的偏置项,SphereFace[5]中提出的ASoftmax、L2-Softmax[6]以及AM-Softmax[7]和文中使用的ArcFace[8]等都沿用了这一改动。

2 人脸识别流程

每张人脸具有的特征都不相同,人脸所包含的可提取的特征数量越多,对人脸信息的表示越准确。如何区分这些特征,并将其对应到合适的人脸中,是人脸识别需要解决的问题。深度学习人脸识别方法使用深度神经网络将特征数值映射到特征空间中,并通过人脸识别算法训练人脸数据集,得到适合计算机理解和区分的人脸特征[9]。

人脸识别具体流程如图1 所示,首先需要构建学生人脸数据库,根据学生提交的照片进行分类,数据库下分若干文件夹,每个文件夹命名为学生学号,学号文件夹下为该学生的所有照片。图2 为人脸数据库存储目录结构示意图。在构建人脸数据库阶段,为了便于特征提取,需要对图像数据进行人脸对齐预处理,将人脸裁剪为同一大小统一朝向的图像,再利用人脸识别算法提取样本的人脸特征向量。

图1 人脸识别流程

图2 人脸数据库存储目录

当输入一张图像时,首先利用人脸检测算法获得人脸具体位置,再通过人脸识别算法提取特征向量,最后计算所提取的特征与人脸库中特征的相似度,并输出与其相似度最高的人脸身份[10]。几项重要技术的具体实现以及部分对比实验如下。

3 人脸对齐和人脸检测

3.1 人脸对齐

由于学生提交照片无法完全做到尺寸、人脸位置、大小等一致,直接使用会导致提取特征不准确,因此需要进行人脸对齐处理[11]。

人脸对齐算法有传统的ASM、AAM、SDM 算法等,文中选用如今较为常用的深度学习人脸对齐算法MTCNN。MTCNN 全称为多任务卷积神经网络,可以实现人脸检测、人脸关键点检测以及人脸对齐。该网络模型包含P-Net、R-Net 和O-Net 3 部分,利用候选框加分类器的思想,在轻量化网络模型的同时可以进行快速高效的人脸检测。MTCNN 通过P-Net 先粗略快速生成候选窗口,再经过R-Net 进行高精度的过滤,最终生成精确边界框。O-Net 比RNet 结构多一个卷积层,通过O-Net 最终会输出人面部的5 个特征点,分别是双眼、鼻子和两个嘴角。人脸对齐主要是通过人脸关键点检测得到相应坐标,根据该坐标调整人脸角度,可以得到对齐的人脸。图3 为使用MTCNN 进行人脸对齐的部分图像示例,图像大小为160×160 px。

图3 人脸对齐图像示例

3.2 人脸检测

3.2.1 人脸检测算法

人脸检测算法到目前为止经历了3 个阶段,即早期的模板匹配技术、AdaBoost[12]算法和深度学习方法。为了提高在嵌入式设备上的计算效率,文中对比了几种轻量级人脸检测算法,并根据实验结果选择了LFFD 算法。LFFD[13]是一种较为快速的、用于人脸检测的无锚框方法。该算法提出了一种具有8 个分支的简单且高效的网络,网络中每两个分支为一部分,分别是tiny part、small part、medium part 和large part。

3.2.2 人脸检测算法对比实验

文中针对相同场景(该场景有58 张人脸,其中被遮挡人脸数为5,NMS阈值设为0.3),对4种人脸检测算法YOLOFace[14]、RetinaFace[15]、CenterFace[16](以下分别简称YOLOF、RetinaF、CenterF)和LFFD 进行了实验对比。表1 列出了4 种人脸检测算法在同样的场景下检测到的人脸数量以及用时等。

表1 人脸检测算法对比结果

从表1中可以看出,LFFD检测到的人脸数最多且漏检率最低,虽然相对于其他方法误检率较高,但对结果影响不大。综合考虑多种因素,最终选择LFFD方法。

4 人脸识别

设计人脸识别算法时主要考虑的问题是:同一个人在特征空间的距离非常近,不同人在特征空间中距离较远。文中选用的ArcFace 算法本质目标为缩小类内距离,增大类间差距。

4.1 ArcFace算法

ArcFace 提出了用于人脸识别的损失函数,即Additive angular margin loss。ArcFace 在SphereFace和CosineFace的基础上进行了改进,不同的是ArcFace在角度空间中最大化分类界限,而CosineFace 在余弦空间中最大化分类界限。ArcFace 损失函数的计算公式如式(1)所示:

ArcFace 在取消偏置的基础上对输入进行L2正则化(L2Regularization)处理,同时乘以固定的scale参数s。该公式在cos 函数的θyi角度后加上m参数,m参数为微小角度,通常取20°左右。该角度间隔比余弦间隔对角度的影响更加直接。

4.2 ArcFace训练方法

对ArcFace 损失函数的训练是在人脸识别之前的初始化工作。由于官方的ArcFace 使用MXNet 框架,预训练模型无法直接在Pytorch[17]中使用,并且其提供的Pytorch 版本预训练模型精度不高。文中使用迁移学习的方式重新训练ArcFace,以提高模型精度,进而改善识别结果。

4.2.1 数据集

1)CASIA-WebFace

文中使用了CASIA-WebFace 数据集,该数据集包括10 575 个人的494 414 张图像,通过对数据集进行预处理,删除有较多噪声的图片,将清理后的数据集导入到项目中作为训练集。

2)LFW

LFW 是无约束自然场景下的人脸识别数据集,该数据集由不同朝向和表情以及光照等条件下截取的人脸图片组成,共13 233 张图片,共5 749 人。图片尺寸为250×250 px,其中1 680 人含有两张或以上人脸图片。该数据集如今主要用于验证人脸识别准确率。LFW 提供了验证列表LFW_test_pair.txt,该列表中随机选择了6 000 对人脸。其中3 000 对属于同一人,另3 000 对为不同的两人,每人各一张图片。属于同一个人的两张图片标记为1,属于不同人的两张图片标记为0。若模型对同一人预测结果为1 即为正确,预测结果为0 即为错误。同理对不同人预测结果为0 即为正确,预测结果为1 即为错误。

4.2.2 训练和验证

文中的主要实验环境配置:Intel Core i7-7800X、32 GB 内存、512 GB SSD 硬盘,NVIDIA RTX 2080Ti显卡,Ubuntu16.04 操作系统、Python3.6 语言、深度学习框架Pytorch1.2.0。模型训练参数如下:骨干网络使用MobileNet,BatchSize 设为64,epoch 为120;初始学习率为0.1,每10 个epoch 更新一次,衰减因子为0.1;ArcFace 公式中的s值设为30.0,m设为0.50。训练过程中损失函数变化曲线如图4(a)所示,横坐标为训练epoch(轮次),所有训练样本完成一次正向传播和反向传播为一轮次。纵坐标为loss 损失值。训练得到的MobileNet_120.pth 模型在LFW 验证集上的准确率为93.2%。图4(b)为准确率变化曲线,横坐标为训练epoch(轮次),纵坐标为测试准确率数值。

图4 训练Loss及准确率变化曲线

4.3 人脸识别实现

人脸识别即对比特征的过程,通过式(2)计算待识别人脸特征(x11,x12,…x1n)与人脸库中每个人脸特征(xi1,xi2,…xin)的欧式距离,如果小于所设定的阈值则输出距离最小的人脸图像作为识别结果,大于阈值则识别失败。

最后,进行人脸识别实验发现,不同人脸检测模型对人脸识别结果影响不大,但若漏检率较高会造成最终统计结果不准确。

5 无感点名系统设计

无感点名系统主要分为5 个模块,即登录模块、个人管理模块、点名模块、查询模块和后台管理模块。系统可以完成登录、查看个人信息、修改密码等功能。点名模块包括快速点名和正式点名功能。查询模块包括普通查询和按条件查询,教师可以按班级或学生姓名查询学生签到信息。后台管理模块完成对教师、学生、人脸库以及课程等信息的管理功能。

系统开发使用前后端分离的方式,通过后端封装API 接口,前端请求的方式连接。前端使用uni-APP UI 框架,后端使用Django Web 应用框架。开发工具分别为HBuilderX 和PyCharm。在后端框架的选择上,虽然Flask 框架小巧轻便、方便定制,但Django功能更加强大完善,且Django 内置admin 后台系统提高了软件开发效率。图5 为无感点名系统架构。

图5 无感点名系统架构

教师可以根据需求选择快速点名或正式点名,快速点名显示实到人数,不对结果进行统计。正式点名功能需要教师选择具体的课程信息,包括学期、课程名、班级、节次。教师使用系统时,上传学生课堂图像,进行人脸识别,可以查看统计结果,图6 为正式点名界面。统计结果包括应到人数、实到人数、缺勤人数以及缺勤学生的具体姓名等信息,教师可以选择是否保存该次点名结果,便于后续查询统计。

图6 正式点名界面

6 结论

该文对深度学习人脸识别技术进行了研究,并将其应用在无感点名系统中。开发了较为完整的无感点名系统,描述了具体的人脸识别流程以及系统架构等。该系统为教师课堂点名节约了时间,提高了效率。由于实验设备拍摄质量限制,教室课堂图片可能会出现不够清晰的情况。未来工作目标为对课堂图像进行处理,提高图像质量,进一步提高识别准确率。

猜你喜欢
人脸人脸识别特征
根据方程特征选解法
离散型随机变量的分布列与数字特征
人脸识别 等
有特点的人脸
一起学画人脸
揭开人脸识别的神秘面纱
人脸识别技术的基本原理与应用
不忠诚的四个特征
三国漫——人脸解锁
人脸识别在高校安全防范中的应用