APP下载

基于边缘计算中极端姿态和表情的人脸识别

2021-06-30况朝青王均成邹建纹

电子技术应用 2021年6期
关键词:识别率人脸人脸识别

况朝青 ,贺 超 ,王均成 ,邹建纹

(1.重庆邮电大学 通信与信息工程学院,重庆 400065;2.重庆高校市级光通信与网络重点实验室,重庆 400065;3.泛在感知与互联重庆市重点实验室,重庆 400065)

0 引言

近年来,人脸识别受到越来越多的关注,主要是通过神经网络模型来进行人脸识别。但人脸识别依然是一个非常重要但又极具挑战性的问题,主要是现在大部分的人脸识别采用的图像都是静态和质量较高的图片,所以识别效果很好。但在实际应用中,人脸图像受到光照、表情和较大的姿态变化的影响,可能导致识别率急剧下降。因此,采用一种预处理的方式来处理图片,提高图片的质量,成为了当下研究的关键[1]。并且在边缘计算系统中,采用大型网络来进行人脸识别是不现实的,主要是受到处理器的速度和功耗的影响,因此这方面的应用成为了研究的热点。

针对这些问题,文献[2]-[3]主要是通过位置向量的特征来解决人的姿势问题;文献[4]-[5]则试图合成一个正面的人脸;文献[6]提出了采用主成分分析(PCA)的方法,主要是可以将样本数据向一个新的低维空间投影,经过坐标转换后,使用原样本中最大的一个线性无关特征值对应的空间坐标表示,可以一定程度地去除样本噪声;文献[7]用滤波器方法来提高识别率。

本文采用了神经网络的方法来对输入图片的人脸进行预处理,将预处理后生成的图片输入到网络中进行测试。本文采用在SqueezeNet 网络的基础上加入残差网络,并对传统的softmax 进行了修改。SqueezeNet 网络是一个轻量级网络,网络的层数不多,非常适合于边缘计算的识别系统。但如果直接进行人脸识别测试,可能识别率不是很高。因此,本文对图片加了预处理,然后对网络进行了适当改进。并且对网络改进以后,通过计算和测试,并没有增加网络的计算量。最后通过实验表明,该方法提高了识别的准确率。

1 预处理

人脸识别系统中很重要的一步就是人脸图像的预处理过程。本文主要采用神经网络的人脸归一化方法。人脸归一化是在保持人脸身份的前提下,从一张人脸图像中合成一张正态人脸。本文主要是将边缘计算中提取的人脸图片经过MTCNN[8]神经网络来对人脸图片进行裁剪,减少图片上的无用信息,使得提取的人脸的特征值更多。然后将裁剪后的图片通过文献[1]提出的方法进行处理,生成一张新的归一化后的人脸图片,图片的分辨率得到提高。

2 网络架构

FaceNet[9]是一个通用的人脸识别系统,采用的方法是通过卷积神经网络将人脸图像映射到欧几里得空间,检测映射不同点之间的距离进而判断是否是同一个人。因为每个人都可以看成一个类,同一个人的不同人脸之间的距离可被看作类内距离,不同人的人脸图像之间的距离可被看作是类间距离。FaceNet 系统的主要思想可看作尽量缩小类内距离,增大类间距离。本文主要采用FaceNet 网络架构,使用SqueezeNet[10]网络。然后对SqueezeNet 网络进行了适当的改进,加入了残差网络,将损失函数改为了现在识别效果更好的损失函数。FaceNet的网络结构如图1 所示。

图1 FaceNet 网络架构

2.1 网络模型

为了使模型适用于边缘计算系统中,并且能有一个好的识别率,本文对SqueezeNet 网络架构进行了修改,并加入了预处理的过程,整个识别过程如图2 所示。主要是将边缘计算中提取的原始人脸图像输入网络中先通过MTCNN 网络进行裁剪人脸,再进行预处理,最后通过输入本文改进的神经网络结构,识别是否是同一个人。

图2 总的网络结构图

2.2 损失函数

本文采用的损失函数是Arcface[11-12]损失函数。Arcface 是对传统的softmax[13]的改进,传统的损失函数如式(1)所示,改进以后的损失函数如式(2)所示。Arcface 为了使类内对象紧致,类间对象分离,主要是对归一化后输入的x(特征)和归一化后的W(权重)通过叉乘得到一个Arccos 的值,这个值对应的角度为θ;然后m 加上θ后,将新的cos(θ+m)与s(特征缩放)相乘后取log,再经过softmax 输出。Arcface 的实现方式与softmax 比较也没有变得更加复杂,但考虑了角度对分类的影响,通过验证能更好地提高识别率。

2.3 SqueezeNet 与ResNet

SqueezeNet 的核心在于fire 模块,fire 模块由两层构成,分别是squeeze 层+expand 层。squeeze 层是一个1×1卷积核的卷积层;expand 层是1×1 和3×3 卷积核的卷积层,expand 层中,把1×1 和3×3 得到的特征图进行拼接(concat),具体操作如图3 所示。Kernel 是卷积核大小,Num 是卷积核个数;H、W、M 分别是特征的长、宽、维数。

图3 fire 模块

ResNet[14]的架构如图4 所示。通过这种残差网络结构,不仅可以在边缘计算中减少网络结构的计算量,还能提高识别率。残差网络用了高速网络[15]的跨层链接思想,通过捷径连接(shortcut connections)的方式,直接把输入x 传到输出作为初始结果,输出结果为H(x)=F(x)+x,当F(x)=0 时,那么H(x)=x,也就是上面所提到的恒等映射。

