胡月文 李丹
摘 要:随着人工智能的不断发展,人脸识别技术的不断改进与成熟,该文在人工智能人脸识别的基础之上,研究深度卷积神经网络中的不同损失函数,提出一种基于ArcFace损失函数的人脸识别模型,并应用于监护安全人脸识别领域。通过对在Pubfig数据集上的实验结果以及实时人脸识别效果的分析,验证了该模型在监护安全人脸识别上的优势与可行性,为小学生监护人接送提供了安全保障。
关键词:损失函数;ArcFace;人脸识别;监护安全
中图分类号:TP391.41;TP18 文献标识码:A 文章编号:2096-4706(2020)17-0132-04
Abstract:With the ever-accelerated of artificial intelligence and the continuous improvement and maturity of face recognition technology,this paper studies different loss functions in deep convolution neural network and proposes a face recognition model based on ArcFace loss function,which is applied to the field of monitoring safety face recognition. Through the analysis of the experimental results on the Pubfig dataset and the real-time face recognition effect,the advantages and feasibility of the model in guardianship safety face recognition are verified,which provides a security guarantee for the primary school guardians to pick up.
Keywords:loss function;ArcFace;face recognition;monitoring security
0 引 言
本文探讨研究了常用于人工智能深度学习中并基于卷积神经网络(CNN)的不同损失函数(SoftMax;SphereFace[1];CosFace[2];ArcFace[3])。其中SoftMax损失函数可以区分不同类别的数据并对其分类,但不要求相同类别之间紧密结合以及不同类别之间较大分离,且其权重矩阵大小与特征数量n成线性正相关。学习到的特征在闭集分类问题上能够被区分,但在开集问题上不能很好被区分,不适合大规模数据训练。SphereFace在前者的基础上进行改进,通过对最后一层全连接层输出的改变,使损失函数完全由特征和权重之间的角度决定,通过添加乘性角度裕量m使特征具有可辨别性,但SphereFace损失函数在训练时需要计算一系列的近似值,这导致神经网络训练并不稳定。CosFace通过添加加性角度裕量,将角度裕量m移至cosθ外部,训练更容易实现,损失函数更易收敛。ArcFace通过添加附加角度裕量即将角度裕量m添加在cosθ内部,使空间中的决策边界最大化,在空间上有更好的几何解释,能够更加清晰辨别特征。
本文通过基于卷积神经网络(CNN)架构中的ResNet 50網络结构,在Public Figures Face Database(Pubfig)数据集(包含200个ID,每个ID包含10张不同角度,表情,姿势的照片,其中选取每人4张照片作为验证集,包含了1 200个正样本对,398 000个负样本对)上进行损失函数对比分析。
人脸识别技术,如刷脸付款,刷脸安检等等,已经涉及我们日常生活的方方面面,但其在小学生监护人接送安全领域并不普及。本文在人工智能人脸识别的基础之上,研究并对比分析了卷积神经网络中的不同损失函数,发现ArcFace损失函数具有良好的性能,通过基于四川大学锦城学院人工智能实验室在Pubfig公开数据集上的训练结果分析,得到ArcFace损失函数的人脸识别模型达到87%的准确率,并基于此模型模拟实时监护人安全接送人脸识别,模型能够准确识别人脸,并比对数据库中的人脸信息判别是否是监护人。该实验分析与结果验证了基于ArcFace损失函数的人脸识别在小学生监护安全领域上的优势和可行性。
1 损失函数
1.1 SoftMax
SoftMax在深度学习中常用于多种类别的分类过程,它让多个神经元的输出值映射在0到1之间并且其总和为1,类似概率,我们将输出值最大的结点作为预测的目标类别。Softmax交叉熵损失函数公式:
其中,xi为样本特征,yi为样本所属类别,Wj为权重矩阵的第j列,bj为偏执量,N为批处理大小,n为类别数量。未改良的SoftMax损失函数只能通过输出值对其分类,并不能通过优化来紧密结合相同类别,也不能较大区分不同类别,这并不适合人脸识别训练。
1.2 SphereFace
SoftMax损失函数的决策边界为(W1-W2)x+b1-b2,SphereFace通过固定‖W1‖=‖W2‖=1,b1=b2=0,,SphereFace损失函数的决策边界为‖x‖(cos(θ1)-cos(θ2))=0,如果我们将特征向量x固定,其决策边界只取决于θ,SphereFace能够直接优化角度,但是其区分度并不明显,于是通过添加角度裕量m来控制决策界线:‖x‖(cos(mθ1)-cos(mθ2))=0。SphereFace损失函数公式如下:
其中,m的大小与角度距离成正相关,由于乘性角度裕量可能会使cos函数超出范围,我们需要对其进行约束来保证cos函数单调:
m的添加虽然让特征有了可判别性,但在实际训练时,面对分类类别巨大的数据集时,SphereFace损失函数不容易收敛,所以在实际训练时添加了动态参数lambda来调整。SphereFace的改进在一定程度上使得相同的类别之间更加紧密,不同类别之间更加有区分度,但是由于超参数的添加,训练时会相对棘手。
1.3 CosFace
CosFace将角度裕量m移动到了cos函数的外部,损失函数公式为:
其中,将L2中的‖xi‖固定为特征规模大小s,在训练时CosFace时,没有棘手的超参数lambda,使得训练更容易实现,损失函数更容易收敛。
1.4 ArcFace
与CosFace相比,ArcFace将加性角度裕量m移动到了cosθ的内部,损失函数公式如下:
相较于其他损失函数,ArcFace能在几何空间上更好诠释角度距离,它可以与超平面上的地测线相对应并更直观地使决策边界最大化,各个损失函数的决策边界变化如表1所示。
Softmax能对两个类别进行分类,但是并不能体现不同类别的之间的差异性以及相同类别之间的紧密性;ArcFace相较其他非线性角度裕量损失函数来说,决策边界始终保持稳定。训练ArcFace时所需代码量很少,且与其它损失函数不同的是,ArcFace自身可以达到很好的训练效果,不结合其他损失函数就能在多种不同类型的训练数据集上达到较高的准确率以及更好地收敛函数,且适用于许多深度学习网络框架(MxNet;Pytorch;Tensorflow)。在文献[3]中,在10个人脸识别的基准上,ArcFace在大量的图片和视频数据集中都有最高水准的表现。
2 实验
2.1 实验数据集
实验数据集PubFig为哥伦比亚大学公开人物数据集,是一个大型的真实人脸数据库,包含从互联网上搜集的200个ID,58 797张的人脸图片。这些图片并非是在特定场合与条件拍摄得来,因此姿势,摄像设备,光照,成像条件,表情动作,场景等参数都大不相同。作者通过数据集提供的网页链接进行数据爬取,清洗其中网页不可访问的数据,不可使用的数据,非摄像头获取的数据以及光照不适,遮挡物遮盖,图像不清晰等数据,最后选取每个人10张不同姿势(如图1所示),表情,光照等照片,其中每人4张图片作为验证集,包含了1 200个正样本对,398 000个负样本对。在训练之前,采用多任务卷积神经网络(MTCNN)对数据集进行人脸检测和裁剪,图片数据预处理裁剪大小。
2.2 实验设置与结果
本文数据集训练基于Ubantu 18.04.4操作系统,MXNet深度学习框架,并在4个GeForce GTX 1080Ti的GPU上训练,采用Python语言。网络结构选择深度卷积神经网络中的ResNet50。在PubFig数据集上,对上述四种损失函数进行训练,在实验过程中,采用随机梯度下降(SGD),学习率设置为0.1,batch size设置为128,由于数据集规模不大,最大迭代次数设置为100次。
由表2和图2可知,算法在经过10 000个batch训练之后,其中ArcFace的准确率最高,达到了87%,CosFace与ArcFace表现相差不大,SphereFace最高准确率比ArcFace低了5%,SoftMax相较于其他损失函数表现较差,由此可见ArcFace损失函数的性能在PubFig上有很好的的表现。各个损失函数在模型训练时,收敛情况良好,由于数据集规模较小,且训练准确率和验证准确率都较高,损失函数都迅速收敛并且效果不错,由此可见在PubFig公开数据集上的试验达到了预期的目的。
3 小学生监护人接送人脸识别应用
3.1 应用背景
有关小学生监护人接送的安全问题一直备受社会关注,由于小学生放学时,人流量大,秩序混乱,小学生年龄小,安全意识低,容易发生拐骗儿童等不安全事件,面对小学生的安全接送问题,低年级的学生应由监护人亲自接送,学校也应采取相应措施防止意外事件发生。
对来接小学生放学的监护人进行人脸识别,能够快速有效地辨别监护人身份,安全接走孩子。当出现非监护人接小学生放学的特殊情况时,也可以及时记录其人脸信息。有效地降低了意外事件发生的风险。
3.2 监护人接送人脸识别基本流程
如图3所示,在使用系统之前,我们需要收集学生监护人的基本信息,并将其人脸图像以及基本信息保存在数据库中,这部分信息一般在学生进校时就会收集,所以信息收集以及数据库的建立相对容易。在监护人接小学生之前,首先通过摄像设备获取其人脸数据信息,再与监护人数据库进行对照,判断该人是否在库,如果在库,则允许接走孩子,如果不在库,则保存该人的图像信息,并及时联系学生监护人确认接人者身份,教师或管理人判断是否允许接走孩子。
其中摄像头获取到的图像作为图像输入,运用MTCNN算法实现人脸检测,并将人脸图片裁剪为112×112像素大小,通过基于ArcFace损失函数训练出的模型来获取人脸特征,再通过和数据库保存的人脸特征进行对比,判断该人是否在数据库中,并输出结果。
3.3 监护人接送人脸识别检测需求
由于学生放学时人员出入量巨大,在处理数据时,单线程获取个人特征值的时间应不多于150 ms,摄像头分辨率应200万像素以上,识别精度要求高,速度快,从人脸开始检测到输出结果应小于1 s。系统应能够处理人脸识别时的各种情况,如丰富的面部动作:眨眼、打哈欠、皱眉等;能够处理不同程度的自然光:高强度曝光、天气阴暗等;能夠处理不同姿态:歪头、斜侧脸等;能够处理不同年龄段的人脸:老年人、中年人、青少年;能够降低各式发型以及面部装饰影响:有刘海、戴帽子或眼镜、妆容等。
3.4 简易检测效果图
如图4所示,通过基于Arcface损失函数训练得到的人脸识别模型进行小学生监护安全接送情景模拟,如其中第一张图是未将人脸信息存储在数据库时,则不能识别人脸。
本研究成员通过制作人脸数据库并使用摄像设备获得人脸数据信息,用基于ArcFace损失函数训练的模型检测人脸,再对图像进行处理,对齐人脸并裁剪到112×112像素固定大小,获取人脸特征信息,并与事先做好的人脸信息数据库比对,结果准确识别出人脸并标注人脸信息。
4 结 论
本文探讨了人脸识别中卷积神经网络的不同损失函数,并在公开数据集PubFig上验证ArcFace损失函数具有较好的表现,其准确率达到87%。并探究了人脸识别在监护人接送安全上的应用,结合基于ArcFace损失函数训练出来的模型,使用摄像头获得人脸数据信息并对比人脸数据库,能够精准识别出是该人是否在库。
后续关于监护人接送安全系统在网络结构,识别速率,处理能力以及硬件设备等方面还需进一步探究和实现。
参考文献:
[1] LIU W Y,WEN Y D,YU Z D,et al. SphereFace:Deep Hypersphere Embedding for Face Recognition [C]//2017 IEEE Conference on Computer Vision and Pattern Recognition(CVPR).IEEE,2017:6738-6746.
[2] WANG H,WANG Y T,ZHOU Z,et al. Cosface:large margin cosine loss for deep facerecognition [C]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition(CVPR).IEEE,2018:5265-5274.
[3] DENG J K,GUO J,XUE N N,et al. ArcFace:additive angular margin loss for deep face recognition [C]//2019 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).IEEE,2019:4690-4699.
作者简介:胡月文(1999—),女,汉族,四川南充人,本科在读,研究方向:计算机科学与技术;李丹(1973—),男,漢族,四川绵阳人,副教授,硕士,研究方向:自然语言处理。