融合关键点属性与注意力表征的人脸表情识别 您所在的位置:网站首页 位置表情 融合关键点属性与注意力表征的人脸表情识别

融合关键点属性与注意力表征的人脸表情识别

2024-06-06 01:39| 来源: 网络整理| 查看: 265

0、摘要1、融合关键点属性与注意力表征的识别模型1.1 混合注意力模块1.1.1 通道注意力模块1.1.2 空间注意力模块1.1.3 通道注意力和空间注意力中间的矩阵 1.2 基于注意力的人脸关键点属性表征1.3 Transformer1.3.1 Transformer网络框架1.3.2 位置编码 2、实验与结果分析2.1 数据集及评价准则2.2 参数设置2.3 结果分析2.3.1 网络模型有效性验证2.3.2 现有方法对比验证2.3.3 消融实验 3、总结

本文使用68点人脸关键点+Transformer进行表情分类。因为人脸关键点相比于以前直接使用人脸图像比,能够过滤掉很多不需要的多余特征,使用非表情区域的局部关键点作为特征表征(从感性来看,表情变化也对于着关键点的变化,比如开心表情,这几个关键点应该怎样,那几个关键点应该怎样,结合所有关键点的信息就能判别表情)。现在提取了关键点特征,然后使用Transformer来探索这些关键点之间的联系(因为Transformer本身就是全局注意力,比如你分析问题,得到众多线索之后,如果能从全局出发充分理解线索之间的联系,那么就能解决问题),最终实现表情分类。

所以本文主要分为前本部分的提取关键点特征的卷积部分和后半部分的Transformer。卷积部分简单来看就是ResBlock结构+通道注意力+空间注意力,只不过这里的注意力权重的计算方法有点复杂(因涉猎短浅,不知道这是不是本文原创)。Transformer部分就是标准的ViT中的结构,直接拿来用的,没什么好说的。

0、摘要

现在的方法对非表情区域干扰不具有鲁棒性(因为都是传入一张图像,图像中很多比如头发部分就是非表情区域,也会参与网络的运算,印象分类),为了用高效特征表示人脸表情变化,提出一种融合关键点属性与注意力表征的人脸表情识别方法(注意力:通道注意力、空间注意力、Transformer的自注意力)。

首先通过添加通道注意力和空间注意力的卷积神经网络提取人脸关键点信息,这里的注意力有效避免非表情区域的干扰,捕获图像中局部关键点的特征表征。

然后引入Transformer模块学习不同关键点之间的相关联系,引导网络构建对分类更具有分辨力的特征表示。

最后在CK+、JAFFE、FER2013上的准确率达到了99.22%、96.57%、73.37%。(在实验部分作者说了这里的准确率是一个加权精度,即各个类别的样本占比率*各类别的精度,比如a,b,c三种表情样本占比为30%、30%、40%,而三种表情的精度为70%、60%、80%,则最总精度 = 0.3 ∗ 0.7 + 0.3 ∗ 0.6 + 0.4 ∗ 0.8 = 0.71 =0.3*0.7+0.3*0.6+0.4*0.8=0.71 =0.3∗0.7+0.3∗0.6+0.4∗0.8=0.71)

在假设上,而作者认为:类间差异微小的表情,如:生气、伤心、郁闷等,表情变化多表现为“眉头紧锁、嘴角下拉、脸颊微抬”,其信息差异主要集中在局部关键点区域。这种的细微改变在整张人脸图像上网络难以学习,但是关键点位置包含的信息会发生较大改变(如生气时嘴角关键点下移)。因此,引导网络关注这些关键点的属性信息将对模型识别率的提升至关重要。如果这个假设正确,那么可能就是能提高分类效果的原因。从这个假设可以看出,可能模型对类间差异微小的表情的分类准确率是有所提升的。从实验部分的数据看,确实有这个倾向。

1、融合关键点属性与注意力表征的识别模型

本文提出的表情识别模型主要包括两个模块,其中基于注意力的人脸关键点属性表征模块主要抽取具有表情的区分性的特征,而基于 Transformer 的特征融合机制则是探索不同特征点属性之间的相关关系,网络结构图如图 1 所示 在这里插入图片描述

1.1 混合注意力模块

传统方法使用整张人脸图像推理,该法易受非表情区域影响(比如头发、耳朵)。因此本文提出一个基于关键点作为特征的方法,通过利用CNN回归获取人脸关键点以及关键点的特征向量,然后输送进Transformer模块编码,从而进行表情识别。

