APP下载

Emfacenet:一种轻量级人脸识别的卷积神经网络

2023-03-06武文娟

小型微型计算机系统 2023年3期
关键词:人脸识别人脸嵌入式

武文娟,李 勇

(国防科技大学 计算机学院,长沙 410073)

1 引 言

卷积神经网络(Convolutional Neural Networks,CNNs)在计算机视觉领域取得了巨大的成功,显著改善了分类问题的现状,如对象[1-3],场景[4,5],动作[6,7]等.ILSVRC[8]作为最具影响力图像分类的竞赛,进一步推动了深度学习各领域的发展.因此,接连涌现了Lenet[9]、AlexNet[10]、VGG[11]、Googlenet[12]、Resnet[13]等竞赛中获得各界冠军和亚军的经典网络.除此以外,由于卷积神经网络可以模仿生物视神经的行为实现较高的精度,因此也被广泛的应用于图像识别领域.人脸识别作为图像识别的一种其主要适用于身份认证,通过区分不同的人脸实例,达到能够识别或验证图像或视频中主体身份的目的.随着人脸识别在嵌入式领域应用越来越广泛,人脸识别算法的部署成为首个需要重点考虑的问题.这是因为神经网络在追求越来越高的精度的同时,其深度也在逐渐增加,网络的结构也越来越复杂,与此同时对于计算和存储提出的要求越来越高.然而在嵌入式端很难部署这样大而深的卷积神经网络,于是设计轻量级的神经网络的成为了一种新的趋势.同时轻量级的人脸识别算法面临着巨大的挑战,牺牲了网络的深度和网络层的大小,客观上来说难以在人脸识别的准确度和速度上实现双高.

一些高效的神经网络被提出来用于视觉领域,如Squeezenet[14]、Shufflenet[15,16]等轻量级神经网络.本文提出了一种轻量级神经网络——Emfacenet,并根据人脸识别算法结合当前新型轻量级的神经网络的优点,设计出一种准确性和复杂性趋于平衡的网络结构.Emfacenet参考Resnet中所提出的残差操作将其用于构建网络主体,并且在设计网络过程中利用倒置残差结构对小通道数特征使用廉价的特征变化升维增加特征多样性,然后利用深度卷积完成特征交互.同时在训练过程利用Arcface损失函数来计算模型预测值和真实值的差异,进一步增强类内的紧凑性以及类间的差异性,从而提高模型的泛化能力.该神经网络模型的大小仅为138.1KB,同时性能和精度都可以满足嵌入式系统的要求.

2 相关工作

近年来一些经典的轻量级神经网络来实现网络的优化加速,其设计的主要思想不同于传统的模型压缩方法,而是采用效率更高的计算方式来减少参数量,相应可以减少参数的计算和存储,以满足嵌入式端对于图像识别速度的要求.Mobilenet[17-19]系列是Google团队提出一种轻量级神经网络,其主要思想是将神经网络中传统的标准卷积替换成深度可分离卷积,后续改进主要是在前期网络的基础上分别引入了倒残差结构以及线性瓶颈层结构,接着利用神经架构搜索(NAS)构建更加高效的网络.Shufflenet[15,16]系列主要采用组卷积和通道洗牌的方式减少参数以及运算量,除此以外,Shufflenet从内存访问代价出发,充分的挖掘GPU并行性,以减少网络的运行时间,从而提高模型的效率.

针对人脸识别来说,人脸识别算法的完善和发展主要基于3个方面:1)神经网络结构的设计;2)损失函数的设计;3)使用的人脸识别数据集.Tan等人[20]利用神经结构搜索设计了新的基线网络EfficientNets,并将其放大获得一系列的模型.Felea等人[21]引入了Slim-Module这一微架构,并设计了一种轻量级的深度神经网络 Slim-CNN,该神经网络主要用于人脸属性的检测.Chen等人[22]提出了一种非常高效的CNN模型-Mobilefacenets,它可以显著提高运行效率,主要用于人脸验证.Liu等人[23]提出了一种深度球面嵌入式的人脸识别算法,该算法的核心是提出了一种A-Softmax损失,使卷积神经网络能够学习角度鉴别特征,该损失函数的设计可以看作是对超球面流形施加区别性的约束.Deng等人[24]提出一种加性角边缘损失函数,以获得高分辨特征的人脸识别.Wang等人[25]提出了一种新的损失函数—大余弦损耗,通过引入余弦裕度项实现角度空间的决策裕度最大化.Guo等人[26]提出了一种MS-Cele-1M的人脸图像识别的数据集,有助于消歧和提高识别准确率来解决计算机视觉的分类问题.Cao等人[27]介绍了一种大规模人脸数据级VGGFACE2在人脸识别基准上性能有所提升,同时提高了每个身份图像识别的精度.

