论文题目:A Dual-Direction Attention Mixed Feature Network for Facial Expression Recognition
论文地址:https://www.mdpi.com/2079-9292/12/17/3595
目前在FER(面部情绪识别)中排名第一(2024.8.19)
引言
面部表情识别 (FER) 是计算机视觉领域中的一个重要研究方向。近年来,随着深度学习技术的进步,研究人员开发了各种模型来提高FER的准确性。本文介绍了一种新颖的网络架构——双向注意混合特征网络 (DDAMFN),它在多个FER基准数据集上的表现优异,并展示了其在处理复杂面部表情识别任务中的强大能力。
数据集
在实验中,使用了以下三个主要的数据集来评估DDAMFN的性能:
-
AffectNet:目前最大的公开FER数据集,包含两种基准测试:AffectNet-7 和 AffectNet-8,涵盖了多种表情类别。
-
RAF-DB:一个从互联网获取的真实世界面部表情数据库,包含29,672张图像,标注了7种基本表情和11种复合表情。
-
FERPlus:基于FER2013的数据集,改进了标注的准确性和均衡性,包含28,709张训练图像和3,589张验证图像。
方法
DDAMFN的架构由两部分组成:混合特征网络(MFN)和双向注意网络(DDAN)。以下是这两部分的详细说明,并附有具体的例子帮助理解。
1. 混合特征网络 (MFN)
MFN通过引入不同尺寸的卷积核来增强特征提取的多样性。它结合了残差瓶颈模块和非残差模块,以提高模型的表达能力和训练稳定性。
混合卷积 (MixConv) 的工作原理
假设我们有一个输入特征图,大小为 32 × 32 × 64,其中:
32 × 32 是特征图的空间维度(高度和宽度),64 是特征图的通道数。
在MFN中,我们可以使用不同尺寸的卷积核(如 3×3、5×5 和 7×7)来处理这些特征图。具体操作如下:
- 分割通道:
我们将输入特征图的通道数 64 分成三组,每组 64/3 ≈ 21 个通道。
第一组 21 个通道将使用 3×3 卷积核处理,第二组 21 个通道使用 5×5 卷积核,第三组 22 个通道使用 7×7 卷积核。 - 应用卷积:
对于第一组通道,使用 3×3 卷积核在 32 × 32 的空间维度上滑动进行卷积操作,输出特征图大小仍为 32 × 32 × 21。
对于第二组通道,使用 5×5 卷积核执行同样的操作,输出特征图大小为 32 × 32 × 21。
对于第三组通道,使用 7×7 卷积核处理,输出特征图大小为 32 × 32 × 22。
特征图合并: - 将这三组特征图在通道维度上进行拼接,得到一个新的特征图,大小为 32 × 32 × 64。通过这种方式,模型能够从不同的空间尺度上提取特征,丰富了特征表达。
残差瓶颈模块与非残差瓶颈模块
残差瓶颈模块 (Residual Bottleneck Module)
残差瓶颈模块的主要功能是帮助捕捉复杂特征,并通过残差连接改善梯度流动,减轻深层网络中的梯度消失问题。
假设我们有一个输入特征图,大小为 32 × 32 × 64。残差瓶颈模块的工作流程如下:
-
卷积层:输入特征图首先通过一个卷积层进行降维处理,例如将通道数从 64 降到 32。
-
非线性激活:经过卷积后的特征图通过ReLU或PReLU激活函数进行非线性变换。
-
再卷积:然后,特征图再通过一个卷积层恢复到原来的通道数 64。
-
残差连接:最终,将输入特征图与经过两次卷积后的特征图逐元素相加,形成输出特征图。这种连接方式使得网络能够更容易地学习到复杂特征,同时保持信息流的通畅。
在这个过程中,卷积操作的步幅(stride)在控制特征图尺寸上起到了关键作用:
-
Stride=1:当 stride=1 时,卷积核在输入特征图上滑动时,每次移动一个像素,这意味着输出特征图的空间尺寸(高度和宽度)与输入特征图相同。这种设置在残差瓶颈模块中常用于保留输入的空间分辨率,以确保细节信息不被丢失。
-
Stride=2:当 stride=2 时,卷积核在输入特征图上每次移动两个像素,这将导致输出特征图的空间尺寸减少一半(高度和宽度均减少一半)。这种设置在残差瓶颈模块中通常用于降维,帮助网络逐层聚合信息,同时减少计算复杂度。
非残差模块 (Non-Residual Module)
非残差模块的设计目标是增强模型的表示能力,通过全连接卷积层使每一层都能有效地处理输入信息。
例子:在非残差模块中,假设输入特征图的大小为 32 × 32 × 64,具体处理流程如下:
- 卷积层:输入特征图通过一个卷积层,产生新的特征图,例如将通道数从 64 降低到 32。
- 激活函数:同样地,通过ReLU或PReLU激活函数对特征图进行非线性变换。
- 再卷积:最后,特征图再经过一个卷积层,恢复到 64 通道。
与残差瓶颈模块不同,非残差模块没有直接的跳跃连接,这意味着每一层的输出完全依赖于当前层的卷积运算。这种设计迫使网络在每一层上都必须充分处理输入特征,从而捕捉更多的细节信息。
Stride的作用:
- Stride=1:在非残差模块中使用 stride=1 可以保持特征图的空间尺寸不变,确保在每一层中都能保留足够的细节信息。
- Stride=2:使用 stride=2 时,特征图的空间尺寸会减半,有助于降低计算量,并逐层汇总信息,适用于需要逐渐缩小特征图尺寸的网络部分。
通过组合使用残差瓶颈模块和非残差模块,MFN能够在捕捉复杂特征和增强信息流动之间取得平衡。这种设计不仅提高了模型的表达能力,还改善了深度网络的训练效果。
双向注意网络 (DDAN)
DDAN由多个独立的双向注意头组成,每个头在水平和垂直方向上生成注意力映射,以捕捉图像中的长距离依赖关系。
生成双向注意力映射的过程
例子:假设DDAN生成的水平和垂直方向的注意力映射分别为 A h A_h Ah 和 A v A_v Av。我们以下面的步骤详细说明如何生成和应用这些注意力映射。
-
生成水平特征图 F h F_h Fh:
- 从输入特征图
F
F
F 中提取水平方向的特征,假设
F
F
F 的大小为
32 × 32 × 64
,我们在宽度方向上进行全局深度卷积(GDConv)处理,得到 F h F_h Fh,大小为1 × 32 × 64
。这表示在水平方向上聚合了每一行的特征信息。
- 从输入特征图
F
F
F 中提取水平方向的特征,假设
F
F
F 的大小为
-
生成垂直特征图 F v F_v Fv:
- 类似地,从
F
F
F 中提取垂直方向的特征,在高度方向上进行GDConv处理,得到
F
v
F_v
Fv,大小为
32 × 1 × 64
,表示在垂直方向上聚合了每一列的特征信息。
- 类似地,从
F
F
F 中提取垂直方向的特征,在高度方向上进行GDConv处理,得到
F
v
F_v
Fv,大小为
-
生成水平注意力映射 A h A_h Ah:
-
F
h
F_h
Fh 首先通过一个全连接层将通道数从
64
降到较小的维度,例如8
,得到大小为1 × 32 × 8
的特征图。 - 然后通过另一个全连接层将通道数恢复到
64
,生成最终的水平注意力映射 A h A_h Ah,大小为1 × 32 × 64
。
-
F
h
F_h
Fh 首先通过一个全连接层将通道数从
-
生成垂直注意力映射 A v A_v Av:
- 对
F
v
F_v
Fv 进行类似的处理,先降维再恢复维度,生成垂直注意力映射
A
v
A_v
Av,大小为
32 × 1 × 64
。
- 对
F
v
F_v
Fv 进行类似的处理,先降维再恢复维度,生成垂直注意力映射
A
v
A_v
Av,大小为
-
合并注意力映射:
- 将
A
h
A_h
Ah 和
A
v
A_v
Av 逐元素相乘,生成最终的注意力映射
A
i
A_i
Ai,大小为
32 × 32 × 64
。
- 将
A
h
A_h
Ah 和
A
v
A_v
Av 逐元素相乘,生成最终的注意力映射
A
i
A_i
Ai,大小为
筛选最优注意力映射
在DDAN中,多个双向注意头会生成不同的注意力映射。这些映射可能对图像的不同区域有不同的关注点。为了找到最优的注意力映射,模型使用了基于均方误差(MSE)的筛选过程。
-
计算MSE损失:
- 对于每一对不同的注意力映射(如 A 1 A_1 A1 和 A 2 A_2 A2),计算它们之间的均方误差(MSE)。这个过程衡量了不同注意力头生成的映射之间的差异。
-
选择最优注意力映射:
- 选择使得MSE最小的那个注意力映射作为最优注意力映射 A m A_m Am,这个映射能够更好地捕捉图像中关键的面部特征区域。
应用注意力映射
- 将筛选出的最优注意力映射 A m A_m Am 应用于原始特征图 F F F,通过逐元素相乘的方式调整特征图的值:
- 例如,假设在
F
F
F 的第10行第3个通道的原始特征值为
0.9
,水平和垂直注意力值分别为0.7
和0.8
,则调整后的特征值为:
F a d j u s t e d [ 10 , 3 ] = 0.9 × 0.7 × 0.8 = 0.504 F_{adjusted}[10, 3] = 0.9 \times 0.7 \times 0.8 = 0.504 Fadjusted[10,3]=0.9×0.7×0.8=0.504
- 这一过程增强了关键区域的特征表达,使模型能够更准确地识别出面部表情。
最终损失函数
为了优化DDAMFN的整体性能,论文设计了一个结合分类损失 L c l s L_{cls} Lcls和注意力损失 L a t t L_{att} Latt的最终损失函数:
L = L c l s + λ a L a t t L = L_{cls} + \lambda_a L_{att} L=Lcls+λaLatt
- L c l s L_{cls} Lcls(分类损失):使用标准的交叉熵损失函数来衡量模型的分类性能。
- L a t t L_{att} Latt(注意力损失):用于确保不同的DDA头关注不同的面部区域,避免它们过度重叠。
-
λ
a
λ_a
λa(超参数):用于平衡分类损失和注意力损失的权重,默认值为
0.1
。
这个组合损失函数能够在保证分类准确性的同时,优化注意力机制的表现,使模型能够更加有效地关注关键的面部区域。
实验与结果
通过在AffectNet、RAF-DB和FERPlus数据集上的实验,DDAMFN在FER任务中展现了卓越的性能。以下是主要的实验结果:
-
消融实验:分析了每个组件对DDAMFN整体性能的贡献,验证了双向注意机制和混合特征提取的有效性。
-
对抗攻击实验:通过在图像中加入噪声,评估了模型对关键区域的依赖性,结果表明DDAMFN能够有效识别并聚焦于最重要的面部区域。
-
类别不平衡分析:使用混淆矩阵分析了模型在不同表情类别上的表现,发现了模型在处理一些易混淆表情(如“厌恶”和“愤怒”)时的困难。
讨论
可能的解释与未来的影响
研究表明,DDAMFN之所以在FER任务中表现优异,主要得益于其对与面部表情相关的关键区域的关注。通过对抗攻击实验验证了这些区域的关键性,这也为未来在情感机器人、人机交互等领域的应用提供了可能性。
未来研究方向
-
类别不平衡:未来研究将继续改进模型在处理类别不平衡问题上的表现,探索更有效的标注修正方法。
-
跨数据集验证:进一步加强模型在不同数据集间的迁移学习能力,以提高模型的泛化性能。
结论
DDAMFN通过结合双向注意力机制和混合特征提取技术,在多个基准数据集上取得了卓越的表现。未来的研究将致力于解决类别不平衡和跨数据集验证中的挑战,同时探索更多实际应用场景中的模型性能。