生成式方法在戴面罩热红外人脸识别中的研究
2023-07-29郭诗嘉张天序
郭诗嘉,郭 婷,张天序
(1. 武汉工程大学电气信息学院,湖北 武汉 430205;2. 华中科技大学图像识别与人工智能研究所,湖北 武汉 430070)
1 引言
可见光的人脸识别技术已经广泛应用于各个领域。但可见光的人脸识别技术无法在无外界光源的情况下进行工作,也无法对面部有遮挡物的人脸进行识别。当用面罩等遮蔽脸部时,基于反射的可见光相机无法探知被遮蔽的信息。COVID-19是一场前所未有的危机,为了减少冠状病毒的传播,人们经常戴口罩保护自己。戴上口罩后,面部的某些部分被隐藏,这使得可见光人脸识别成为非常困难的任务。
2020年,Badji Mokhtar等人通过丢弃可见光图像被遮蔽区域和深度学习的方法,来解决戴口罩人脸识别过程中的问题[1]。2020年,Wang,Zhongyuan等人建立了目前世界上最大的真实可见光蒙面人数据集(largest real-world masked face dataset),并且可以达到95%的精度[2]。
热红外图像是热辐射成像,它是根据物体的红外辐射差异成像,红外热成像仪能够把物体表面自然发射的红外辐射分布转变为可见图像[3]。当有面罩遮蔽脸部时,面部的热会以不可抵挡的趋势,通过热传导和热辐射的方式被热红外相机获取,这一技术可以弥补可见光相机完全丢失被遮挡部分特征的不足。
目前世界上还没有公开发表过利用热红外技术针对面罩遮挡问题的解决方法。本文利用自主建立的HUST-MIR Mask Face Database,其中包括86名志愿者佩戴面罩和未佩戴面罩的数据,约27万张。本文通过神经网络的方法,首先实现面罩的检测任务,之后实现去除面罩的技术,最后对去除面罩的图像进行识别。
图1 戴面罩的可见光和红外图像对比图
2 戴面罩热红外人脸识别算法流程
本文热红外人脸识别的算法流程:采集戴面罩的热红外人脸图像,建立了自己的戴面罩的红外图像人脸数据库。本数据库采集了86名志愿者的戴面罩和未戴面罩的热红外人脸数据,总计27万张。之后将图像做灰度归一化处理。本文的算法均在该人脸数据库上测试。
训练部分:①)对于灰度归一化后的戴面罩和未戴面罩的热红外人脸图像,手动标记出图像中人脸的位置,送入卷积神经网络,进行迭代多次训练。生成面罩检测神经网络CNN1。②将未戴面罩的热红外人脸图像和戴面罩的图像一起送入生成对抗网络学习,迭代训练出去除面罩网络CNN2。③将去除面罩后的热红外人脸图像和未戴面罩的图像送入卷积神经网络CNN3训练特征提取器和分类器。
测试部分:①利用训练好的面罩检测网络CNN1进行验证,检测出是否戴面罩。②利用训练好的去面罩网络CNN2,去除戴面罩样本的面罩。③利用网络CNN3训练的特征提取器和分类器,对验证集中去面罩后的图像和未戴面罩的人脸图像进行识别。
3 热红外人脸的面罩检测算法
3.1 数据集的处理
本文利用14位数据的中波红外热像仪,建立了华中科技大学中波面罩热红外数据库(HUST-MIR Mask Face Database)。HUST-MIR Mask Face Database包含86名志愿者的热红外人脸数据,每位志愿者均包含戴面罩的数据和未佩戴面罩的数据,共计27万张。
对热红外图像Img进行标准化处理,取最大灰度值为MAX,最小灰度值为MIN,对图像上所有像素进行如式⑴变换得到灰度归一化的图像Img。
(1)
在标记戴口罩和未戴面罩的人脸框时,选取眉毛为最上方,下巴处为最下方。标记25000张戴面罩的人脸图像和25000张未戴面罩的人脸图像。
3.2 训练面罩检测的神经网络
Yolov3是一种用于目标检测的算法[4],其可以用于各种大小且不同形状的目标进行检测,直接将其用于热红外面罩检测中,其速度较慢,且误检框较多。人脸框近似为一个正方形,且其在数据集中的大小范围可以预知。本文采用修改Yolov3网络的锚点框(anchor box)可以达到检测准确和速度快的效果。Yolov3修改前拥有三个规模的anchor box,大规模的anchor box为(116,90),(156,198),(373,326)。中规模的适合一般大小的物体,anchor box为(30,61),(62,45),(59,119)。小规模的感受野最小,适合检测小目标,anchor box为(10,13),(16,30),(33,23)。本文的Fast Anchor的算法通过设计两个规模的anchor box,大规模的anchor box为(379,387),(251,292),(142,189),小规模的anchor box为(190,193),(110,116),(54,45)。两种规模的框如图2所示。
图2 两种规模的anchor boxes
标记S1张戴面罩和S1张未戴面罩的图像作为训练集,输入面罩检测网络中进行训练。本文次数(epoch)设置为200,批(batch)设置为8,输入图像设置为416*416,动量(moment)设置为0.9,衰减(decay)设置为0.0005,学习率(Ir)设置为0.001,色彩饱和度(saturation)设置为1.5,曝光度(exposure)设置为1.5,色调变化范围(hue)设置为.1[8],训练时间为83个小时。
3.3 测试面罩检测的神经网络
本文采用mAP作为热红外面罩检测的评价指标,采用Fps作为检测速率的评价指标,文中的检测网络在测试集上mAP为96.5%,Fps为38。检测未戴面罩如图3(a),检测戴面罩如图3(b)。
图3 面罩检测结果图
4 热红外人脸的面罩检测算法
4.1 训练去除面罩的神经网络
当人脸佩戴面罩后,被面罩遮挡的部分的热依旧可以以热的形式透出,被红外热像仪捕捉。本文的思想是通过神经网络寻找有无戴面罩人脸之间的映射关系,之后通过映射关系,恢复被面罩遮挡的区域。Cyclegan[5]是一种图像迁移的算法,它可以将一类图片转化为另一类图片。但是与其它的Gan网络不同的点是,Cyclegan不需要配对的训练图像。
本文选取0-59号志愿者为训练集,60-85号志愿者为测试集。训练集分为real_A和real_B两个部分,设置real_A为戴面罩的人脸图像,如图4(a)所示。real_B为不戴面罩的人脸图像,如图4(b)所示。训练集中real_A和real_B各50000张。
图4 训练数据中的real_A和real_B的示意图
Cyclegan中拥有两个Gan网络,每一个Gan网络都有一个生成器和一个判别器。与传统的单向Gan网络不同的在于,它将两个镜像的Gan网络形成了一个环形网络,两个Gan网络相互对抗,共享信息,共同学习。Gan网络中的生成器(Generator)采用一个Resblock组成的网络,降采样部分用stride卷积,增采样部分采用反卷积。判别器(Discriminator)采用的是Pix2Pix[6]中的PatchGANs结构,大小为70×70。
训练时的损失函数分为三个部分如式(2),第一部分为real_A到real_B的生成器用G表示和判别器用Dx表示。第二部分为real_B到real_A的生成器用F表示和判别器用Dy。第三部分为对抗损失,λ为加权因子,用于控制循环一致性损失在全部损失中的权重。
Lossfull=LossGan(G,Dx)+LossGan(F,DY)+λLosscycle
(2)
本文次数(epoch)设置为200。批(batch)设置为6。输入图像设置为256*256。学习率(Lr)设置为0.0002。优化器(Adam)中的b1设置为0.5,b2设置为0.999,循环损失系数(lambda_cycle)设置为10.0,自身损失系数(lambda_id)设置为5.0。
4.2 测试去除面罩的神经网络
利用训练后的real_A转换real_B的模型,输入60~85号人戴面罩的人脸数据,输出生成的去除面罩的fake_B的数据。如图5(c)是1号人的神经网络生成的fake_B结果图。(f)是2号人的神经网络生成的fake_B结果图。
图5 训练后real_A转换real_B的模型结果图
5 去面罩后的热红外人脸识别算法
5.1 去面罩后的热红外人脸识别算法分析
利用去除面罩网络后,real_B和生成的fake_B依旧有差距,生成的去面罩的图像必定不能达到完美的去除效果,如果用传统的识别方法将real_B和fake_B之间作为同一类,实验表明损失不能收敛,且识别率仅为14.7%,因此需要设计一种可以解决去面罩效果不理想的人脸识别的损失函数。
5.2 训练去面罩后的热红外人脸识别
针对使用传统的识别方法不可行,本文提出了一种九宫格损失函数。包含三种损失函数和九种样本。三个损失函数如图6所示。
图6 三种损失函数示意图
(3)
(4)
(5)
Loss1中i表示第i张图像,N表示有N组样本,real_B表示未戴面罩的图像,real_B_others表示未戴面罩的不同张图像,others表示不同人的图像。Loss1用于拉近real_B同类之间的欧式距离,拉大与不同类的距离。
Loss2中real_B表示未戴面罩的图像,fake_B表示生成的未戴面罩图像,others表示不同人的图像。Loss2用于拉近real_B和fake_B之间的欧式距离,拉大与不同类的距离。
Loss3中fake_B表示生成的未戴面罩图像,fake_B_others表示生成的未戴面罩不同张图像,others表示不同人的图像。Loss3用于拉近fake_B同类之间的欧式距离,拉大与不同类的距离。
上述三个损失函数可以达到聚合生成的图像和真实图像,且可以实现生成的图像和真实图像本身的聚合,实现训练时损失的收敛。
5.3 测试去面罩后的热红外人脸识别算法
本文采用TAR(正确接受率)、FAR(错误接受率)和Accuracy(识别率)作为评价指标,检验模型的性能。假定目前有totalTrue组同人对{同人的两张不同热红外人脸图像}与组不同人对{不同人的两张热红外人脸图像},TAR与FAR定义如下
(6)
(7)
(8)
式中,totalTrueAccept为有多少同人对被模型判定为属于相同人的数量;totalFalseAccept为有多少不同人对被模型判定为属于相同人的数量;totalFalseRe ject为由多少不同人对被模型判定为属于不同人的数量。选取不同的最大相似距离,便会有不同的TAR、FAR,并绘制ROC曲线进行分析。所用数据集共包含20000组同人对,20000组不同人对。
ROC曲线下方面积越接近1,则说明本方法的特征提取器越好。由图7(a)可知,本特征提取器在现有数据集上有效,其ROC的面积AUC为0.512。图7(b)为取不同最大相似距离时的识别率曲线,当最大相似距离取18时,识别率为89.68%。本文也进行了不去面罩,直接进行识别的实验,如图8所示,当最大相似距离取18时最大,识别率为80.91%。由此可见,采用去掉面罩后再进行识别的算法可以对识别率有较大的提高。
图7 去面罩后的热红外人脸识别算法结果图
图8 不去面罩直接测试,取不同最大相似距离时的识别率曲线
6 结论
目前,可见光无法解决面部有遮挡的问题。同时COVID-19的大流行,导致人们需要长期佩戴口罩,所以目前需要面部遮挡情况下的人脸识别解决方法。但是可见光的解决方案抛弃了被遮挡部分的信息,这必然导致无法在较大的数据集中得到有效的应用。本文采用了热红外技术的解决方法,通过热红外可以捕捉面罩抵挡不了热传递、热辐射这一原理,并开展了一系列的工作。
目前没有公开的戴面罩的热红外人脸数据集,所以本文通过自主采集86名志愿者的人脸数据,完成算法的研究。本文首先通过训练面罩检测的网络,之后通过训练生成式去除面罩的网络,最后对去除面罩后的人脸和未戴面罩的人脸进行训练,完成人脸识别,识别率为89.68%。
因为目前自主构建的数据较少,所以目前识别率较低且ROC曲线不理想,模型有待完善。本文今后会通过扩充数据集和继续研究生成式算法,进一步完善热红外技术的解决方案。