3 方 法

人脸识别算法的设计是为了获取人脸实例特征,达到能够识别或验证图像或视频中的主体的身份的目的.人脸识别算法在边缘设备上的部署具有广泛的应用场景,这要求算法具备在非GPU加速环境下也能够具备实时以上的识别帧速.因此人脸识别算法采用的神经网络模型是算法执行效率的关键,在本章将会对本文所提出的Emfacenet轻量级人脸识别网络的设计思路以及方法进行详细介绍.

3.1 倒置残差网络的设计

基于嵌入式设备设计一种轻量级的神经网络本质是追求网络复杂性和准确性的平衡.因此,减少网络的复杂性从根本上来说必然会牺牲一定的准确性,这是轻量级的神经网络生成特征的多样性比较低而导致的.为了进一步在网络中间得到更加多样化的信息,设计网络的过程中参考一些高效的网络结构是非常必要的.本文主要参考Mobilenetv2[18]所提出的倒置残差网络用于构建Emfacenet的主体,通过利用逐点卷积将低维输入特征图扩展到适合非线性激活的高维空间,然后利用深度卷积实现高维张量的空间过滤,最后利用另一个逐点卷积将空间过滤的特征图投影回低维子空间.倒置残差网络可以将深度卷积和残差网络的优点结合起来,深度卷积的出现在一定程度上减少了参数的计算和存储,避免深度卷积导致的特征退化的问题,而倒置残差网络的引入可以使图像的特征可以反复的利用,可以在参数量减少的情况下保留图像原本的特征用于人脸识别.除此以外,随着参数量的减少,算法部署在嵌入式平台上就可以减少内存空间的占用并且减少访问外部存储器的次数,以进一步提升算法的效率.

为了更好的利用通道之间的关系来增强提取信息特征的能力,本文在该残差网络中引入了注意力机制.在深度卷积和最后一个逐点卷积之间引入Hu等人[28]在论文中所提到的挤压和激励块(SE),SE块可以直接应用于现有的架构执行动态信道特征重新校准来提高网络的表达能力.增大了网络中有效特征的决策权重并忽略其他冗余权重,同时只略微增加了模型的复杂性和计算负担.该倒置残差网络模块的结构如图1所示.

图1 倒置残差结构设计Fig.1 Inverted residual structure design

DWConv是深度卷积模块,而SELayer则为挤压和激励模块,LWModule是本文提出的一种轻量级的逐点卷积模块,目的是利用更少的参数产生更多特征的图像块.由于CNN中间特征图输出后很多通道特征图相似度较高,神经网络为减少中间层对于冗余特征的提取,LWModule首先从常规卷积得到一部分输入特征之后再利用分组卷积得到其余特征,最终输出特征图将上述两者进行合并.LWModule具体的实现分为两步,第1步利用1×1的卷积核对输入特征图进行卷积、批量标准化以及非线性激活的处理,然后再利用3×3的卷积核对上一步的输出特征图进行以输出通道数为分组数的分组卷积,最后将第1步和第2步的输出特征进行拼接输出.除此以外,本文在该模块中还引入了残差操作,通过添加捷径(shortcut)增强特征的可重用性,捷径(shortcut)的设计如图1所示,它可以用来预防训练中特征坍塌情况的产生.

3.2 神经网络整体架构

在本节本文将进一步探讨该网络结构在整体架构中的应用并阐述神经网络整体架构的设计.Emfacenet将以倒置残差网络(Bottleneck)作为网络主体,同时为了精简网络结构,在网络整体设计中仅应用4层Bottleneck层,具体参数配置如表1所示.该参数与图1的结构一一对应,Kernel_Size表示Bottleneck层中深度卷积的卷积核大小,Exp_Size为倒置残差结构中第1个逐点卷积进行升维的膨胀因子,Out_Chan表示倒置残差结构输出通道的数量,SE表示SELayer使用的数量,S则为深度卷积中所采用的步长.

