Learning Guided Attention Masks for Facial Action Unit Recognition 阅读笔记

本文介绍了一种基于AU(Action Unit)引导的注意力机制方法,旨在减小人类与机器对面部表情感知的差异。通过在DenseNet中引入注意力模块,增强网络对关键面部特征的学习能力。实验使用了BP4D、MMSE和DISFA等多个数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:减小人类和机器对于表情的感知差异
方法:提出一种引导注意力机制,以方便网络获取面部重要特征。从AU中学习注意力映射。
使用数据集: BP4D, MMSE and DISFA

结构:
如图1,使用4个密集块组成的Densenet,第二块的输出连接到掩蔽网络,该网络为给定的样本学习适当的AU引导掩码。学习到的掩码进一步添加到块2的输出,以注意力加强的特征表示。

使用Densenet进行特征提取:
Densenet属于使用剩余连接的一类网络。具体来说,就是densenet每一层都连接到同一块内的后续层。如果F_n表示在第n层应用的非线性函数集,则该层的输出x_n为:x_n=f_n([x_1,x_2,…,x_n-1])
该文中对Densenet-121结构进行改动。传统的Densenet由一系列密集块组成,每个块的末尾有一个最大池层来对特征进行下采样。最后,在四个密集块的末尾,构造了一个全局池层和分类层。
面部动作的一个关键特征是其间的内部AU相关性。AU很少单独发生,通常与其他AU同时发生。这种相关性使用完全连接的网络进行有效的建模。该文再最终分类层前添加一个带有1024个神经元的全连接层。

AU引导的空间注意力映射
一个注意力网络对图像/特征映射中每个与任务相关的点增加权重。
AU引导注意力:理想情况下,关注模型仅关注与特定AU最相关的区域。利用先验知识(不同AU影响的特定位置)来构造注意力稀疏网络。
在这里插入图片描述

将不同AU表示为面部关键点运动的集合。如下表:
在这里插入图片描述
使用像素平均方差损失:
在这里插入图片描述

端到端注意力学习:
掩码网络用于学习给定的一组输入特征的适当注意映射。该掩码不是强制注意力掩码,而是整合到中间层。第二个密集块在池层后的输出作为掩码网络的输出。网络中越接近输入层越倾向于检测基本轮廓和部分,越靠近分类层越倾向于AU预测。中间层如块2,在Densenet中捕获基于形状和外观的特征。由于引导注意掩码在很大程度上取决于图像中存在的AU,因此使用中间特征作为输入来学习注意掩码是合乎逻辑的。

实验结果:
在这里插入图片描述

### AGFNet简介 AGFNet是一种专注于RGB-D场景分类的网络架构,该方法通过引入注意力引导特征融合机制来提升模型的表现力。具体而言,在处理RGB-D数据时,AGFNet能够有效地捕捉到不同模态之间的互补信息并加以利用[^1]。 ### 注意力引导特征融合原理 为了更好地理解物体及其周围环境的关系,AGFNet采用了多尺度上下文建模策略,并设计了一种新颖的空间注意模块(SAM)[^2]。SAM可以自适应地调整来自RGB和深度通道的重要性分数,从而使得对于特定任务更加重要的部分获得更高的关注程度。此外,还存在一个通道级联注意模块(CAM),用于进一步增强跨模态交互效果。 ### 模型实现细节 在实际编码过程中,AGFNet通常构建于流行的深度学习框架之上,比如PyTorch。下面给出一段简化版的Python代码片段展示如何定义这样一个神经网络结构: ```python import torch.nn as nn class SAM(nn.Module): # Spatial Attention Module def __init__(self, in_channels): super().__init__() self.conv = nn.Conv2d(in_channels*2, 1, kernel_size=7, padding=3) def forward(self, rgb_feat, depth_feat): feat_cat = torch.cat([rgb_feat, depth_feat], dim=1) attention_map = F.sigmoid(self.conv(feat_cat)) return rgb_feat * attention_map + depth_feat * (1 - attention_map) class CAM(nn.Module): # Channel-wise Concatenation and Attention Module def __init__(self, num_features): super().__init__() self.fc = nn.Linear(num_features, num_features//4) self.relu = nn.ReLU() self.softmax = nn.Softmax(dim=-1) def forward(self, fused_feature): avg_pool = F.adaptive_avg_pool2d(fused_feature, output_size=(1, 1)).squeeze(-1).squeeze(-1) max_pool = F.adaptive_max_pool2d(fused_feature, output_size=(1, 1)).squeeze(-1).squeeze(-1) shared_mlp_input = torch.stack((avg_pool,max_pool),dim=-1) channel_attention_weights=self.softmax(self.fc(shared_mlp_input)) weighted_sum=torch.sum(channel_attention_weights*fused_feature,dim=1,keepdims=True) return weighted_sum+fused_feature class AGFNet(nn.Module): def __init__(...): ... def forward(self, ...): ... ``` 上述代码仅展示了核心组件——空间注意模块(SAM)以及通道级联注意模块(CAM)。完整的AGFNet还需要结合其他卷积层、池化操作等常规CNN组成部分共同构成整个网络体系。 ### 应用场景探讨 AGFNet适用于多种涉及三维感知的任务场合,特别是在那些依赖高质量语义分割结果的应用领域内表现出色。例如室内导航机器人可以通过部署此类算法提高对复杂家居布局的理解能力;智能家居设备也可以借助其强大的视觉解析功能优化用户体验和服务质量。另外,在虚拟现实(VR)/增强现实(AR)系统中同样有着广阔的发展前景,有助于创建更为逼真的沉浸式体验环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值