而在CNN部分中,又使用了通道注意力和空间注意力。原因有二:1)在CNN逐层运算中往往会产生较高的通道数,导致通道冗余;2)含人脸图像在空间上,不同位置应该有不同的重要性(比如对分类来讲,眼睛嘴巴等区域比颧骨等区域更加重要)。所以为了解决上述问题,本文引入通道注意力和空间注意力。

1.1.1 通道注意力模块

通道注意力模块结构如图2所示。简单来看和普通通道注意力没啥区别,只不过要复杂一点点。

在这里插入图片描述 首先有特征图 F 1 F_1 F1​,对齐进行通道注意力于是暖的步骤如下:

分别对 F 1 F_1 F1​进行AvgPool和MaxPool运算,得到两个 c ∗ 1 ∗ 1 c*1*1 c∗1∗1的向量 F a v g c 和 F m a x c F^c_{avg}和F^c_{max} Favgc​和Fmaxc​融合两个pool结果: B N ( P R e L U ( 1 ∗ 1 C o n v ( F a v g c + F m a x c ) ) ) BN(PReLU(1*1Conv(F^c_{avg}+F^c_{max}))) BN(PReLU(1∗1Conv(Favgc​+Fmaxc​))),得到 c ∗ 1 c*1 c∗1向量 F p o o l c F^c_{pool} Fpoolc​生成注意力矩阵 a t t c = s o f t m a x ( F p o o l c ⊗ ( F p o o l c ) T ) att_c=softmax(F^c_{pool}⊗(F^c_{pool})^T) attc​=softmax(Fpoolc​⊗(Fpoolc​)T),⊗实际上就是一个列向量和行向量的成绩。最终得到 c ∗ c c*c c∗c的注意力矩阵 a t t c att_c attc​P1&P2:该部分文中只是说将 F 1 F_1 F1​和 a t t c att_c attc​相乘,然后得到最终结果 F c F_c Fc​。我认为是这样的,每行就是一组通道注意力权重,那么 a t t c att_c attc​就有 c c c组通道注意力权重。每一组权重都和 F 1 F_1 F1​做通道权重的计算,得到一个 C ∗ H ∗ W C*H*W C∗H∗W的 F 1 o F_1^o F1o​,那么和 a t t c att_c attc​相乘的结果就是会有 c c c个 F 1 o F_1^o F1o​,然后将 c c c个 F 1 o F_1^o F1o​求和,就得到一个 C ∗ H ∗ W C*H*W C∗H∗W的 F 1 o F_1^o F1o​。然后在P2处,将P1产生的 F 1 o F_1^o F1o​和 F 1 F_1 F1​再次相加,得到通道注意力模块的最终输出 F c F_c Fc​

关于P1&P2,论文中用公式4表示,其中α是一个可训练的参数,初始值设0以降低前期收敛难度。 在这里插入图片描述

1.1.2 空间注意力模块

空间注意力模块的结构如图3所示,和通道注意力有点相似。 在这里插入图片描述其步骤为:

分别对 F c F_c Fc​进行AvgPool和MaxPool运算,得到两个 1 ∗ H ∗ W 1*H*W 1∗H∗W的特征图,然后将其concat在一起,得到一个 2 ∗ H ∗ w 2*H*w 2∗H∗w的特征图 F 2 ∗ H ∗ W F_{2*H*W} F2∗H∗W​卷积融合: B N ( P R e L U ( 3 ∗ 3 C o n v ( F 2 ∗ H ∗ W ) ) ) BN(PReLU(3*3Conv(F_{2*H*W}))) BN(PReLU(3∗3Conv(F2∗H∗W​))),得到 1 ∗ H ∗ W 1*H*W 1∗H∗W的空间注意力图 F M F_M FM​(一般的空间注意力也就到这里然后和原图相乘变结束)。产生 a t t s att_s atts​:在Reshape这一步需要转换一下,因为和通道注意力一样,需要列向量和行向量相乘产生一个注意力矩阵,所以这里将 F M ∈ R 1 ∗ H ∗ W F_M∈R^{1*H*W} FM​∈R1∗H∗Wreshape为 F M ∈ R H W ∗ 1 F_M∈R^{HW*1} FM​∈RHW∗1,也就是将一个2D矩阵reshape为一个向量,然后transpose一下就得到一个列向量和行向量。在相乘一个就得到 a t t s ∈ R H W ∗ H W att_s∈R^{HW*HW} atts​∈RHW∗HWP1:这部分要将空间注意力map和输入特征图进行融合。一般的空间注意力是将 F M a p ∈ R 1 ∗ H ∗ W 和 F i n p u t ∈ R C ∗ H ∗ W F_{Map}∈R^{1*H*W}和F_{input}∈R^{C*H*W} FMap​∈R1∗H∗W和Finput​∈RC∗H∗W相乘,就完成了。但是这里 a t t s att_s atts​就不太行了,同样的论文中一笔带过,但是我想和通道注意力应该一样。首先 a t t s att_s atts​每行就是一个空间注意力map,只不过需要将 s h a p e = H W ∗ 1 shape=HW*1 shape=HW∗1变换为 1 ∗ H ∗ W 1*H*W 1∗H∗W,此时就和一般的空间注意力一样计算就可以。这样意味着一行就能产生一个 F c o F_c^o Fco​,所以P1处的 a t t s att_s atts​和 F c F_c Fc​相乘后就会产生c个 F c o F_c^o Fco​,这里只需要求和即可。P2:这里就简单了,将P1的输出 F c o u t p u t ∈ R C ∗ H ∗ W F_c^{output}∈R^{C*H*W} Fcoutput​∈RC∗H∗W和 F c ∈ R C ∗ H ∗ W F_c∈R^{C*H*W} Fc​∈RC∗H∗W相加即可