表1 Bottleneck层参数配置Table 1 Bottleneck layers′ parameter configurations

卷积运算是提取人脸局部特征值的重要方法,但是卷积运算所带来的参数计算、存储、传输的需求会导致嵌入式系统不堪重负.为了进一步便于该神经网络在嵌入式端以及移动端的部署,除上述Bottleneck层网络主体应用以外,本文仅在神经网络的输入层以及输出层各设计了一层卷积层,并利用自适应平均池化获得该网络所提取的特征值.

除此以外,输入特征图的大小与神经网络的参数量和计算量紧密相关,输入特征图的减少也可以促进模型的进一步减重.然而,这可能会导致神经网络无法学习到该类图像的特征,从而学习效果降低,模型的识别精度也随之降低.因此,为了减少输入特征图大小的同时不降低深度学习的效果,本文将输入特征图统一先经过了MTCNN人脸检测器进行数据集图像的预处理并实现人脸对齐,然后再将图像剪裁为56×56大小.这样可以在输入特征图较小的情况下最大程度上保持图像的人脸特征信息.该神经网络的整体架构、输入输出以及参数量如表2所示.

表2 Emfacenet的整体架构Table 2 Overall architecture of Emfacenet

表2展现该特征图通道信息以及输入输出的结果.根据前文网络整体架构的设计思路,本文将一张3×56×56大小的图片输入Emfacenet.输入层的对该人脸特征图利用3×3的卷积核进行卷积,并对卷积所得到的数据进行批量标准化(BN)的处理,随后利用激活函数(ReLU)引入非线性因素,从而提高模型的表达能力.之后依次通过前文设计好的4层Bottleneck层进一步获取提取特征图中的有效特征信息,最后再次通过卷积、批量标准化、非线性激活以及自适应平均池化层得到人脸特征值.

本文利用模型可视化工具TorchSummary得到网络结构以及各网络层的参数.根据表2中各网络层的参数结果可以看出,Emfacenet输入特征的大小为0.04MB,参数总量为19784,参数量大小为0.08MB,且生成模型大小仅为138.1KB.由此可见,本文通过有效的整体网络架构设计使该轻量级神经网络模型的参数远远的少于其他现有模型,当Emfacement部署到嵌入式端时,模型的参数可以完全存储在FPGA上并且消除了对于模型加载参数的需要,有利于后续嵌入式系统的开发.

4 实 验

在上一节主要确定了Emfacenet神经网络的基本架构,为实现嵌入式设备的算法部署,在本章将通过模型的训练以及测试实现人脸识别.

实验流程如图2所示,在训练阶段主要基于训练数据集实现Emfacenet的训练,并利用Arcface损失函数获取人脸特征预测值和真实值的差异,从而指导反向传播过程中参数和权重的更新以逐渐减少损失的大小.在测试阶段主要利用测试数据集来测试神经网络提取人脸特征的能力,并根据不同人脸的相似度得分获得最高分的人脸身份,然后和真实身份进行对比,从而获得测试的精度.实验具体工作以及过程见4.1节和4.2节.

图2 实验基本流程Fig.2 Basic process of experiment

4.1 训练阶段

人脸识别的训练阶段的是通过神经网络在数据集中获取人脸的特征,并针对不同人脸实例进行分类以区分出不同人脸的判别特征.训练的最终目的是通过不断的迭代实现模型权重的更新,最终获得具备较强人脸识别能力的神经网络模型.因此在模型的训练阶段,数据集和损失函数的选择都十分重要.数据集是神经网络训练、验证和测试的基础,决定了神经网络模型所识别的人脸特征,而损失函数是将模型的预测值和实际值相比较来评估模型的执行效果.

Emfacenet的设计和实现不依赖于对已有网络的剪枝、量化等模型压缩方法,因此需要从头开始训练该网络.针对轻量级的神经网络来说,数据集的选择对于人脸特征的提取至关重要.本文选择了CASIA-WebFace数据集用于神经网络的训练,该数据集中共有10575个不同的个体,其中包括494414张面部图像.根据个体的总数对数据集标注标签并展开训练,利用损失函数计算预测值以及标签真实值之间损失的大小,然后利用随机梯度下降的方法多次迭代反向传播中的梯度信息并更新模型的权重,最终减少真实值和预测值之间差异,促进神经网络模型的收敛.

