基于CNN的轻量级表情识别

基于卷积神经网络和边缘计算的面部表情识别

摘要

随着边缘设备在日常生活中扮演着越来越重要的角色,边缘计算和人机交互,特别是面部表情识别,已成为学术界和工业界的研究重点。然而令人惊讶的是,利用边缘计算和神经网络进行面部表情识别多年来一直被忽视,相关研究极为稀少。本文聚焦于这一课题,基于残差学习思想改进视觉几何组19模型。具体而言,对于视觉几何组19的每个模块,我们将输入直接加到输出上,相加结果作为下一个模块的输入。随后,我们通过剪枝和训练后量化方法缩小模型尺寸,以在边缘设备上部署时实现更高效率,同时保持模型准确率。实验结果表明,我们的模型在CK+数据集上的准确率达到98.99%。此外,在边缘设备上部署时,其推理时间低于许多专为边缘设备设计的主流神经网络。

关键词 —面部表情识别,视觉几何组,剪枝,训练后量化,边缘计算

一、引言

情感识别可用于多种场景,例如商业监控[1]、未来犯罪行为检测[2]、和特殊教育情境[3],[4]。自从神经网络架构出现以来,基于深度学习的面部表情识别(FER)模型的发展极大地推动了人类情感的检测与分类。卷积神经网络(CNNs)能够提取特征并帮助分析面部情绪。一些基于卷积神经网络的深度学习模型,如视觉几何组(VGG)[5]和高效网络[6],在该领域已取得了显著成果。近年来,随着移动设备计算能力的逐步提升,人们开始关注可部署在边缘设备上的轻量级FER模型,这类模型在许多应用场景中发挥着重要作用。

尽管面部表情识别在理论研究上已取得巨大成功,但在边缘设备上的面部表情识别模型部署和推理尚不成熟。由于边缘设备的计算能力相对较低,大规模复杂结构的深度学习网络在这些设备上的推理时间通常不理想。如今,边缘设备通常具有小型化、散热差和低功耗的特点。预训练云端模型部署到边缘设备后,其前向传播仍然消耗较多的计算资源,超出了边缘设备的承受范围。因此,有必要简化深度网络的结构,以平衡准确率和性能。

本文提出了一种新型卷积神经网络架构的设计与实现,并成功将其部署在边缘设备上。与以往的研究不同,本文在用于时间敏感型应用场景的模型实现方面具有先进性,并深入探索了面部表情识别与边缘计算的结合。

本工作的贡献如下:
1)通过适当添加残差模块来改进VGG‐19,而不是盲目增加其深度和复杂性,以避免因模型复杂性带来的困难。
2)对我们的模型应用剪枝和训练后量化,在减小模型大小的同时保持其准确性。
3)将量化后的模型部署在边缘设备上,包括具有普通功耗的智能手机(Kirin 980)和具有低功耗的ARM设备(Raspberry Pi 4B),以分析我们模型的实际准确性和效率。

本文其余部分组织如下:第二节回顾相关工作,第三节描述我们模型的设计与实现,第四节展示实验的详细信息和结果,第五节总结并展望本文的未来工作。

II. 相关工作

迄今为止提出的相关工作可分为三大类:面部表情识别(FER)、模型尺寸最小化以及在边缘设备上的FER探索。

A. 面部表情识别-面部表情识别

面部表情识别的研究有着悠久的历史。早在20世纪70年代,埃克曼和弗里森[7]通过跨文化研究定义了六种基本情绪,进行了开创性的工作,表明面部表情是一种世界语,不受国界、种族或性别的限制[8]。此外,这六种基本情绪包括愤怒、厌恶、恐惧、快乐、悲伤和惊讶。到了20世纪90年代,轻蔑被加入到这些表情中[9]。这七种情绪至今已成为面部表情识别中最主流的研究视角。