图4 残差网络模块

SqueezeNet 网络与加入残差模块后的网络架构如图5 所示。本文主要测试了两种方式的残差模块,第一种是在隔一个的fire 模块中加入残差网络,而第二种是在每一层中都加入残差模块。最后在识别中发现,第一种更好,并且不会增大网络的计算量,因此第一种改进的算法更适合用于边缘计算系统中。整个SqueezeNet 就是使用Fire 基本模块堆积而成的,网络结构如图5 所示,其中左图是标准的SqueezeNet,其开始是一个卷积层conv1,后面是Fire 模块的堆积,中间穿插着stride=2 的最大池化(maxpool)层,其主要作用是下采样,并且采用延迟的策略,尽量使前面层有较大的特征图,最后经过池化(global avgpool)。中图SqueezeNet+simple ResNet 和右图SqueezeNet+complex ResNet 分别引入了不同的短路机制的SqueezeNet,这是借鉴了ResNet 的结构。

图5 基于SqueezeNet 的不同网络架构

3 实验结果与分析

本实验所使用的计算机配置:Intel 的i5 处理器,GTX1660Ti 的GPU,Win10 操作系统。在Anconda+TensorFlow 环境下运行。

3.1 预处理后的结果

首先对本文采用的预处理方法进行验证,图6 显示了在极端姿态、表情和光照条件下该方法处理后的图片与原图的对比图。从上往下依次是姿态、表情、光照、遮挡、正常人脸的测试图;每行图中,两列图像为一组,一共展示了3 组;其中每一组中第一列是原始图像,第二列是处理以后的图像。可以明显看出,将裁剪后的图片进行预处理后,人脸的分辨率得到了提高。

图6 预处理后的图片对比图

3.2 数据集和评价指标

本文主要采用LFW 数据集和IJB-A 数据集进行了测试。LFW 数据集的人脸图像大多数是正面的照片,没有干扰;而IJB-A 数据集是在自然环境下拍摄的,因此受到姿态、光照和表情等的影响。

记输入的测试对为(xi,xj),所有的同一身份测试对为Psame,所有的不同身份测试对为Pdiff,阈值为d,测试对之间的欧氏距离之差为D(xi,xj),那么正确接受次数TA(d)、错误接受次数FA(d)、正确拒绝次数TR(d)以及错误拒绝次数FR(d)分别为:

3.3 实验结果

为了能够将人脸识运用在边缘计算的硬件上(如FPGA),本文主要采用了SqueezeNet 网络来进行人脸识别,主要在IJB-A 数据集和lfw 数据集上进行了测试。在IJB-A和LFW 数据集上测试了原始的SqueezeNet 测试结果和加入了人脸归一化(FNM)预处理后人脸识别的结果,如表1、表2 所示。可以看出,在IJB-A 数据集上对进行了FNM预处理的人脸识别的识别率有明显的提升,由于LFW数据集都是正常的人脸,所以识别率提高不是很多。Rank1 准确度就是某个类别的概率最高,就认为预测结果属于哪种类别;Rank5 准确度选取5 个最大概率的类别,只要这5 个类别中的一个和真实标签相同,该预测结果就为真。

表1 在IJB-A 数据集上的测试结果(%)

表2 在LFW 数据集上的测试结果(%)

对模型进行了改进,将损失函数改为Arcface 损失函数,并且将修改了损失函数的网络记为MySqueezeNet,添加残差网络后的识别率为如表3 所示,主要在IJB-A 数据集上进行测试。通过比较,修改了损失函数的网络比开始的网络SqueezeNet 识别率提高了2%左右。并且对比修改的两种网络,识别率虽然都得到了提高,但是simple+ResNet 的网络模型的大小是保持不变的,因此计算量不会增加,但加入了complex+ResNet 网络以后,明显增加了该网络的计算量。因此,MySqueezeNet+simple ResNet 网络更好。为了说明加入FNM 是有用的,因此在该网络上进行了测试,发现在该网络的基础上加入FNM后识别率也得到了提高。因此,本文增加的修改了损失函数、预处理方法和加入了残差网络模块都是有用的。综合识别率和消耗的资源考虑,加入了simple+ResNet 结构更好。

表3 不同网络模型的识别率

4 结论

在边缘计算中,采用大型的网络会造成识别时间长、功耗高等问题,因此本文采用了SqueezeNet 网络来进行人脸识别。由于直接对网络进行人脸识别,识别率可能不高。因此,本文采用了预处理来对识别的图片先进行处理,发现识别率得到了相应的提高;同时,改进了SqueezeNet网络的损失函数,以及在网络中增加了ResNet 模块,这些处理方式都使得识别率得到了相应的提高,最后通过测试表明了该方法是有效的。本文方法还有很大的提升空间,后续将进一步增强网络的鲁棒性,使得网络可以在当前经典数据集上的识别率更高。

猜你喜欢

识别率人脸人脸识别
人脸识别 等
有特点的人脸
一起学画人脸
揭开人脸识别的神秘面纱
基于类图像处理与向量化的大数据脚本攻击智能检测
人脸识别技术的基本原理与应用
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
三国漫——人脸解锁
提升高速公路MTC二次抓拍车牌识别率方案研究
高速公路机电日常维护中车牌识别率分析系统的应用