损失函数在判断网络性能中发挥着重大的作用,人脸识别损失函数中应用最广泛的是Softmax函数,它通过两个全连接层对提取出来的特征随后经过线性变换得到类别分数,再使用Softmax函数计算每个类别0-1之间的得分后用交叉熵计算损失.Softmax损失函数的计算公式如公式(1)所示.其中,fi表示属于ni类的第i个样本的深度特征,Wj表示权重W的第j列,bj表示偏差.N表示批量处理的大小,M表示分类的数量.

(1)

但是这种常见的训练方式没有对提取特征提供太大约束,这将会导致训练特征在分类的超平面上离散分布.同时往往容易忽略类间的距离,无法获得较强的泛化能力.为了解决这一问题,涌现了一批以Softmax函数为基础的改进方法,其中Arcface损失函数应用较为广泛,其计算方法如公式(2)所示.其中,λ为缩放因子,α为权重Wj与特征fi之间的夹角,模型的预测主要依赖该夹角.r是附加的角边缘惩罚,可以增加类内紧凑型以及类间的差异性.与其他的几种损失函数相比,显著的提高了图像识别、图像分类任务中的模型预测的准确率.本文所设计的Emfacenet同样利用了Arcface损失函数对模型进行训练,旨在获得更佳的人脸特征提取能力.

(2)

神经网络模型的训练主要基于Pytorch深度学习框架,实验环境包括Intel(R)Core(TM)i7-10700F CPU @ 2.90GH以及GeForce RTX3070显卡(显存为8G),输入图像的大小为3×56×56.由于轻量级模型牺牲了一定的网络深度和网络层的大小,因此为提高模型预测的准确性需要依靠规模较大的数据集以及较多的训练测试.本文将训练条件中epoch设置为300轮,batchsize设置为512,除此以外利用多阶学习率衰减的方法设计每一轮的学习率,然后根据300轮的训练结果计算训练精度,最终保存合适的模型进入测试阶段.

由于测试阶段需要完成Emfacenet模型与Resnet50、Mobilenetv3、Mobilefacenets 3种神经网络模型的对比,还需要在测试阶段根据Emfacenet神经网络的特点对其他3种网络的部分结构进行重新调整,从而保证输入特征图像的大小以及输出特征值维度保持不变.并且需要根据训练条件使其他3种神经网络和Emfacenet的超参数设置保持一致,确保同等条件下实现模型的训练.

4.2 测试阶段

测试阶段的主要工作是完成对生成模型的测试,并利用非训练所用的数据集测试模型的预测结果,从而判断模型的预测能力以及泛化能力.在这个过程中,首先得到原型数据集(Gallery)的人脸特征,之后输入一张测试图像作为探针(Probe),通过神经网络提取该探针的人脸特征值,并且利用点乘的方法将探针人脸和原型数据集中的人脸进行对比,相似度得分最高的则判断两张人脸为同一身份.在测试阶段,主要采用LFW数据集测试模型的预测精度.LFW人脸数据集是用于人脸识别的常用测试集.LFW数据集共有5749个人的13233张人脸图片,该人脸图片均来自与生活中的自然场景.除此以外,在同一条件下将训练所得到Emfacenet模型和先前的研究成果Resnet50、Mobilenetv3、Mobilefacenets,并对比这4种模型预测准确性以及识别速度.