大多数传统方法采用手工设计特征或浅层学习(例如局部二值模式(LBP)[10],三个正交平面上的局部二值模式(LBP‐TOP)[11],非负矩阵分解(NMF)[12]和稀疏学习[13])来进行面部表情识别任务[14]。2013年,面部表情识别竞赛(FER)2013[15],从具有挑战性的真实世界场景中收集了相对充足的训练数据,这隐式推动了面部表情识别从实验室受控环境向野外环境的转变。同时,随着神经网络结构的出现以及计算机计算能力的快速发展,许多精心设计的网络架构在许多计算机视觉领域取得了出色的性能(例如[16‐19])。

此外,面部表情识别(FER)作为计算机视觉的一个重要子领域,近年来也迎来了新的发展机遇。卷积神经网络(CNN)能够提取图像的局部特征,并显著提升模型的性能。因此,大量基于CNN的模型已被应用于面部表情识别任务中。例如,Tang等人结合CNN和线性支持向量机(SVM)以提升面部表情分类任务的性能[20];卡胡等人尝试在面部表情识别任务中结合深度CNN、深度置信网络(DBN)和深度自编码器(DAE)[21];范等人提出了一种混合网络,该网络以晚期融合方式结合循环神经网络(RNN)和三维卷积网络(C3D)[22];西蒙扬等人提出了VGG16和VGG19模型,证明了具有相对小滤波器尺寸的更深的卷积神经网络结构的优异性能[5]。

B. 模型尺寸最小化

随着深度学习的发展,神经网络被广泛应用于各个领域。模型性能的提升也带来了大量参数和计算[23]。模型量化是一种将浮点计算转换为低位定点计算的技术[24]。它可以有效降低模型的计算强度、参数大小和内存消耗,但通常会带来巨大的精度损失。尤其是在极低位(< 4 bit)[25],甚至梯度量化的情况下,精度挑战更为严峻[26]。

模型量化的最初定义是压缩模型参数。例如,韩松[24]首次提出了参数量化方法。他们的方法是使用K均值聚类将相似的值聚类到同一个聚类中心,并复用相同的值,从而用较少的值表示更多的数值。这是一种量化操作方案。另一方面,将量化后的数值恢复为原始数值的过程称为反向量化[24]。完成反向量化操作后,模型即可进行正常的计算。我们认为大多数模型量化算法都能够压缩参数,因此在压缩参数的实用性方面不应存在问题。

C. 边缘设备上的面部表情识别

在边缘设备上进行面部表情识别的研究仍然相对较少。在赫尼和哈马姆[27],的工作之前,边缘设备上面部表情识别的作用在很大程度上是未知的。受自智能手机出现以来人们日常生活从使用台式机转向使用手机同时保持交互性的显著变化所启发,他们的研究旨在通过智能手机用户的面部识别来检测情绪,以合成其在游戏过程中的行为。然而,他们的工作仅限于微笑检测。

与赫尼和哈马姆的研究相比,钱等人[28]提出了一种在边缘设备上更成熟的面部表情识别实现方案。他们将神经网络模型部署在云端服务器上,由服务器承担主要计算任务。边缘设备仅负责将采集到的数据上传至云端服务器,并等待接收服务器返回的推理结果。该方案的优点在于降低了边缘设备的能耗,同时面部表情识别具有较高的准确率。具体而言,整个系统的能耗降低了30%‐40%,且模型在300‐w数据集上的准确率达到62%[28]。但该方案存在的问题是,由于网络数据传输延迟,实时识别的每秒帧数(fps)相对较低,且无法应用于离线场景。

III. 方法论

在本节中,我们将介绍所采用的方法,该方法用于简化神经网络结构并减小模型大小,同时保持相对理想的性能。我们首先在改进的VGG19神经网络上添加了残差结构,该网络通过移除两个冗余的全连接层进行了简化和剪枝。随后,我们使用TFLite接口对我们的模型进行压缩,并将其部署到移动设备上。

A. 基于VGG的残差连接结构

我们的神经网络模型结构主要基于VGG19。VGG19包含19个权重层,其中16个为卷积层,分为5个CNN模块,另外3个为在5个CNN模块之后的全连接(FC)层。此外,考虑到VGG系列模型中全连接层使用的参数数量巨大,Qin等人[29]通过实验表明,在去除两个全连接层的情况下,VGG模型的性能水平没有明显下降。因此,在我们的模型中,为了在降低模型大小的同时保持相对可靠的性能,我们采用了“无全连接层的VGG19”结构。

