前言 

人脸表情识别(FER)在计算机视觉领域受到越来越多的关注。本文介绍了一篇在人脸表情识别方向上使用Transformer来学习关系感知的ICCV2021论文,论文提出了一个TransFER模型,在几个FER基准数据集上取得了SOTA性能。

本文来自公众号CV技术指南的论文分享系列

关注公众号CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

Background


在过去的几十年里,面部表情识别(FER)在计算机视觉研究领域受到了越来越多的关注,因为它对于让计算机理解人类的情感并与人类进行交互具有重要意义。

尽管FER最近取得了很好的性能,但它仍然是一个具有挑战性的任务,主要原因有两个:

1)类间相似度很大。来自不同类的表达式可能只表现出一些细微的差异。如图1所示,惊讶(第1排)和愤怒(第2排)的嘴巴相似。区分它们的关键线索在于眼睛和眼睛之间的区域;

2)类内小的相似性。属于同一类别的表情可能会有截然不同的外观,不同的种族、性别、年龄和文化背景会有所不同。

现有的研究成果可以分为两类:基于全局的方法和基于局部的方法。

针对基于全局的方法,人们提出了许多损失函数来增强特征的表示能力。然而,由于这些方法使用的是全局人脸图像作为输入,它们可能会忽略一些在区分不同表情类别中起重要作用的关键人脸区域

为了解决这一问题,人们提出了许多基于局部的方法来学习人脸不同部位的区分特征,这些方法可以分为两类:基于标志点的方法和基于注意力的方法。

一些方法在landmarks周围裁剪的面部部位提取特征。然而,有几个问题:

1)预先定义的面部作物可能不能灵活地描述局部细节,因为不同的图像可能会有所不同。这是因为人脸的重要部位可能会出现在不同的位置,特别是对于姿势变化或视点变化的人脸;

2)对于受各种挑战性因素影响的人脸,例如强烈的光照变化、较大的姿势变化和严重的遮挡,人脸标志点检测可能不准确甚至失败。因此,有必要捕捉面部重要部位,抑制无用部位。

创新思路


为了解决Background中的问题,一些方法应用了注意力机制。然而,他们可能对相似的面部部位有多余的反应,而忽略了在FER中起重要作用的其他潜在的区别性部位。这个问题对于遮挡或姿势变化较大的面部尤其严重,因为有些面部部位是看不见的。

因此,需要提取不同的局部表征来对不同的表情进行分类。即使某些局部块(patches)不可见,更多样化的局部块也可以发挥作用。同时,不同的局部块可以相互补充

例如,如图所示,仅根据嘴巴区域(列2)很难区分惊讶(第1行)和愤怒(第2行)。我们提出的TransFER模型探索了不同的关系感知面部部位,如眼睛(第3列,第1行)和眉毛之间的区域(第3列,第2行),这有助于区分这些不同的表情。

因此,应该在全局范围内探索不同局部块(patches)之间的关系,突出重要的块(patches),抑制无用的块(patches)

为了实现上述两个目标,论文提出了TransFER模型来学习不同关系感知的FER局部表示。

首先,提出了随机丢弃注意力图的多注意丢弃算法(Multi-Attention Dropping, MAD)。通过这种方式,推动模型去探索除最具区分性的局部斑块之外的综合局部斑块,自适应地聚焦于不同的局部斑块。当某些部位因姿势变化或遮挡而不可见时,此方式特别有用。

其次,Vision Transformer(VIT)适用于FER,称为VIT-FER,用于对多个局部块之间的连接进行建模。由于采用全局范围对每个局部块进行增强,充分挖掘了多个局部块之间的互补性,提高了识别性能。

第三,多头自我注意(multi-head self-attention)使VIT能够在不同位置共同关注来自不同信息子空间的特征。然而,由于没有明确的指导,可能会建立冗余关系。为解决这一问题,提出了随机丢弃一个自我注意的多头自我注意丢弃(Multi-head Self-Attention Dropping, MSAD)方法。在这种情况下,如果放弃了self-attention,模型就被迫从其他地方学习有用的关系。因此,不同局部块之间的丰富关系被挖掘出来,从而使FER受益。

