基于深度学习的轻量级和多姿态人脸识别方法
2020-06-06章超华
龚 锐,丁 胜,章超华,苏 浩
(1. 武汉科技大学计算机科学与技术学院,武汉430065; 2. 智能信息处理与实时工业系统湖北省重点实验室(武汉科技大学),武汉430065; 3. 福建省大数据管理新技术与知识工程重点实验室(泉州师范大学),福建泉州362000)
(*通信作者电子邮箱516123131@qq.com)
0 引言
人脸识别是基于人的脸部特征信息进行身份验证的一种生物识别技术,通过带有摄像头的终端设备拍摄人的行为图像,使用人脸检测算法,从原始行为图像中得到人脸区域,用特征提取算法提取人脸的特征,并根据这些特征确认身份。传统的人脸识别方法包含主成分分析(Principal Component Analysis,PCA)[1]、拉 普 拉 斯 特 征 映 射[2]、局 部 保 持 映 射(Locality Preserving Projection,LPP)[3]、稀疏表示[4]等。这些传统人脸识别算法在提取特征时,往往是通过人工手段去获取样本特征,而人为设定的特征在特征提取和识别过程存在提取特征过程复杂、识别效率低等不足,而且受人脸的姿态转动、光照变化、遮挡等复杂场景下影响较大,这些方法所使用的特征属于浅层特征,不能从原始图像中获取本征的高层语义特征。
自2012年AlexNet 在ImageNet[5]比赛上取得冠军后,卷积神经网络愈发火热。随着VGGNet(Visual Geometry Group Networks[6]、GoogleNe[7]和ResNet(Residual Neural Networks)[8]的相继提出,深度卷积神经网络将多个计算机视觉任务的性能提升到了新的高度,总体的趋势是为了达到更高的准确性构建了更深更复杂的网络。人脸识别作为一种重要的身份认证技术,被应用于越来越多的移动端和嵌入式设备上,如设备解锁、应用登录、刷脸支付等。由于移动设备计算能力以及存储空间的限制,部署在移动设备上的人脸识别模型要满足准确率高、模型小、特征提取速度快的条件,这些大型网络在尺度和速度上不能满足移动设备的要求。MobileNetV1[9]提出了深度可分离卷积(depthwise separable convolutions),将标准卷积分解成深度卷积和逐点卷积,大幅度地降低了参数量和计算 量。ShuffleNet[10]使 用 分 组 逐 点 卷 积(group pointwise convolution),通过将卷积运算的输入限制在每个组内,显著地减少了计算量,再使用通道打乱(channel shuffle)操作,解决了分组卷积中不同组间信息不流通的问题。MobileFaceNet[11]从感受野的角度,分析了人脸识别任务中全局平均池化的缺点,使用全局深度卷积代替。
此外,人脸图像较大的类内变化和较小的类间差异是人脸识别任务的一个困难点。由于人脸的角度、光照、表情、年龄、化妆、遮挡、图片质量等变化,同一个人的不同人脸图像具有很大差异,如何让计算机在较大的类内变化的干扰下依然能够辨识到比较微弱的类间变化,是人脸识别的主要挑战。人脸识别要从两个方向优化:一是增加不同人之间的距离(类间距离);二是降低同一个人在不同人脸图像上的距离(类内距离)。基于度量学习的Triplet Loss[12]的目标是使同类样本之间的距离尽可能缩小,不同类样本之间的距离尽可能放大。Center Loss[13]提出为每一个类提供一个类别中心,并最小化每个样本与该中心的距离。二者都是基于Softmax Loss 的,存在不足。后来出现的损失函数SphereFace[14]、CosFace(Large Margin Cosine Loss)[15]和ArcFace(Additive Angular Margin Loss)[16]从根本上改进,要求扩大分类面之间的margin,增强Softmax 损失函数的判别能力,能够较好地满足增大类间距离、减小类内距离的要求。
1 多姿态人脸数据集
现有的深度学习方法是将对齐后的人脸图像通过深层网络提取人脸特征,由于忽略了人脸的姿态特征,因而导致识别精度不够高。针对这个问题,本文建立了一个多姿态的人脸数据集,如图1所示。
图1 多姿态人脸数据集Fig. 1 Multi-pose face dataset
该数据集由800 名志愿者每人5 张人脸图像(5 个姿态,分别为正脸、左侧脸、右侧脸、抬头、低头)组成,共4 000 张。采集过程为:在光照条件良好的环境下放置摄像头,通过多任务级联卷积神经网络(Multi-Task cascaded Convolutional Neural Network,MTCNN)[17]算法对视频流进行人脸检测,根据检测到的人脸关键点(左右眼、鼻尖、左右嘴角)判断人脸姿态,判断方法见1.3 节,采集完5 个姿态后将对齐后的5 张图像缩放到112×112 大小,保存起来,同时记录对应人脸的姓名年龄性别作为人脸识别的标签。
1.1 MTCNN算法
MTCNN 算法用于人脸检测任务,采用三个级联的网络PNet(Proposal Network)、R-Net(Refine Network)和O-Net(Output Network)由粗到细,通过减少滤波器数量、设置小的卷积核和增加网络结构的深度,在较短的时间内获得很好的性能,在光照变化、部分遮挡和人脸转动等情况下也能得到很好的人脸检测结果。
图2 MTCNN算法流程Fig. 2 Flow chart of MTCNN algorithm
1.2 人脸对齐
MTCNN 算法可以检测出人脸在图像中的位置,同时还能检测人脸关键点。人脸关键点可以用来做人脸对齐,将不同角度的人脸对齐后有利于人脸识别,人脸对齐步骤如图3 所示。根据左右眼睛和鼻子的位置,通过仿射变换,将人脸对齐,并裁剪缩放到112×112。
图3 人脸对齐Fig. 3 Face alignment
1.3 人脸姿态判断
MTCNN 算法检测的原图和检测后关键点位置如图4 所示。本文使用左右眼、鼻尖和左嘴角这四个关键点判断人脸姿态方向,记左眼坐标为(x1,y1),右眼坐标为(x2,y2),鼻尖坐标为(x3,y3),左嘴角坐标为(x4,y4)。以正脸图为基准,从横轴看,鼻尖近似在左右眼坐标中心;从纵轴看,鼻尖近似在左眼和左嘴角坐标中心,因此满足如下式子:
同理,当前人脸图像是左侧脸图的条件是:
当前人脸图像是右侧脸图的条件是:
当前人脸图像是低头图的条件是:
当前人脸图像是抬头图的条件是:
在上面4 个式子中,D是一个大于0 的值,表示中心点与鼻尖的横轴距离或纵轴距离,在本实验中取值为10,即中心pixel点与鼻尖距离相差10 px(pixel)就算满足条件。
图4 原图与人脸检测后的关键点Fig. 4 Original image and key points after face detection
2 主要方法
2.1 特征提取网络
文献[18]提出了一种高效网络模块,如图5 所示,在本文中记为mainblock。 本文结合ShuffleNetV2 的优点对MobileFaceNet 进行了改进,改进后的网络结构如表1所示,改进后的网络记为ShuffleMNet。
图5 ShuffleMNet的mainblockFig. 5 Mainblock of ShuffleMNet
在网络的开始先使用步长为2 的卷积核对输入进行下采样,再接上多个mainblock 模块得到7×7 的特征图,使用全局深度卷积(Global Depthwise Convolution,GDC)取代全局平均池化(Global Average Pooling,GAP)得到1×1 的特征图,最后接上一个全连接层得到128维特征向量。
每个mainblock 模块先对输入进行1 次如图5(b)所示的步长为2 的下采样,之后重复n-1 次图5(a)所示的操作。图5(a)中首先对输入进行通道分割(Channel Split),将通道为c的输入分成2 组通道为c/2 的分支,左边直接映射,右边是一个类Inverted residuals[19]模块,然后左右两边特征图合并,最后进行通道打乱(Channel Shuffle)使得各个通道之间的信息相互交通。图5(b)中左边分支是步长为2 的深度可分离卷积,右边分支是步长为2 的类Inverted residuals 模块,之后通过左右特征图合并、通道打乱得到输出。其中两个类Inverted residuals模块除了空间下采样时第一个1×1卷积进行升维,其他所有卷积操作输入输出通道数都相同。使用参数化修正线性单元(Parametric Rectified Linear Unit,PReLU)作为激活函数。
表1 ShuffleMNet结构Tab. 1 ShuffleMNet architecture
2.2 人脸匹配
将特征提取得到的128 维特征与人脸数据库中的所有人脸特征进行比对。相较于欧氏距离,余弦距离使用两个向量夹角的余弦值衡量两个个体间差异的大小,后者更加注重两个向量在方向上的差异,因此,本实验人脸特征比对采用的度量方法是计算余弦距离远近,距离越近(相似度越大)表示两张人脸越相似。本次实验设置阈值设为0.7,若余弦相似度大于0.7,则表示这张图像匹配到了数据库中对应的人。如果存在多张人脸与当前人脸的余弦相似度大于阈值,取相似度最高的为匹配结果。
2.3 人脸跟踪
文献[20]使用核相关滤波(Kernelized Correlation Filters,KCF)方法用于人脸跟踪,文献[21]通过在MTCNN算法后新加一个网络做人脸跟踪。本文使用更简单的方法做人脸跟踪。
MTCNN 最后一个网络O-Net 的网络结构如图6 所示。由于MTCNN算法是通过级联网络由粗到细完成人脸检测任务,O-Net 第一个全连接层是256 维的高层特征,包含了人脸bounding box 回归和人脸关键点的信息,可以利用这256 维特征作为人脸跟踪的依据,并判断两个人脸框中心点的欧氏距离进一步确定是否是同一人脸。
图6 MTCNN的最后一个网络O-NetFig. 6 MTCNN's last network O-Net
3 实验
3.1 实验环境
本实验使用远程服务器训练深度神经网络模型,该服务器配有64位的CentOS系统,配备了Inter Xeon E5 2620 v4处理器,64 GB内存,8张Tesla V100显卡,每张显卡显存为32 GB。
3.2 训练数据集与校验数据集
使用由DeepGlint 公开的Asian-Celeb 人脸数据集作为训练数据集训练深度卷积神经网络模型。该数据集包含93 979个纯亚洲人,共2 830 146 张已经对齐好的人脸图像,规模有93.8 GB。本文提出的多姿态人脸数据集总800 人共4 000张,取其中640 人共3 200 张人脸图像作为训练数据集,其他800张图像作为测试集。
校验数据集包含LFW(Labeled Faces in the Wild)[22]数据集、CFP(Celebrities in Frontal Profile)[23]数据集和Age-DB(Age Database)[24]数据集。其中,LFW 数据集包含5 749人共13 233张人脸图像,姿态表情和光照变化较大,使用其中的6 000对人脸图像作为校验数据集;CFP 数据集包含500 个身份,每个身份有10个正脸,4个侧脸,本实验使用CFP 数据集中的frontalprofile(FP)人脸验证,即CFP-FP(CFP with Frontal-Profile)数据集;AgeDB 数据集包含440 人共12 240 张人脸图像,本次实验使用AgeDB-30,包含300正样本对和300负样本对。
3.3 训练前的设置
3.3.1 预处理设置
为了提高人脸识别方法的鲁棒性,使用图像增强的方法对训练集进行数据扩充,使用的方法为左右翻转和模拟光照变化改变图像明暗度,使得训练集数量直接扩大了6 倍。之后在输入时对输入图像RGB 三通道的像素值进行归一化处理,即对原来RGB 三个通道的像素值都减去127.5 再除以128,使像素值都在(-1,1)区间内。
3.3.2 训练样本设置
相较于Asian-Celeb 数据集,本文提出的多姿态人脸数据集样本数量远少于前者。由于实际应用场景往往与标准数据集的场景不同,需要提高训练时本文数据集所占的比重,所以改进了训练时样本选取的方式。之前样本选取方式完全随机,并且每一轮每个样本仅出现一次,多姿态数据集对整体权重贡献比较小。改进后,通过修改源程序使得每个batch(batch size 为256)都会包含2 个来自多姿态数据集的随机样本。这样大大提升多姿态数据集对整个网络权重的贡献,提高了其所占的比重。
3.3.3 网络参数设置
网络的下训练分2步。首先使用Softmax loss预训练,可以学习到可分的深度人脸特征,然后使用ArcFace loss训练,学习使得类内紧凑、类间分离的人脸特征。
Softmax 训练是使用的学习率为0.1,共训练120 000 步,ArcFace训练初始学习率为0.1,迭代到120000、160000、180000步时学习率每次都除以10,总共训练200000步。全局深度可分离卷积层的权重衰减参数设置为4E-4,其他权重衰减参数设置为4E-5;使用随机梯度下降策略(Stochastic Gradient Descent,SGD)优化模型,动量设置为0.9;batch size设置为256。
3.4 实验结果
第一步采用Softmax loss 训练的训练集精度和验证集精度如图7 所示,网络训练到42 000 步时,训练集精度已经达到81. 5%,LFW 精度为99. 03%,AgeDB-30 精度为88. 45%,CFP-FP 精度为84.84%,此时停止Softmax 训练开始使用ArcFace loss 进行训练。使用ArcFace loss 训练的验证集精度如图8 所示,网络训练到160 000 步时网络已基本收敛,停止训练,此时LFW 精度为99.58%,AgeDB-30 精度为96.08%,CFP-FP精度为88.46%。
图7 使用Softmax loss的训练曲线Fig. 7 Training curve using Softmax loss
图8 使用ArcFace loss的训练曲线Fig. 8 Training curve using ArcFace loss
为了验证本文提出的轻量级网络的有效性,实验并记录了使用其他轻量级网络同样使用上面二步式训练的结果,训练时并未加入本文建立的数据集,仅使用Asian-Celeb 数据集训练,实验结果如表2所示。
表2 ShuffleMNet与其他轻量级网络精度对比 单位:%Tab. 2 Accuracy comparison of ShuffleMNet and other lightweight networks unit:%
3.5 人脸识别
3.5.1 人脸数据库
模型训练好后,使用模型对测试集的800张人脸提取128维人脸特征,将人脸姿态(正脸、左侧脸、右侧脸、低头、抬头)与人脸信息(姓名、性别、年龄)作为标记一起保存到数据库中。
3.5.2 实地测试
重新对测试集中的160 名志愿者进行人脸识别测试。在光照条件良好的场景布置摄像头,再次获取这些志愿者的5种人脸姿态图像做测试。 使用两种不同的方法进行人脸识别,并统计结果。
第一种直接对每个志愿者的5 张人脸图像提取特征后,分别和人脸数据库中的所有特征进行比对,阈值取0.7,余弦相似度大于0.7 且人脸信息(姓名、性别、年龄)相同则表示人脸识别正确。
第二种是根据5 张人脸图像中每张人脸图像的姿态(由1.3 节的方法自动判断人脸姿态,不再是手动获取姿态)选择对应姿态的特征进行比对,即假设当前要对比的正脸图,则只选择人脸数据库中所有正脸图对应的人脸特征进行比对,比对方法同上。
两种方法的实验结果如表3 所示,其中使用多姿态数据集意味着在训练时按照3.3.2 节中的方法加入多姿态数据集。实验结果表明,第二种比对方法进行人脸识别效果更好。
表3 不同方法的准确率对比 单位:%Tab. 3 Accuracy comparison of different methods unit:%
3.6 时间测试
本实验采用的测试平台是虚拟机64 位Ubuntu 18.04系统,处理器是Inter Core i5-8400 CPU @2.80 GHz,内存为2 GB。使用NCNN框架作神经网络前向推导。
测试结果如表4 所示。从表可以看出,ShuffleMNet 比MobileFaceNet 速度要快9 ms,此外,由2.3 节可以知道,人脸跟踪提取了MTCNN第三个网络全连接层的特征,这里仅仅是前向推导时顺便提取出来的,不需要耗费其他时间做这个特征提取,剩下的就是相似度计算匹配,因此本文的人脸跟踪算法几乎不花费额外的时间,记录检测和识别的总时间仅仅是二者相加而已。
表4 不同网络及其组合的时间对比 单位:msTab. 4 Time comparison of different networks and their combinations unit:ms
4 结语
本文建立了一个多姿态人脸数据集,解决了目前单一姿态数据集存在的人脸识别准确率不高的问题。另外,本文提出的网络ShuffleMNet 相较于MobileFaceNet 等其他轻量级网络精度更高,速度更快,可以很好地在移动设备上部署。同时,在数据采集时采集了志愿者的年龄性别,有助于后续的人脸年龄性别识别研究。