此外,我们提出了一种新颖的模块结构,如图1所示,其中采用了残差结构,将四个CNN层后的输出与输入数据相加,再经过一个批归一化层,最后使用一个最大池化层:

$$
F(x) = \text{BN}(Conv_4(…Conv_1(x)))
$$
$$
y = \text{MaxPool}(x ⊕ F(x))
$$

其中“⊕”表示元素相加操作,$x$是第n个块结构的输入,$F(x)$是经过四个卷积层后的中间结果,$x ⊕ F(x)$是合并特征,且$y$为块输出。

通过采用这种内部块结构,我们在捕获更精细特征的同时保留了原始输入信息,且未引入额外参数。

示意图0

B. 权重剪枝

尽管深度卷积神经网络在准确率方面表现出色,但其模型大小较大,不利于在计算能力较低的边缘设备上进行推理。因此,减小模型大小和有效参数数量非常重要。权重剪枝能够有效减小模型大小。通过消除权重张量中的冗余值,减少神经网络层之间的连接以及参与计算的参数,从而降低运算次数。当权重张量变得稀疏时,可以大幅减少网络的存储空间。需要注意的是,权重剪枝的重点是将张量中不必要的权重设为零,而不是简单地删除它们。因此,在模型未压缩时,总参数数量不会明显变化。然而,由于权重张量中存在大量零值,压缩后的模型会显著变小。

在我们的模型中,我们使用TensorFlow模型优化包对模型进行剪枝。剪枝通过指定最终目标的稀疏度和剪枝训练轮数来执行。在此过程中,它会消除权重张量中最接近零的权重,直到达到当前稀疏度目标。每次剪枝程序被调度执行时,都会重新计算当前稀疏度目标;该过程重复进行,直到整个模型的稀疏度达到设定目标。这可以有效减小模型大小,从压缩模型的大小中可以看出。此外,权重剪枝与模型量化兼容,从而产生复合效益。

C. 在基于边缘的设备上的部署

为了在基于边缘的移动设备上部署我们的模型,我们采用了TensorFlow Lite (TFLite)框架对其进行压缩。TensorFlow Lite是一种用于设备端推理的开源深度学习框架,其转换器接口提供了一种称为训练后量化的转换技术。该模块有助于减小模型大小,同时改善中央处理器和硬件加速器延迟,且对模型准确率的影响较小。

更具体地说,TensorFlow Lite接口提供了三种主要的量化方法,包括动态范围量化、全整数量化和float16量化。

在我们的模型中,我们采用了动态范围量化,其主要思想是将模型权重和参数从浮点数据类型转换为8位整数,并将量化后的小型模型存储在移动设备上。量化公式为:

$$
QValue = round(RValue / S + ZValue)
$$

而反量化公式为:

$$
RValue = S × (QValue − ZValue)
$$

其中,RValue 是原始浮点权重,QValue 是量化值,ZValue 是浮点数0的量化值,S是量化最小缩放系数。

示意图1

这种数据类型转换可以减少约75%的模型大小。在推理步骤中,我们的基于边缘的应用将对压缩模型进行反量化,并利用重新计算的浮点权重和激活值完成前向传播过程,如图2所示,这并不能显著减少推理时间,但可以保证相对可靠的性能,适用于所有范围的输入图像数据。

IV. 实验与结果

A. 数据集

1) FER2013 : FER2013数据库是一个大规模、非受限的数据库,通过谷歌图像搜索API自动收集,首次出现在ICML 2013表示学习挑战赛期间。该数据库极具挑战性,人类对人脸进行7种不同情绪分类的准确率仅为65% ± 5%[15]。图3展示了来自FER2013的一些图片:同一列中的图片属于同一种表情类型,类别名称位于顶部。数据由48x48像素灰度图像组成的人脸图像构成。人脸已通过自动配准,使得人脸大致居中,并在每张图像中占据大致相同的空间。任务是根据面部表情所表现出的情绪,将每张人脸分为七个类别之一(0=愤怒、1=厌恶、2=恐惧、3=开心、4=悲伤、5=惊讶、6=中性)[30]。