结合新的MAD和MSAD模块,提出了最终的体系结构,称为TransFER。如图所示,与VIT-FER基线(列2)相比,TransFER定位更多样化的关系局部表示(列3),从而区分这些不同的表达式。它在几个FER基准上达到了SOTA性能,显示了它的有效性。

Contribution


1.应用VIT自适应地刻画面部不同部位之间的关系,称为VIT-FER,展示了VIT-FER对FER的有效性。这是探索Transformers并研究关系感知(relation-aware)的局部块对FER的重要性的第一次努力。

2.引入多头自注意丢弃算法(MSAD),随机删除自我注意模块,迫使模型学习不同局部块之间的丰富关系。

3.设计了一种多注意丢弃算法(MAD)来消除注意图,推动模型从最具区分度之外的每个面部部位提取全面的局部信息。

4.在几个具有挑战性的数据集上的实验结果表明了提出的TransFER模型的有效性和实用性。

TransFER


TransFER的总体架构如图所示,它主要由茎(stem) CNN、局部CNN和多头自我注意丢弃(MSAD)组成。茎CNN用于提取特征图。这里采用IR-50,因为它具有很好的通用性。

Local CNN


如前所述,在给定面部图像的情况下,首先使用茎CNN来提取特征图。然后,利用多空间注意力自动捕获局部块。然而,如果没有适当的指导,不能保证全面的辨别性面部部位被定位。如果模型只关注少数有区别的面部部分,当这些部分难以识别或完全遮挡时,FER会受到性能下降的影响,特别是对于姿势变化较大或遮挡较强的人脸。为了解决这一问题,开发了局部CNN来提取由MAD引导的各种局部特征。框架如上图所示,主要由三个步骤组成,具体如下。

首先,生成多注意力图。X∈R(h×w×c)表示输入特征图,其中h、w和c分别表示特征图的高度、宽度和数量。由于LANet允许模型自动定位重要的面部部位,因此它在多个局部分支中使用,如上图所示。LANet由两个1×1卷积层组成。第一层1x1卷积输出c/r特征图,其中缩减率用于降低特征图的维数,后继的RELU层用于增强非线性。第二层将特征图数目减少到1,并通过Sigmoid函数(记为ASMI)生成关注图。假设存在B个LANet分支,则生成注意图[M1,M2,...,MB],其中Mi∈R(h×w×1)。

其次,MAD迫使多个局部分支探索不同的有用面部部位。一般来说,它接受几个数据分支作为输入,并通过将此分支中的值设置为零(不更改输入形状)随机删除一个分支。因此,MAD将注意力图作为输入,随机将一个注意力图设置为零,并输出注意力图。第三,将多个注意力图聚合在一起,生成一个注意力图。具体地说,使用基于元素的最大值操作来聚合多个关注图。

最后,将Mout与原始特征图X逐元素相乘。因此,原始特征图中的不重要区域被抑制,反之亦然。

Multi-Attention Dropping


Dropout是为了防止神经网络过拟合而提出的。它将特征向量或特征地图调整为输入。在训练过程中,输入的一些元素被随机设置为零,概率为来自伯努利分布的样本。如果有多个通道,则每个通道将独立归零。

受此启发,针对FER任务提出了一种类似丢弃的操作,称为多注意丢弃。与标准Dropout算法相比,本文提出的MAD算法采用一组特征映射(或向量)作为输入,并将每个特征映射作为一个整体来处理。

如图所示,在训练过程中,从完全设置为零的均匀分布中选择一个特征图。根据概率p执行丢弃操作。删除的特征图将不会在以下图层中激活。因此,这是一种类似丢弃的停止梯度操作,该操作可以引导局部CNN探索不同的、具有区分性的面部部位。因此,可以定位均匀分布的面部部位,从而产生有利于FER的全面的局部表示。

Multi-head Self-Attention Dropping


多头自注意丢弃(MSAD)主要由一个在每个多头自我注意模块后面注入MAD的transformer encoder和一个MLP分类头组成,就像vision transformer(VIT)那样。