同样的,在同时中β也是一个可学习的参数,然后初始值设0以降低前期收敛难度。 在这里插入图片描述

1.1.3 通道注意力和空间注意力中间的矩阵

本文的通道注意力和空间注意力模块其实在开始的处理中都是普通且常见的注意力计算方法,但是不同的是本文两次使用了矩阵。

以通道注意力模块为例,注意力矩阵的(i,j)位置代表通道 i i i对通道 j j j的影响。

从整体上来看,如下图,输入的第一个通道就是5个 F o F^o Fo的第一个通道的和。而5个 F o F^o Fo的第一个通道分别对应的权重是(1,1)、(2,1)、(3,1)、(4,1)、(5,1)位置上的权重,代表着通道 1 1 1对通道 1 1 1的影响、通道 2 2 2对通道 1 1 1的影响、通道 3 3 3对通道 1 1 1的影响、通道 4 4 4对通道 1 1 1的影响、通道 5 5 5对通道 1 1 1的影响。

至此可以看出,输出的每个通道都和每个通道权重有联系。因为一个通道重不重要,是根据所有通道来综合判断的。并且这里我感觉该有点Transformer的影子,因为self-attention模块的输出中的每个词,其实都是在self-attention模块内部和其他所有词计算QK相似度得到权重和,根据所有词的加权和得到的,所以输出的每个词其实和所有词都经过了交流。同理这里每个通道的权重都和其他所有权重都经过了交流。 在这里插入图片描述

而空间注意力模块的 a t t s att_s atts​中第(i,j)位置上的值代表第 i i i个空间位置对第 j j j个空间位置的影响。(注意这里的空间位置是2D,也就是位置 i i i可能代表(2,3)这个位置,因为这里是将2D拉成1D的向量。所以位置 i i i是1D上的位置,对应着就是2D位置上的(2,3))

1.2 基于注意力的人脸关键点属性表征

介绍了两个注意力模块,现在整体上介绍用于提取人脸关键点的CNN结构。

结构其实比较简单,如图4的CS-AttNet就是本文使用的CNN结构。其实就是ResNet网络中嵌入前面提到的两个注意力模块。

在这里插入图片描述 该网络的输入自然就是图像,而输出是68个关键点,每个关键点用512张量来表示特征,也就是输出的形状大概是(512,68)。用论文的话说:“经过网络训练,输出端不仅可以获取每个点的位置坐标,也可得到对应点的特征属性,这样为使用Transformer 模块去融合关键点之间的相关特征联系奠定基础。”

图5是关键点表征提取示图(这里的颜色没有看懂,我只能理解为只画出集中意思意思。因为文论没有提到对关键点分类,而这里的颜色确实有分类的想法。) 在这里插入图片描述

1.3 Transformer 1.3.1 Transformer网络框架

这一块感觉也没什么好说的,就是标准的ViT架构,只需要关注输入和输出即可。

输出不必说,标准的ViT最后面也是跟一个全连接层,用于分类。

输入就是上面的512维的68个关键点的表征数据。

在这里插入图片描述

1.3.2 位置编码

Transformer的位置编码我还没去了解,也不知道论文中说的是ViT中那种现成的还是有所创新。

2、实验与结果分析 2.1 数据集及评价准则

本文在三种数据集上实验:

CK+:包含326张图像,共7种类别JAFFE:包含213张图像,共7种类别FER2013:包含35887张图像,共7种类别。(人脸角度更多且有一定的遮挡,在本实验中可以理解为更复杂的数据集)

在这里插入图片描述

另外因为样本不均衡,差异较大,所以本文采用一个加权精度的评价方法 在这里插入图片描述