示意图2

2) CK+ :CK+数据库是CK数据库的扩展,是一个针对动作单元和情感特定表情的完整数据库。参与者年龄在18至50岁之间,其中女性占69%,欧裔美国人占81%,非裔美国人占13%,其他群体占6%。该数据库在实验室条件下采集,具有很高的严谨性和可靠性。CK+是面部表情识别领域中一个相对标准的数据库,许多研究人员已使用该数据库进行测试。它包含327段标注的面部视频。我们从CK+数据库的每个序列中提取了最后三帧,共包含981种面部表情。此外,在实验[31]中我们采用了10折交叉验证。

B. 实验研究

为了验证我们模型的性能,我们将结果与在CK+和FER2013数据集上的其他七种轻量级模型进行了比较,包括resnet 50精简版、MobileNet v2和EfficientNet 轻量版0‐4。基线模型结构由TFLite模型生成器库提供,其中resnet50 lite基于ResNet50神经网络[19],采用残差块和50层卷积网络,以证明更深神经网络的可行性;MobileNet v2结合了深度可分离卷积结构和倒置残差块,包含24层卷积网络,实现了在相对小型化模型下的可靠结果[32];而EfficientNet 轻量版0‐4模型分别基于EfficientNet B0‐4,探索了神经网络的深度、宽度和图像分辨率之间的最佳权衡[6]。

此外,为了评估剪枝和量化模块的影响,我们还在FER2013和CK+数据集上进行了一系列消融实验。

结果如表 I 和表 II 所示,其中“我们的模型”指添加残差块的简化VGG‐19模型;“+ P”表示添加剪枝模块;“+ Q”表示添加量化后处理。此外,所有实验均在Google Colab平台的专业版模式下完成。对于我们的模型的训练过程,我们采用32作为批量大小,初始训练轮数为1000。我们注意到,大约在200个训练轮次后,训练好的模型会出现过拟合表现,即训练损失持续下降,而测试损失保持不变甚至上升。此外,我们采用了学习率衰减策略,将初始学习率设为0.01,在50个训练轮次后,每5个训练轮次进行10%衰减。

表 I 在FER2013上与基线对比的准确率

模型 公共集准确率(%) 私有集准确率(%)
MobileNet v2 42.71 42.10
Resnet50 lite 48.09 49.07
EfficientNet lite0 51.85 52.52
EfficientNet lite1 50.79 50.68
EfficientNet lite2 50.79 51.57
EfficientNet lite3 52.83 52.13
EfficientNet lite4 51.43 52.44
我们的模型 65.40 66.70
我们的模型 + P 65.72 66.35
我们的模型 + Q 66.20 66.63
我们的模型 + P + Q 66.15 66.65

表 II 准确率 (%) 与基线模型在 CK+ 上的比较

模型 准确率 (%)
MobileNet v2 96.97
Resnet50 lite 95.96
EfficientNet lite0 91.58
EfficientNet lite1 94.95
EfficientNet lite2 95.11
EfficientNet lite3 94.44
EfficientNet lite4 90.40
我们的模型 98.99
我们的模型 + P 98.99
我们的模型 + Q 98.99
我们的模型 + P + Q 98.99

C. 结果分析

1) 准确率 :表 I 显示了基线模型和我们的模型在 FER2013数据库的公开和私有测试集上的准确率。表 II 显示了基线模型和我们的模型在 CK+数据库上的准确率。在表 I 和表 II 中,Q代表训练后量化,P代表剪枝。

从表 I 可以看出,MobileNet v2 在基线模型中表现最差,而Resnet50 lite 的表现优于MobileNet v2。每个EfficientNet 轻量版的准确率相似。然而,表 II 中显示的在 CK+ 数据库上的准确率结果与表 I 略有不同。考虑到 CK+ 数据集规模较小且没有官方测试集,我们每次使用 90% 的图像来训练模型,并重复该训练过程六轮。最终结果是这些基线模型的平均准确率。其中,MobileNet v2 在 CK+ 上表现最好,而EfficientNet lite4 表现最差。