经过局部CNN后,生成包含不同局部块信息的特征图Xout ∈ R(h×w×c)。为了捕捉多个局部块之间的丰富关系,使用了包含M个编码块的Transformer。由图所示,由于此处除了在Multi-head Self Attention后添加了MAD模块以外, Transformer Encoder的结构基本没变,因此这里不多介绍。

Conclusion


MAD与Dropout、Drop Block、Spatial Dropout的比较

TransFER与其它SOTA模型的比较

注意可视化在来自AffectNet数据集的一些示例面部图像上的不同表情。

(A)-(G)分别表示愤怒、厌恶、恐惧、快乐、中性、悲伤和惊讶。(I)-(Iv)表示表1中的四种训练策略,(I)表示基准策略,(Ii)表示使用局部CNN而不使用MAD进行训练,(Iii)表示使用局部CNN和MAD进行训练,以及(Iv)表示TransFER,使用局部CNN和MSAD进行训练。在应用MAD和MSAD之后,整个框架可以专注于更具区分性的面部区域。

 欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

 在公众号中回复关键字 “技术总结”可获取公众号原创技术总结文章的汇总pdf。

​​

其它文章

2021-视频监控中的多目标跟踪综述

统一视角理解目标检测算法:最新进展分析与总结

NeurIPS 2021 | LoveDA:面向遥感语义分割与迁移学习的新开源数据集

图像修复必读的 10 篇论文|    Anchor-free目标检测论文汇总

给模型加入先验知识的常见方法总结|    谈CV领域审稿

全面理解目标检测中的anchor|    实例分割综述总结综合整理版

小目标检测的一些问题,思路和方案|小目标检测常用方法总结

HOG和SIFT图像特征提取简述|    OpenCV高性能计算基础介绍

CVPR2021 | SETR: 使用 Transformer 从序列到序列的角度重新思考语义分割

经典论文系列 | 缩小Anchor-based和Anchor-free检测之间差距的方法:自适应训练样本选择

目标检测中回归损失函数总结

深度学习模型大小与模型推理速度的探讨

视频目标检测与图像目标检测的区别

CV算法工程师的一年工作经验与感悟

单阶段实例分割综述|    语义分割综述|    多标签分类概述

视频理解综述:动作识别、时序动作定位、视频Embedding

资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库

从CVPR 2021的论文看计算机视觉的现状

2021年小目标检测最新研究综述

如何使用 TensorFlow 量化神经网络

Siamese network总结|    计算机视觉入门路线

Batch Size对神经网络训练的影响

论文创新的常见思路总结|    卷积神经网络压缩方法总结

ICCV2021 | TransFER:使用Transformer学习关系感知的面部表情表征的更多相关文章

  1. ICCV2021 | SOTR:使用transformer分割物体

    ​前言 本文介绍了现有实例分割方法的一些缺陷,以及transformer用于实例分割的困难,提出了一个基于transformer的高质量实例分割模型SOTR. 经实验表明,SOTR不仅为实例分割提供了 ...

  2. EdgeFormer: 向视觉 Transformer 学习,构建一个比 MobileViT 更好更快的卷积网络

    ​  前言 本文主要探究了轻量模型的设计.通过使用 Vision Transformer 的优势来改进卷积网络,从而获得更好的性能. 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟 ...

  3. Sql入门学习——关系范式

    --------关系 --------范式 一.三种关系 1.一对一关系 关系数据库中,第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关. 2.一 ...

  4. 【转载】 迁移学习(Transfer learning),多任务学习(Multitask learning)和端到端学习(End-to-end deep learning)

    --------------------- 作者:bestrivern 来源:CSDN 原文:https://blog.csdn.net/bestrivern/article/details/8700 ...

  5. Transformer 学习

    https://www.bilibili.com/video/av65521101/?p=98 (李宏毅,视频讲解,可以作为基础入门) 课件:https://pan.baidu.com/s/1Shjn ...

  6. ICCV2021 | Vision Transformer中相对位置编码的反思与改进

    ​前言  在计算机视觉中,相对位置编码的有效性还没有得到很好的研究,甚至仍然存在争议,本文分析了相对位置编码中的几个关键因素,提出了一种新的针对2D图像的相对位置编码方法,称为图像RPE(IRPE). ...

  7. ICCV2021 | PnP-DETR:用Transformer进行高效的视觉分析

    ​  前言  DETR首创了使用transformer解决视觉任务的方法,它直接将图像特征图转化为目标检测结果.尽管很有效,但由于在某些区域(如背景)上进行冗余计算,输入完整的feature maps ...

  8. ML2021 | (腾讯)PatrickStar:通过基于块的内存管理实现预训练模型的并行训练

    ​  前言  目前比较常见的并行训练是数据并行,这是基于模型能够在一个GPU上存储的前提,而当这个前提无法满足时,则需要将模型放在多个GPU上.现有的一些模型并行方案仍存在许多问题,本文提出了一种名为 ...

  9. 计算机视觉--CV技术指南文章汇总

    前言  本文汇总了过去本公众号原创的.国外博客翻译的.从其它公众号转载的.从知乎转载的等一些比较重要的文章,并按照论文分享.技术总结三个方面进行了一个简单分类.点击每篇文章标题可阅读详细内容 欢迎关注 ...