测试阶段分别在计算机CPU平台下以及嵌入式设备的CPU软核的条件下完成测试,CPU平台为Intel(R)Core(TM)i7-10700F CPU @ 2.90GH,通过在无GPU参与时仅使用CPU来完成前向推理,而嵌入式平台主要依靠DIGILENT Genesys 2 Kintex-7 FPGA开发板搭载RISC-V SoC,该开发板如图3所示.该FPGA芯片逻辑资源和存储资源较为丰富,具有50950个逻辑单元以及接近16Mbit的快速随机存储器.与此同时,它内部时钟速度可以超过450MHz,具备1800Mbps数据速率和32位数据宽度的DDR3,同时还具备诸多端口和外围设备.该FPGA开发板是一种高性能、即用型的开发板,且可以用于数据视频处理.利用Vivado设计套件设计了RISC-V SoC并且移植了Debian Linux(RISC-V 64位)操作系统作为该轻量级人脸识别算法部署的嵌入式平台,该RISC-V SoC主要基于64位4核的Rocket内核,由于嵌入式平台的CPU为软核,相比硬核牺牲了一定的性能和功耗,但是其灵活性、可移植性较强,便于面向算法落地的软硬件协同设计.除此以外,由于嵌入式系统基于RISC-V 内核,需要依靠交叉编译的工具链实现人脸识别算法的部署.但是由于RISC-V 工具链仍然在不断更新和完善的阶段,无法实现Python代码的交叉编译.因此部署到FPGA开发板还需要利用OpenCV开源库实现Python到C++代码的转换,然后将编译好的动态库以及应用程序的二进制代码移植到开发板完成代码的运行.

图3 DIGILENT Genesys 2 Kintex-7 FPGA开发板Fig.3 Digilent Genesys 2 Kintex-7 FPGA development board

表3展示了在CPU下不同模型的比较结果,从实验结果可以看出,本文所提出的轻量级神经网络模型Emfacenet的模型大小仅为0.13MB(实际大小为138.1KB),远远小于其他3种神经网络的模型大小.作为一种轻量级的神经网络,虽然牺牲了部分测试精度,但是单张照片的识别速度达到了46.97ms,识别速度分别是Resnet50、Mobilenetv3和Mobilefacenets的2.07倍、1.67倍、1.63倍,因此可以在计算机的CPU平台下满足人脸识别的实时性和准确性要求.

表3 在CPU下不同模型实验结果的对比Table 3 Comparison of experimental results of different models under CPU

然后,在基于嵌入式平台CPU软核的条件下进行对比实验.由于在RISC-V SoC嵌入式平台下模型大小不发生变化,且测试的精度不发生改变,实验主要考虑对比在该RISC-V SoC平台下不同人脸识别神经网络单张图片的识别速度,实验结果如表4所示.

表4 嵌入式平台上不同模型实验结果的对比Table 4 Comparison of experimental results of different models on embedded platform

由上述实验结果可以看出,当Emfacenet部署到基于RISC-V SoC的嵌入式平台时,其识别速度远远高于其他3种神经网络模型,分别是Resnet50、Mobilenetv3和Mobilefacenets的56.65倍、2.09倍、3.41倍.由此可见,Emfacenet神经网络模型对所部署平台的存储资源和计算资源的要求比较低,特别是针对嵌入式设备等资源受限平台的部署表现非常突出.

5 结 论

本文提出了一种轻量级人脸识别的卷积神经网络——Emfacenet,旨在通过所设计的轻量级神经网络来解决硬件资源受限的平台算法部署困难的问题,从而实现神经网络模型运行效率的提高,便于神经网络在未来能够更为广泛的部署到嵌入式、移动端以及边缘设备上.除此以外,本文在计算机端以及嵌入式端两类平台完成了模型的部署,并与在深度学习领域表现优秀的研究成果进行对比,可以看出Emfacenet模型预测精度牺牲不大,模型复杂度可以大幅度减少,Emfacenet在基于RISC-V SoC的嵌入式平台表现突出.除此以外,本研究仍有一些不足,由于嵌入式平台主要基于FPGA来实现,势必会受到FPGA设计的局限性的影响,由于Genesys 2 Kintex-7系列FPGA芯片资源的限制,本文将Rocket内核配置为4核,该软核通过Vivado时序分析报告可以看出其时钟主频能够达到100MHz,远远小于其他基于ARM硬核的嵌入式平台所能达到的时钟主频.然而RISC-V内核因其开源的特性为人脸识别算法的研究和部署提供了一种新的方案,深度学习算法的软硬件协同势必会成为未来研究的重要方向.

猜你喜欢

人脸识别人脸嵌入式
人脸识别 等
有特点的人脸
揭开人脸识别的神秘面纱
三国漫——人脸解锁
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
基于类独立核稀疏表示的鲁棒人脸识别
马面部与人脸相似度惊人
长得象人脸的十种动物
Altera加入嵌入式视觉联盟