示意图3

如图4所示,混淆矩阵的x轴表示预测结果,y轴表示FER2013数据集上的真实标签,正向和中性情绪更容易被识别,例如开心、惊讶;而恐惧、愤怒、厌恶等负面情绪仍有提升空间。

对于这两个数据库,我们的模型准确率远高于其他模型。我们还可以发现,训练后量化不会影响我们模型的性能,但剪枝有时会导致准确率性能轻微下降。

2) 模型大小 :表 III 显示了基线模型、VGG 和我们的模型的参数数量和压缩模型文件大小。尽管经过剪枝的我们的模型在总参数数量上没有差异,但其压缩后模型大小显著减小。

表 III 压缩模型大小对比

模型 参数数量 模型大小 (MB)
MobileNet v2 2,266,951 7.9
Resnet50 lite 23,579,143 83.4
EfficientNet lite0 3,421,991 11.9
EfficientNet lite1 4,198,311 14.6
EfficientNet lite2 4,878,135 17.0
EfficientNet lite3 7,001,735 24.4
EfficientNet lite4 11,846,903 41.4
我们的模型 43,009,799 158.0
我们的模型 + P 20,048,839 72.4
我们的模型 + Q 20,484,423 45.1
我们的模型 + P + Q 20,048,839 17.3

我们都知道,在相同的存储方式下,模型文件的大小与模型的参数数量呈正相关。例如,使用FER2013数据集训练的VGG19模型,其参数数量最多,即使经过压缩后,模型大小仍达到158.0 MB。与其他轻量级模型相比,该模型大小过于夸张,导致VGG19不适合在边缘设备上部署。此外,对于基线模型而言,尽管它们在一定程度上减小了模型大小,它们无法实现出色的准确率性能。

然而,当我们的模型尺寸减小到与EfficientNet 轻量版相当时,仍实现了引人注目的准确率性能。权重剪枝将许多不必要的权重设为零,虽然并未减少我们模型的参数数量,但在压缩后显著降低了模型大小,带来了明显优势。此外,如图5所示,我们可以观察到后训练量化的效果,它将压缩模型大小减少了约76%。

示意图4

如表 I 和表 III 所示,结合权重剪枝和训练后量化,我们的模型相比原始模型将压缩后的模型大小减少了约82%,且准确率没有明显下降。

3) 推理时间 :图6显示了各模型在树莓派4B上的推理时间统计结果,结果以箱线图形式展示。表IV显示了我们的模型在麒麟980平台上的推理时间统计结果。每个模型运行100次。

示意图5

表 IV 我们的模型在麒麟980上的中位推理时间性能

模型 中央处理器:1个线程(毫秒) 图形处理器 (ms)
我们的模型 122 33
我们的模型 + P 113 30
我们的模型 + Q 121 31
我们的模型 + P + Q 121 32

我们可以发现,EfficientNet lite4 的推理时间性能最差。只有少数几个模型的平均推理时间小于400毫秒,这些模型是MobileNet v2、EfficientNet lite0和我们的模型。我们的模型通过剪枝,以及结合剪枝和训练后量化的我们的模型,其推理时间性能不稳定,但它们的中位推理时间在所有模型中最低。尽管MobileNet v2和EfficientNet lite0的表现优于我们的模型,但它们的准确率性能远不如我们。此外,EfficientNet lite0的模型大小也大于我们的模型。

在高端边缘设备上,我们模型的性能非常令人满意。在GPU模式下,我们所有的模型都能保证30帧每秒的运行效率。

V. 结论

本文提出了一种基于CNN的轻量级神经网络结构,用于移动设备上的面部表情识别(FER)任务,并在CK+和FER2013数据集上取得了最先进结果。与几种主流轻量级图像分类模型相比,我们的方法在TensorFlow Lite框架下,在减小模型尺寸的同时,展现出在FER任务中优异性能的可靠前景。

未来,我们旨在研究如何提高类内分类准确率,以增强模型的整体性能;同时,我们也将考虑在尽可能保持可靠性能的前提下,进一步减少轻量级模型的参数量。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值