2.2 参数设置 输入:256x256关键点数kp=68,dim=512TransformerLayer数量为12层Multi-Head数为8使用交叉熵损失函数

因为前两个数据集像比与FER2013太小,为了避免过拟合:先在FER2013训练获得预训练模型,然后再CK+和JAFFE上微调。

再训练时,在三个数据集上都进行5折交叉验证,统计平均准确率。

2.3 结果分析 2.3.1 网络模型有效性验证

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 从3个混淆矩阵可以看出,因为CK+和JAFFE干净稳定,所以效果都很好。

而FER2013因包含大量人脸遮挡和低对比度图像和类别严重不均衡,所以略差(是和前两个数据集比,本身比其他模型在FER2013效果要很好)。同时在伤悲生气害怕三个表情上特别差,因为这三类都属于消极情绪,本身就有很强的相似性,所以三者中相互错分的比例很高。并且这三种表情差异只有一点面部动作,所以本身就难分。

在这里插入图片描述 为了对比我训练了一个模型,在FER2013上获得了73.7%的精度(普通精度),然后其混淆矩阵如上图所示,并且按加权算法的精度=71.388%

2.3.2 现有方法对比验证

可以看到特别是在FER2013数据集上效果有很大的提升(我的疑问是本文模型使用加权精度,那么其他模型的精度也是加权精度吗?可能是自己跑过,然后加权精度) 在这里插入图片描述 在数据清晰、差异化较小的情况下,目前大部分方法都能取得较好的结果,但是在真实的复杂场景下,很多方法难以适用。

(从FER2013数据集的效果看)然而本文所提的关键点属性表征模块和基于注意力的 Transformer 识别模块能有效解决上述问题,实验结果也展现了本文所提模型的识别精度,获得目前最优的结果。

以小提琴图展示现有方法对比 首先需要了解小提琴图的含义,可以看看如何通俗的理解小提琴图 在这里插入图片描述 第一个是男性年龄分布、第二个是女性年龄分布。图中四分位数(也就是三条虚线)就是将一个小提琴包含的数量顺序排列均等分为4份,所以中间是主体部分,而两头尖尖约长代表离主体越远,也就是离群值。总体来说就是中心线代表平均值,而图约扁平,说明方差越小约稳定(因为尖尖离群值会导致方差变大)。

利用小提琴图展示不同方法识别结果的准确率波动情况。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 从三张小提琴图可以看出:

CK+和JAFFE各种算法的平均精度波动不大(除了ResNet50),因为这两数据集比较理想。但是Ours更加扁平一点,说明模型比较稳定,其他模型可能出现一下很大一下很小这种波动情况。FER2013因遮挡等情况,所以各种模型的效果有很大不同。从图中可以看到FER2013精度更高,说明本文的模型不仅能够很好提取特征进行分类(CK+和JAFFE),而且在遮挡丢失人脸等情况下,也能够有很好的特征提取能力。 2.3.3 消融实验

为了测试本文所提注意力机制和 Transformer 模块的有效性,以 ResNet50 作为骨干网,将其网络中的残差结构置换为图 4 中所示的注意力模块,记为CS-AttNet。

此外,在 CS-AttNet 基础上,本文进一步加入 Transformer 模块,记为 CS-AttNet-Trans 模型,能够捕获关键之间的相关联系,对人脸表情识别产生积极作用。

在这里插入图片描述

CK+和 JAFFE 数据集图像清晰、差异化较小,因而基础网络都能取得较好的结果。

FER2013 数据集中包含大量人脸遮挡和低对比度图像,其他算法很难得到较好的结果,而本文所提模块在 ResNet50 基础上准确率分别提升 4.21%和7.69%,充分说明其在高质量数据中能够保持较高的识别准确率,在低质量数据中同样能够取得较大的指标提升,进一步证明了本文算法的鲁棒性和有效性。

3、总结

本文提出一种融合关键点属性与注意力表征的人脸表情识别方法,不仅能够有效避免非表情区域的干扰,而且可以关注图像中局部位置的细微变化。

通过添加通道注意力和空间注意力机制,实现不同维度和位置的权重分配,引导网络学习更具有表征性的特征。

本文提出基于 Transformer 模块构建表情识别模型,通过 Transformer 模块在所有实体对之间执行信息交换,捕获关键点之间丰富的位置信息和互信息,从而有效提升表情识别精度。

最后将本文所提出的算法分别在CK+、JAFFE、FER2013 三种公开数据集上进行实验验证,分别达到 99.22%、96.57%、73.37%的识别准确率。

其中 FER2013 数据集场景复杂、识别难度较高,本文提出的算法达到了目前为止最高的准确度,充分展现了算法的有效性和鲁棒性。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有