POSTER V2 一个更简单且更强大的面部表情识别网络

论文标题:POSTER V2: A simpler and stronger facial expression recognition network

论文地址:https://arxiv.org/pdf/2301.12149v2

这篇论文主要提出了一种名为POSTER++的改进版面部表情识别(FER)网络,相较于原有的POSTER方法,POSTER++在性能和计算效率上都有显著提升。以下是论文的主要内容和贡献的总结:

研究背景

面部表情识别是人机交互中一个重要的研究领域。POSTER方法通过结合面部关键点和图像特征,在FER任务中取得了良好的效果,但其复杂的架构导致了较高的计算成本。

POSTER++的改进

1. 二流设计简化:

在原始的POSTER架构中,二流设计包括两个关键的交叉分支:

  • 图像到关键点分支(image-to-landmark branch):图像特征作为查询,用于与关键点特征进行交叉注意力计算。
  • 关键点到图像分支(landmark-to-image branch):关键点特征作为查询,用于与图像特征进行交叉注意力计算。

这两个分支旨在解决面部表情识别中的类内差异和类间相似性问题。

为了评估这两个分支对FER性能的贡献,作者进行了消融实验,分别移除了图像到关键点的分支和关键点到图像的分支。
结果显示:在这里插入图片描述

移除图像到关键点分支后,准确率仅有小幅下降,表明此分支对整体性能的影响较小。相比之下,移除关键点到图像分支后的性能下降更为明显,表明这个分支在面部表情识别中发挥了更为关键的作用。

尽管图像到关键点的分支在某种程度上对FER有帮助,但它带来了较大的计算资源消耗。这个分支需要额外的计算来处理从图像特征到关键点特征的查询,这会增加模型的复杂度和推理时间。

鉴于消融实验的结果和计算资源的考虑,作者决定在POSTER++中移除图像到关键点的分支。通过这种简化,POSTER++在保持高效性能的同时,大幅降低了计算复杂度。

2. 基于窗口的交叉注意力机制:

传统的注意力机制(如Transformer中的自注意力机制)在计算注意力时,会对整个输入序列或图像的所有部分进行全局计算。这种全局自注意力机制虽然能够捕捉到长距离依赖关系,但其计算复杂度是平方级的,具体来说,计算复杂度为 O ( N 2 ⋅ D ) O(N^2 \cdot D) O(N2D) ,其中 N 是输入序列的长度(或图像中token的数量),𝐷 是特征的维度。这种全局计算导致的计算成本极高,难以实际应用。因此,窗口注意力机制被提出。核心思想是在图像或特征图中划分出多个不重叠的局部窗口,然后在每个窗口内独立地应用自注意力机制。具体步骤如下:

1. 划分窗口:

图像特征矩阵 X img ∈ R N × D X_{\text{img}} \in \mathbb{R}^{N \times D} XimgRN×D,其中 N 是token数量,假设一个图像被表示为100个token,N=100 。 D是每个token的特征维度:每个token都包含D维度的特征。
将整个图像的100个token划分为10个窗口,每个窗口包含 M = N 10 M = \frac{N}{10} M=10N 个token。 这意味着每个窗口的形状为 Z img ∈ R M × D Z_{\text{img}} \in \mathbb{R}^{M \times D} ZimgRM×D,其中 M = 10 。这10个窗口共同覆盖了整个图像的100个token,每个窗口专注于图像的一部分。

2. 应用局部自注意力:

在每个窗口内部独立地应用self-attention机制。对于每个窗口执行与标准self-attention机制相同的操作,包括,Query、Key、Value的计算,以及注意力得分的计算。
基本符号和概念:

z lm z_{\text{lm}} zlm z img z_{\text{img}} zimg:分别代表关键点特征和图像特征的局部窗口。

w q , w k , w v , w o w_q, w_k, w_v, w_o wq,wk,wv,wo:这些是线性映射矩阵,用于将输入特征映射到查询(query)、键(key)、值(value)和输出(output)空间。

θ ( ⋅ ) \theta(\cdot) θ():表示 softmax 函数,通常用于将分数转换为概率分布。

b b b:这是相对位置偏置矩阵,帮助模型在不同位置之间引入相对位置信息。
具体操作步骤

线性映射:

q = z lm w q q = z_{\text{lm}} w_q q=zlmwq:关键点特征通过线性映射得到查询向量 q q q

k = z img w k k = z_{\text{img}} w_k k=zimgwk:图像特征通过线性映射得到键向量 k k k

v = z img w v v = z_{\text{img}} w_v v=zimgwv:图像特征通过线性映射得到值向量 v v v

计算注意力得分:

o ( i ) = θ ( q ( i ) k ( i ) T d + b ) v ( i ) o^{(i)} = \theta\left(\frac{q^{(i)} k^{(i)T}}{\sqrt{d}} + b\right) v^{(i)} o(i)=θ(d q(i)k(i)T+b)v(i)

对于每个注意力头 i i i
首先计算查询向量 q ( i ) q^{(i)} q(i) 和键向量 k ( i ) k^{(i)} k(i) 的点积,然后除以 d \sqrt{d} d (这里 d d d 是查询/键的维度,用于缩放分数)。
将这个点积加上相对位置偏置 b b b,并应用 softmax 函数 θ ( ⋅ ) \theta(\cdot) θ() 转换为权重。
这些权重用于加权值向量 v ( i ) v^{(i)} v(i),从而得到输出向量 o ( i ) o^{(i)} o(i)

合并多头注意力输出:

o = [ o ( 1 ) , … , o ( I ) ] w o o = [o^{(1)}, \dots, o^{(I)}] w_o o=[o(1),,o(I)]wo
所有注意力头的输出 o ( i ) o^{(i)} o(i) 被连接在一起(通过 [ ⋅ ] [\cdot] [] 操作),然后通过映射矩阵 w o w_o wo 线性组合,得到最终的输出向量 o o o

由于注意力仅限于窗口内部,计算复杂度从全局自注意力的平方级 O ( N 2 ⋅ D ) O(N^2 \cdot D) O(N2D) 降低到线性级 O ( N ⋅ M 2 ⋅ D ) O(N \cdot M^2 \cdot D) O(NM2D),其中 M M M 是窗口的大小。

3. 计算复杂度分析

窗口注意力机制通过限制注意力计算的范围,有效地降低了计算复杂度。如果将输入划分为 N M 2 \frac{N}{M^2} M2N 个窗口,则每个窗口的计算复杂度为 O ( M 2 ⋅ D ) O(M^2 \cdot D) O(M2D)。整体计算复杂度为:

O ( N M 2 ⋅ M 2 ⋅ D ) = O ( N ⋅ D ) O\left(\frac{N}{M^2} \cdot M^2 \cdot D\right) = O(N \cdot D) O(M2NM2D)=O(ND)

与全局自注意力相比,这种方法将计算复杂度从平方级降低到了线性级,使得在处理大规模图像或长序列时更为高效。

3. 实验结果

通过在多个标准数据集上的实验,POSTER++在保持或提升FER性能的同时,大幅减少了计算资源的消耗。例如,在RAF-DB数据集上,POSTER++达到了92.21%的准确率,同时只用了8.4G的浮点运算(FLOPs)和43.7M的参数(Param)。

4. 结论

POSTER++通过对POSTER架构的多项优化,成功实现了一个更简单、更强大的面部表情识别网络。它在性能和计算效率之间达到了更好的平衡,为未来的FER研究和应用提供了新的方向。

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值