时间:2024-05-04
黄 俊,张娜娜,章 惠
(1.上海海洋大学信息学院,上海 201306;2.上海建桥学院信息技术学院,上海 201306)
(*通信作者电子邮箱nanazhang2004@163.com)
随着科技的发展,人工智能技术已经走进人们的生活中,其中,以人脸识别[1]技术最具代表性,因其安全性高、稳定性强等优点而被广泛应用于手机解锁、金融支付、考勤签到等领域。但是,人脸识别技术并不是绝对安全的,由于人们社交生活的大众化,人们的面部图像可以很容易地被不法分子获得并加以利用[2],不法分子通过屏幕翻拍、照片、3 维模型[3]等方式就可对人脸识别系统进行攻击,这对用户的利益造成了极大的危害。为了解决这一问题,人脸活体检测[4]技术应运而生。活体检测是一种用于区分生物特征和非生物特征的技术,近年来,已有不少科研人员在活体检测方面取得了不错的研究成果。
Singh 等[5]设计了一个互动式活体检测系统,作者计算眼部区域的面积和牙齿的HSV(Hue,Saturation,Value)值来检测眼睛和嘴巴的张合状态,以此来进行活体判断。田野等[6]从提取到的人脸图像中计算出局部二值模式(Local Binary Pattern,LBP),结合离散余弦变换(Discrete Cosine Transform,DCT)获 得LBP-MDCT(Local Binary Pattern on Multi-scale Discrete Cosine Transform)算子,并将其放进支持向量机(Support Vector Machine,SVM)[7]中实现活体分类。胡斐等[8]利用LK(Lucas-Kanade)光流法对图像进行剪切波变换[9],将提取的特征放入卷积神经网络(Convolutional Neural Network,CNN)中进行微调,从而实现活体分类。
上述提到的方法在前期的数据处理过程中存在着计算量大、特征维数高、特征信息提取困难等问题,本文针对这种不足,利用CNN 自动提取特征的能力,提出了一种融合头部姿态和面部表情的互动式活体检测算法,针对该算法做了以下两个重点工作:
1)自建头部姿态估计数据集,从网络层数、卷积核数目、正则化等方面综合考虑,改进了VGGNet[10],设计了一个头部姿态估计网络,通过实验论证了该网络的分类效果较优;
2)自建表情识别数据集,对VGGNet 的池化层、全连接层进行了改进,设计了一个表情识别网络,通过实验论证了该网络的识别率较高。
最终本文融合头部姿态估计网络和表情识别网络构建了一个互动式活体检测,该系统将人脸图像并行送入到头部姿态估计网络和表情识别网络中,并将预测结果与随机指令进行比对,若比对一致,则视为活体判断;反之,为非活体。图1为本文活体检测系统的相关流程。
图1 活体检测系统流程Fig.1 Flowchart of liveness detection system
CNN 是深度学习中的一种代表性算法,具有很强的特征提取能力,在视觉识别领域中占据着重要地位。随着科研人员的不懈努力,许多优秀的CNN 模型如AlexNet[11]、VGGNet等被提出并取得了不错的成绩。一般地,CNN主要由卷积层、池化层、全连接层和输出层组成。
1)卷积层。卷积层的主要作用是提取图像特征,该层采用局部连接加权值共享的方式,极大地减少了网络学习的参数,并且在多个卷积核的作用下,能提取出多个特征图。一般地,一个网络中包含着多个卷积层,每个卷积层中均包含一个激活函数用以增强网络的非线性表达能力,随着网络结构的加深,网络中提取的特征也会越来越清晰。该层的卷积运算可表示如下:
式(1)中:l为卷积层在网络中的位置,i为输入特征图的通道数,j为输出特征图的通道数,为卷积核,mj为上层输出特征,为偏置项,f(⋅)为修正线性单元(Rectified Linear Unit,ReLU)激活函数。
2)最大池化层。池化层的输入为卷积层计算提取到的特征图,通常特征图包含着信息冗余、维度较高等弊端,使用最大池化操作可以很好地解决上述问题,同时还能缓解网络训练过程中产生的过拟合现象。相关计算过程[12]表示如下:
其中:y为池化区域c中的元素,down(⋅)为下采样过程。
3)全连接层。全连接层中的每个神经元都与上层神经元相连接,这种做法能将卷积层和池化层提取到的局部信息整合在一起,从而提升数据分类的准确率,有关神经元的计算过程可表示为:
其中:w为权重参数,b为偏置项,f(⋅)为ReLU激活函数。
4)输出层。输出层的输入是全连接层的输出,该层采用Softmax 函数用于整理和归一化输出结果,可计算出每个类别的概率似然值,一般取概率值最大的一类作为网络的预测结果,相关计算公式如下:
其中:zi为上级单元输出,n为总类别个数。
VGGNet 是CNN中一种较为经典的分类模型,于2014 年被Simonyan 等提出,并在ILSVRC 2014 上取得了第二名的优异成绩。与传统的CNN 模型一样,VGGNet 拥有卷积层、池化层、全连接层和输出层等基本结构。不同的是,VGGNet 均使用了3×3大小的卷积核(步长为1),同时,作者还设计出了一系列的卷积组,用于增大感受野,减少参数量,提取更多的细节特征,具体表现为:
式(5)中,conv表示卷积层,3个连续的3×3卷积等价于一个7×7 的卷积核,2 个连续的3×3 卷积等价于一个5×5 的卷积核。与AlexNet中直接使用7×7 或5×5 大小的卷积核相比,使用卷积组能在局部感受野大小不变的同时减少参数量。另外,由于卷积层中均有ReLU 激活函数,所以模型经过多次的ReLU学习,还能增强泛化能力。
图2 为VGGNet 的网络结构。首先,网络的输入是1 张224×224×3 的图像;然后,经过5×5 或7×7 的卷积组提取更多的特征,在每个卷积组后面还添加了一层最大池化层,用以预防过拟合和提纯,并在全连接层中整合提取到的局部信息;最后,通过SoftMax层输出1 000个分类结果。
虽然VGGNet在ILSVRC 2014比赛中取得了不俗的成绩,但它针对的是1 000 个图像分类,故而参数量十分庞大(约为1.38×108),根本无法用于一般的分类任务。下面本文将对VGGNet进行结构化的改进,以满足本文任务的需要。
图2 VGG-16网络结构Fig.2 VGG-16 network structure
在实际应用环节中,相对于预测头部转向的角度值,判断头部朝向(yaw、roll)反而更加简单,因此本文将构建CNN对头部姿态图片进行分类。头部姿态估计任务最大的好处是位置信息明显,网络提取特征时比较容易,主要的难点在于所构建的网络是否能够满足准确性和系统实时性的要求。
VGG-16 网络中包含16 个带参结构层,其中包括13 个卷积层和3 个全连接层。如果直接使用VGG-16 来做头部姿态分类,一方面,网络训练过程缓慢,参数负载过多;另一方面,即便网络在头部姿态方面能取得不错的分类效果,但在后续的图片预测时会耗费大量的时间和计算力。因此,本文参考了VGGNet 的结构,在网络结构上做进一步研究,在提升网络分类准确率的同时,降低网络参数,精简网络,经过多次的实验验证本文最终确定了头部姿态网络结构并将其命名为Head-Pose-Net。表1 为Head-Pose-Net 的具体网络结构参数,其中,主要应用到以下方法:
表1 Head-Pose-Net具体参数Tab.1 Head-Pose-Net related parameters
1)构建卷积组。本文根据VGGNet 的原理重构了卷积部分,如表1 所示,第一到第三卷积层等价于使用了一个7×7 大小的卷积核,第四到第五卷积层等价于使用了一个5×5 大小的卷积核,每个卷积层中均采用ReLU 函数进行非线性激活,以增强网络的泛化能力。在每个卷积组后面还采用了2×2的最大池化层,步长为2,以此来减少网络中的参数,保留更多纹理特征。
2)dropout 正则化。在全连接层(fc1,fc2)中,本文应用了dropout 正则化[13]手段,主要目的是为了抑制网络的过拟合现象。其关键思想是:在每轮的网络训练过程中随机选择部分神经元进行丢弃,即停止对丢弃的神经元进行权值更新,进而获得一个随机的网络结构,让每一轮的预测结果都不会依赖于某些特定的神经元,进而缓解过拟合现象。有关dropout 正则化的计算公式如下:
其中:f(⋅)为激活函数,w为权值矩阵,b为偏置项,m为该层的二值掩膜矩阵,p为随机概率。
使用以上方式构建网络的好处是:前期利用多个连续3×3 卷积去构建7×7 和5×5 的卷积能捕捉到图像更多的细节特征,后期再利用3×3卷积提取出精细特征,整个算法卷积层层数较浅,且全连接层神经元个数较VGGNet 有所减少,这使得整个网络参数量(约为7.13×106)大大降低,网络训练与预测速度比VGGNet更快。
表情识别与头部姿态估计任务类似,仍需要构建CNN 来执行分类任务,但表情识别任务又比较特殊,主要原因在于面部易受到装饰物品的干扰,表情的划分界限也比较模糊,如生气与厌恶、大笑与惊讶等,故而给表情识别任务增加了难度,由于本文的最终目标是互动式活体检测,表情界限不明确也无法满足用户体验性和系统实时性的要求。综合以上因素,本文只针对三种表情(中性、高兴、惊讶)构建表情识别网络,并将该网络命名为Emotion-Rec-Net。在Emotion-Rec-Net中,除了构建卷积组外,还应用了以下方法:
1)卷积替换池化。虽然特征图经过池化层处理后可以剔除部分冗余信息,减少计算量,但比起使用步长为2 的卷积层,传统的池化层还是会损失部分有效信息,这里采用步长为2 的卷积层替代池化层[14],不仅能够进一步的减少计算量,而且通过多次的ReLU激活,还能增强网络的非线性表达能力。
2)全局平均池化。全局平均池化(Global Average Pooling,GAP)是一种可以取代全连接层的有效策略,它将每个输出特征图像素的平均值都计算出来[15],直接放入Softmax分类器中进行分类,根据文献[15]的实验结论来看,由于GAP中没有参数更新,所以计算量并不高,进一步的减小了过拟合的风险。
3)局部响应归一化(Local Response Normalization,LRN)是一种在深度学习训练中提升准确率的技术[11],最早见于AlexNet,一般应用在池化层之后,它的主要作用是将神经元中响应值较大的变得更大,并抑制响应值较小的,进一步增强网络的泛化能力。相关计算公式如下:
其中:N为通道数,为上层输出值,k、n、α和β均为自定义超参数。
经过多次实验测试,最终确定了Emotion-Rec-Net 的网络结构参数,如表2 所示。表中只保留了卷积层及全局平均池化层,用于提纯、降维的最大池化层已用步长为2 的卷积层代替,卷积层中均采用3×3大小的卷积核和ReLU 激活函数。第3、6 和12 卷积层之后都有一层LRN,LRN中的超参数取值为k=2、n=4、α=0.001/9.0、β=0.75。
表2 Emotion-Rec-Net具体参数Tab.2 Emotion-Rec-Net related parameters
虽然本文将池化层替换成了卷积层,增加了整个网络的参数量,但由于GAP 属于无参结构,所以整个网络的参数量(约为1.23×106)远远低于VGG-16的参数量,在计算力和抗过拟合能力上明显优于VGG-16,更有利于提高网络的预测速度。
本文所用的软件环境为Python 3.6.7,Tensorflow 1.10.0,OpenCV 4.1.0,硬件平台为Intel Core i5-8300H,GPU为NVIDIA GeForce GTX1050Ti,4 GB 显存,采用640×480的彩色摄像头获取图像。实验测试时所采用的评价指标为准确率,计算公式为:
4.1.1 头部姿态数据集
Head-Pose-Net 使用的公开数据集为CAS-PEAL-R1,该数据集包含了1 040位志愿者的头部姿态角度和不同光照、遮挡物下的人脸正脸图像,具体表现为yaw 角度:{0°,±15°,±30°,±45°},pitch角度:{0°,±30°}。
本文在实现互动式活体检测时,考虑到pitch 方向对后续表情识别的影响较大,故去除pitch方向,同时去除yaw中角度为±15°的图像(角度不明显),并自建roll方向的数据集。由于CAS-PEAL-R1 数据集中的人脸图片较为单一,故添加了yaw方向和正视方向的样本,以扩增数据集。实验中添加的roll、yaw 和正视方向的数据均为实验室科研人员从互联网和CelebA 数据集中严格筛选得到,背景、面部表情、头部姿态均较为复杂,这么做的目的是增加网络的泛化能力,使得网络在真实的应用场景下依旧有更好的鲁棒性。
最终汇总的头部姿态数据集包括5 个方向:正视(front)、左偏(left roll)、右偏(right roll)、左旋转(left yaw)和右旋转(right yaw)。对于其中的图片,使用多任务级联卷积神经网络(Multi-Task Convolutional Neural Network,MTCNN)人脸检测器[16]截取脸部区域,生成的相关样本如图3所示。
图3 头部姿态数据集示例样本Fig.3 Some examples of head pose datasets
4.1.2 表情识别数据集
Emotion-Rec-Net 使用的公开数据集为CK+,该数据集是由123 个人在实验环境下通过摄像机正面采集而获得的,本文人为标记并取出各个表情峰值较大时的图片,通过镜像翻转操作扩增该数据,最终整理出的CK+数据集共3 464 张(三种表情)。
由于最终的活体检测模块需要用户配合一起做头部姿态和表情识别,所以只有正脸的表情图片根本无法满足系统要求,所以本文自建表情识别数据集,该数据集为实验室科研人员从CelebA 数据集中获取并严格筛选得到,其中包含如下表情数据:中性(正视、左偏、右偏、左旋转、右旋转);高兴(正视、左偏、右偏、左旋转、右旋转);惊讶(正视、左偏、右偏、左旋转、右旋转)。使用MTCNN 人脸检测器截取脸部区域,生成的相关样本如图4所示。
图4 表情识别数据集示例样本Fig.4 Some examples of expression recognition datasets
4.2.1 Head-Pose-Net实验设置及结果
1)样本分配。
本文采集整理的头部姿态数据集详情如表3所示。
针对头部姿态数据集,本文按7∶2∶1 的比例,将其划分为训练集、验证集和测试集。为了测试网络的性能,样本划分时需要注意以下两个原则:
①样本划分成三个数据集时,采取随机抽取原则;
②为了进行实验对比,除左、右旋转样本之外,测试集中的样本均来源于CAS-PEAL-R1。
表3 头部姿态数据集样本数Tab.3 Sample size of head pose datasets
2)训练策略。
神经网络在训练时通过梯度下降的方式使网络收敛到最小值或局部极小值,本文在实验时采用的梯度下降优化器为Adam 优化器[17],Batch Size 为128,将三通道人脸图像设置为90×110 大小,像素值归一化到[0,1],学习率设为10-4,dropout 设为0.5,最大训练次数设为10 000,每训练100 次对网络进行一次验证。
3)结果对比。
本文使用生成的模型对测试集中的样本图片进行预测,生成的混淆矩阵如图5所示。
图5 头部姿态混淆矩阵Fig.5 Head pose confusion matrix
从图5 可得,正视时的准确率最高,达到了100%,左、右偏脸的识别率稍低,这是因为测试的数据来源于自建数据集,背景、人脸姿态等较为复杂。综上可得,CAS-PEAL-R1 数据集在Head-Pose-Net 上的平均准确率为99.87%。为了验证Head-Pose-Net 的有效性,在相同数据集(CAS-PEAL-R1)下与其他文献中的方法进行对比,如表4所示。
表4 头部姿态结果对比Tab.4 Head pose result comparison
从表4 可知,本文的方法略优于表中文献方法,具有良好的准确率。
4.2.2 Emotion-Rec-Net实验设置及结果
1)样本分配。
表情识别数据集详情如表5所示。
表5 表情识别数据集样本数Tab.5 Sample size of expression recognition datasets
与头部姿态数据集划分标准一样,本文依旧按7∶2∶1 的比例,将表情识别数据集划分为训练集、验证集和测试集,为了验证网络的有效性,测试集分为CK+测试数据集和自建测试数据集。
2)训练策略。
实验采用Adam 优化器,Batch Size 为128,将三通道人脸图像设置为70×80 大小,像素值归一化到[0,1],初始学习率设为10-3,每5 000次训练学习率乘以衰减因子0.2,最大训练次数设为50 000,每训练100次对网络进行一次验证。
3)结果对比。
本文对测试数据进行预测之后,得到结果如图6所示。
图6 表情识别混淆矩阵Fig.6 Expression recognition confusion matrix
从图6可以得出,CK+测试集的平均准确率为99.60%,其中,高兴和惊讶的准确率稍高,自建数据集由于背景干扰、头部姿态干扰、不同的人表情不一致等因素平均准确率稍低,仅为95.57%。为了验证Emotion-Rec-Net 的有效性,在相同数据集(CK+)下与其他文献中的方法进行对比,如表6所示。
表6 表情识别结果对比Tab.6 Expression recognition result comparison
对比结果可得,本文算法在CK+数据集上的准确率略高于表中文献算法,优势较明显。需要特别说明的是,文献[12,22-24]均取三种表情的平均准确率。
4.2.3 活体检测结果
本文实现的是一个互动式活体检测系统,融合了头部与表情两种面部状态,为了验证系统的可行性,在实验室条件下采集1 000张测试图像,相关测试结果如表7所示。
从表7 可得,本文所提出的活体检测算法平均准确率为96.70%,现将该测试结果与其他文献中的互动式活体检测结果进行对比,如表8所示。
表7 活体测试样本配置及结果Tab.7 Sample configuration and results of liveness detection results
表8 活体检测结果对比Tab.8 Comparison of liveness detection results
从表8 可以得出,本文的活体检测算法在准确率上略优于其他算法,性能较为良好。
本文的活体检测系统要求用户进行3次认证,3次认证产生的指令数为3 375 种,在此情况下,不法分子很难利用事先准备好的照片或视频进行系统攻击,且本文的活体检测系统实时性每秒可达20~28 帧,具有较好的鲁棒性和泛化能力。图7 为活体检测系统部分测试效果,其中的(a)、(b)和(c)均为系统随机指令下认证用户所做出的合法动作,由于动作与系统要求匹配,系统则视为活体,认证通过;(d)、(e)和(f)为用户做出的非法动作,由于动作与指令不匹配,系统认证失败。
图7 活体检测系统测试效果Fig.7 Liveness detection system test results
在VGGNet 的结构基础上,本文提出了头部姿态估计和表情识别两个网络,并融合上述模型实现了一个互动式活体检测系统。针对活体检测系统中的头部姿态估计模块,利用VGGNet 思想构建了一个Head-Pose-Net;针对系统中的表情识别模块,利用VGGNet 思想、卷积替代池化、LRN 和GAP 等方案构建了一个Emotion-Rec-Net。同时为了增强网络的泛化能力,自建了头部姿态数据集和表情识别数据集,上述两个模型在CAS-PEAL-R1 和CK+数据集上取得了较高的准确率。最终实验表明,该活体检测系统能有效地阻挡非活体攻击,系统实时性较流畅。
虽然互动式活体检测在科研乃至市面上应用较广,但人机交互性依旧不够友好,下一步研究的重点将依靠红外单帧人脸图像、CNN 和SVM 实现静默活体检测,在保证准确率不降低的情况下提升用户体验性,节省时间。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!