1、小 型 微 型 计 算 机 系 统 :年 月 第 期 收稿日期:收修改稿日期:基金项目:并行与分布处理国防科技重点实验室项目()资助 作者简介:武文娟,女,年生,硕士研究生,研究方向为电子系统集成设计;李 勇(通讯作者),男,年生,博士,副研究员,研究方向为电子系统集成设计:一种轻量级人脸识别的卷积神经网络武文娟,李 勇(国防科技大学 计算机学院,长沙):摘 要:随着计算机技术日益发展,计算机视觉逐渐融入人们的生活,深度卷积神经网络在计算机视觉领域得到了广泛的应用 然而计算资源和内存的限制,为卷积神经网络在嵌入式设备的部署带来了巨大的困难 本文提出了一种新的轻量级的人脸识别的卷积神经网络 ,通
2、过在 数据集上进行卷积神经网络的训练,并在计算机 平台以及嵌入式平台上利用 数据集对模型的预测效果分别进行测试,在 平台下识别速度分别是、以及 这 种模型的 倍、倍、倍,在嵌入式平台下识别速度分别 倍、倍、倍 而且 卷积神经网络模型大小仅为 ,保持较高精度的同时运行效率显著提高,可以适用于嵌入式等硬件资源受限领域来实现人脸识别关 键 词:深度学习;卷积神经网络;人脸识别;轻量级模型;嵌入式系统中图分类号:文献标识码:文 章 编 号:():,(,):,:,:;引 言卷积神经网络(,)在计算机视觉领域取得了巨大的成功,显著改善了分类问题的现状,如对象,场景,动作,等 作为最具影响力图像分类的竞赛,
3、进一步推动了深度学习各领域的发展 因 此,接 连 涌 现 了、等竞赛中获得各界冠军和亚军的经典网络 除此以外,由于卷积神经网络可以模仿生物视神经的行为实现较高的精度,因此也被广泛的应用于图像识别领域 人脸识别作为图像识别的一种其主要适用于身份认证,通过区分不同的人脸实例,达到能够识别或验证图像或视频中主体身份的目的 随着人脸识别在嵌入式领域应用越来越广泛,人脸识别算法的部署成为首个需要重点考虑的问题 这是因为神经网络在追求越来越高的精度的同时,其深度也在逐渐增加,网络的结构也越来越复杂,与此同时对于计算和存储提出的要求越来越高 然而在嵌入式端很难部署这样大而深的卷积神经网络,于是设计轻量级的神
4、经网络的成为了一种新的趋势 同时轻量级的人脸识别算法面临着巨大的挑战,牺牲了网络的深度和网络层的大小,客观上来说难以在人脸识别的准确度和速度上实现双高一些 高 效 的 神 经 网 络 被 提 出 来 用 于 视 觉 领 域,如、,等轻量级神经网络 本文提出了一种轻量级神经网络 ,并根据人脸识别算法结合当前新型轻量级的神经网络的优点,设计出一种准确性和复杂性趋于平衡的网络结构 参考 中所提出的残差操作将其用于构建网络主体,并且在设计网络过程中利用倒置残差结构对小通道数特征使用廉价的特征变化升维增加特征多样性,然后利用深度卷积完成特征交互 同时在训练过程利用 损失函数来计算模型预测值和真实值的差异
5、,进一步增强类内的紧凑性以及类间的差异性,从而提高模型的泛化能力 该神经网络模型的大小仅为,同时性能和精度都可以满足嵌入式系统的要求 相关工作近年来一些经典的轻量级神经网络来实现网络的优化加速,其设计的主要思想不同于传统的模型压缩方法,而是采用效率更高的计算方式来减少参数量,相应可以减少参数的计算和存储,以满足嵌入式端对于图像识别速度的要求 系列是 团队提出一种轻量级神经网络,其主要思想是将神经网络中传统的标准卷积替换成深度可分离卷积,后续改进主要是在前期网络的基础上分别引入了倒残差结构以及线性瓶颈层结构,接着利用神经架构搜索()构建更加高效的网络,系列主要采用组卷积和通道洗牌的方式减少参数以
6、及运算量,除此以外,从内存访问代价出发,充分的挖掘 并行性,以减少网络的运行时间,从而提高模型的效率针对人脸识别来说,人脸识别算法的完善和发展主要基于 个方面:)神经网络结构的设计;)损失函数的设计;)使用的人脸识别数据集 等人利用神经结构搜索设计了新的基线网络,并将其放大获得一系列的模型 等人引入了 这一微架构,并设计了一种轻量级的深度神经网络,该神经网络主要用于人脸属性的检测 等人提出了一种非常高效的 模型 ,它可以显著提高运行效率,主要用于人脸验证 等人提出了一种深度球面嵌入式的人脸识别算法,该算法的核心是提出了一种 损失,使卷积神经网络能够学习角度鉴别特征,该损失函数的设计可以看作是对
7、超球面流形施加区别性的约束 等人提出一种加性角边缘损失函数,以获得高分辨特征的人脸识别 等人提出了一种新的损失函数大余弦损耗,通过引入余弦裕度项实现角度空间的决策裕度最大化 等人提出了一种 的人脸图像识别的数据集,有助于消歧和提高识别准确率来解决计算机视觉的分类问题 等人介绍了一种大规模人脸数据级 在人脸识别基准上性能有所提升,同时提高了每个身份图像识别的精度 方 法人脸识别算法的设计是为了获取人脸实例特征,达到能够识别或验证图像或视频中的主体的身份的目的 人脸识别算法在边缘设备上的部署具有广泛的应用场景,这要求算法具备在非 加速环境下也能够具备实时以上的识别帧速因此人脸识别算法采用的神经网络
8、模型是算法执行效率的关键,在本章将会对本文所提出的 轻量级人脸识别网络的设计思路以及方法进行详细介绍 倒置残差网络的设计基于嵌入式设备设计一种轻量级的神经网络本质是追求网络复杂性和准确性的平衡 因此,减少网络的复杂性从根本上来说必然会牺牲一定的准确性,这是轻量级的神经网络生成特征的多样性比较低而导致的 为了进一步在网络中间得到更加多样化的信息,设计网络的过程中参考一些高效的网络结构是非常必要的 本文主要参考 所提出的倒置残差网络用于构建 的主体,通过利用逐点卷积将低维输入特征图扩展到适合非线性激活的高维空间,然后利用深度卷积实现高维张量的空间过滤,最后利用另一个逐点卷积将空间过滤的特征图投影回
9、低维子空间 倒置残差网络可以将深度卷积和残差网络的优点结合起来,深度卷积的出现在一定程度上减少了参数的计算和存储,避免深度卷积导致的特征退化的问题,而倒置残差网络的引入可以使图像的特征可以反复的利用,可以在参数量减少的情况下保留图像原本的特征用于人脸识别 除此以外,随着参数量的减少,算法部署在嵌入式平台上就可以减少内存空间的占用并且减少访问外部存储器的次数,以进一步提升算法的效率为了更好的利用通道之间的关系来增强提取信息特征的能力,本文在该残差网络中引入了注意力机制 在深度卷积和最后一个逐点卷积之间引入 等人在论文中所提到的挤压和激励块(),块可以直接应用于现有的架构执行动态信道特征重新校准来
10、提高网络的表达能力 增大了网络中有效特征的决策权重并忽略其他冗余权重,同时只略微增加了模型的复杂性和计算负担 该倒置残差网络模块的结构如图 所示图 倒置残差结构设计 是深度卷积模块,而 则为挤压和激励模块,是本文提出的一种轻量级的逐点卷积模块,目的是利用更少的参数产生更多特征的图像块 由于 中间特征图输出后很多通道特征图相似度较高,神经网络为减少中间层对于冗余特征的提取,首先从常规卷积得到一部分输入特征之后再利用分组卷积得到其余特征,最终输出特征图将上述两者进行合并 具体的实现分为两步,第 步利用 的卷积核对输入特征图进行卷积、批量标准化以及非线性激活的处理,然后再利用 的卷积核对上一步的输出
11、特征图进行以输出通道数为分组数的分组卷积,最后将第 步和第 步的输出特征进行拼接输出除此以外,本文在该模块中还引入了残差操作,通过添加捷径()增强特征的可重用性,捷径()的设计如图 所示,它可以用来预防训练中特征坍塌情况的产生 神经网络整体架构在本节本文将进一步探讨该网络结构在整体架构中的应用并阐述神经网络整体架构的设计 将以倒置残差网络()作为网络主体,同时为了精简网络结构,在网络整体设计中仅应用 层 层,具体参数配置如表 所示 该参数与图 的结构一一对应,表示 期 武文娟 等:一种轻量级人脸识别的卷积神经网络 层中深度卷积的卷积核大小,为倒置残差结构中第 个逐点卷积进行升维的膨胀因子,表示
12、倒置残差结构输出通道的数量,表示 使用的数量,则为深度卷积中所采用的步长表 层参数配置 卷积运算是提取人脸局部特征值的重要方法,但是卷积运算所带来的参数计算、存储、传输的需求会导致嵌入式系统不堪重负 为了进一步便于该神经网络在嵌入式端以及移动端的部署,除上述 层网络主体应用以外,本文仅在神经网络的输入层以及输出层各设计了一层卷积层,并利用自适应平均池化获得该网络所提取的特征值除此以外,输入特征图的大小与神经网络的参数量和计算量紧密相关,输入特征图的减少也可以促进模型的进一步减重 然而,这可能会导致神经网络无法学习到该类图像的特征,从而学习效果降低,模型的识别精度也随之降低 因此,为了减少输入特
13、征图大小的同时不降低深度学习的效果,本文将输入特征图统一先经过了 人脸检测器进行数据集图像的预处理并实现人脸对齐,然后再将图像剪裁为 大小 这样可以在输入特征图较小的情况下最大程度上保持图像的人脸特征信息 该神经网络的整体架构、输入输出以及参数量如表 所示表 的整体架构 ,表 展现该特征图通道信息以及输入输出的结果 根据前文网络整体架构的设计思路,本文将一张 大小的图片输入 输入层的对该人脸特征图利用 的卷积核进行卷积,并对卷积所得到的数据进行批量标准化()的处理,随后利用激活函数()引入非线性因素,从而提高模型的表达能力 之后依次通过前文设计好的 层 层进一步获取提取特征图中的有效特征信息,
14、最后再次通过卷积、批量标准化、非线性激活以及自适应平均池化层得到人脸特征值本文利用模型可视化工具 得到网络结构以及各网络层的参数 根据表 中各网络层的参数结果可以看出,输入特征的大小为 ,参数总量为,参 数 量 大 小 为 ,且 生 成 模 型 大 小 仅 为 由此可见,本文通过有效的整体网络架构设计使该轻量级神经网络模型的参数远远的少于其他现有模型,当 部署到嵌入式端时,模型的参数可以完全存储在 上并且消除了对于模型加载参数的需要,有利于后续嵌入式系统的开发 实 验在上一节主要确定了 神经网络的基本架构,为实现嵌入式设备的算法部署,在本章将通过模型的训练以及测试实现人脸识别图 实验基本流程
15、实验流程如图 所示,在训练阶段主要基于训练数据集实现 的训练,并利用 损失函数获取人脸特征预测值和真实值的差异,从而指导反向传播过程中参数和权重的更新以逐渐减少损失的大小 在测试阶段主要利用测试数据集来测试神经网络提取人脸特征的能力,并根据不同人脸的相似度得分获得最高分的人脸身份,然后和真实身份进行对比,从而获得测试的精度 实验具体工作以及过程见 节和 节 训练阶段人脸识别的训练阶段的是通过神经网络在数据集中获取人脸的特征,并针对不同人脸实例进行分类以区分出不同人脸的判别特征 训练的最终目的是通过不断的迭代实现模型权重的更新,最终获得具备较强人脸识别能力的神经网络模型 因此在模型的训练阶段,数
16、据集和损失函数的选择都十分重要 数据集是神经网络训练、验证和测试的基础,决定了神经网络模型所识别的人脸特征,而损失函数是将模型的预测值和实际值相比较来评估模型的执行效果 的设计和实现不依赖于对已有网络的剪枝、量化等模型压缩方法,因此需要从头开始训练该网络 针对轻量级的神经网络来说,数据集的选择对于人脸特征的提取至关重要 本文选择了 数据集用于神经网络的训练,该数据集中共有 个不同的个体,其中包括 张面部图像 根据个体的总数对数据集标注标签并展开训练,利用损失函数计算预测值以及标签真实值之间损失的大小,然后利用随机梯度下降的方法多次迭代反向传播中的梯度信息并更新模型的权重,最终减少真实值和预测值之间差异,促进神经网络模型的收敛损失函数在判断网络性能中发挥着重大的作用,人脸识别损失函数中应用最广泛的是 函数,它通过两个全连接层对提取出来的特征随后经过线性变换得到类别分数,再使用 函数计算每个类别 之间的得分后用交叉熵计算损失 损失函数的计算公式如公式()所示 小 型 微 型 计 算 机 系 统 年其中,表示属于 类的第 个样本的深度特征,表示权重 的第 列,表示偏差 表示批量处理的大小,表