随机推荐

  1. Vite插件开发纪实:vite-plugin-monitor(下)

    前言 上一篇介绍了Vite启动,HMR等时间的获取. 但各阶段详细的耗时信息,只能通过debug的日志获取 本文就实现一下debug日志的拦截 插件效果预览 --debug做了什么 项目启动指令 vi ...

  2. 这几种Java异常处理方法,你会吗?

    摘要:我们在软件开发的过程中,任何语言的开发过程中都离不开异常处理. 本文分享自华为云社区<Java异常处理学习总结>,作者: zekelove . 我们在软件开发的过程中,任何语言的开发 ...

  3. SSM框架项目的mvc拦截器

    为了防止用户在不登录的情况下通过并接请求直接访问系统,我们需要通过session和拦截器来防止这样的情况. 拦截器的配置: 为拦截器建立一个包:interceptor,并在包里建立 LoginInte ...

  4. python中的load、loads实现反序列化

    load与loads 简介: 在python自动化中,我们传递一些参数是需要从文件中读取过来的,读取过来的字典并非python对象数据类型而是string类型. 这样在我们传递参数的时候就会出现格式不 ...

  5. T-SQL——关于XML类型

    目录 0. 将结果集转化为XML格式 1. 列值拼接为字符串 2. 字符串转换为列值 3. 一些说明 参考 志铭-2021年10月23日 10:43:21 0. 将结果集转化为XML格式 测试数据 I ...

  6. CentOS 文本编辑器

    目录 1.Nano 1.1.基础命令 1.2.快捷操作 1.3.配置文件 2.Vim 2.1.四大模式 2.2.基础命令 2.3.标准操作 2.4.高级操作 2.5.配置文件 Linux 终端的文本编 ...

  7. Beta阶段第一次会议

    Beta阶段第一次例会 时间:2020.5.16 完成工作 姓名 完成任务 难度 完成度 lm 1.修订网页端信息编辑bug2.修订网页端登录bug(提前完成,相关issue已关闭) 中 100% x ...

  8. Noip模拟32(再度翻车) 2021.8.7

    T1 Smooth 很水的一道题...可是最傻    的是考场上居然没有想到用优先队列优化... 上来开题看到这个,最一开始想,这题能用模拟短除法,再一想太慢了,就想着优化 偏偏想到线性筛然后试别的素 ...

  9. 2021.10.18考试总结[NOIP模拟76]

    T1 洛希极限 不难发现每个点肯定是被它上一行或上一列的点转移.可以预处理出每个点上一行,上一列最远的能转移到它的点,然后单调队列优化. 预处理稍显ex.可以用并查集维护一个链表,记录当前点之后第一个 ...

  10. 热身训练2 GCD

    题目描述 简要题意:  n个数字,a1,a2,...,an m次询问(l,r),每次询问需回答 1.gcd(al,al+1,al+2,...,ar);2.gcd(ax,ax+1,ax+2,...,ay ...