D-PAttNet: 利用动态分块注意模型进行面部动作单元检测(二)

举报
ForEver207 发表于 2020/06/20 19:53:52 2020/06/20
【摘要】 在上一篇文章中(FACS3D-Net: 基于三维卷积时空表示学习的面部动作单元检测(一)),我们介绍了人脸面部动作单元的相关知识和我们在EB+数据库上的最新工作,在该工作的基础上,我们进行拓展,提出了D-PAttNet: 利用动态分块注意模型进行面部动作单元检测。D-PAttNet在BP4D公开数据集上取得了最佳的实验性能。


       在上一篇文章中(FACS3D-Net: 基于三维卷积时空表示学习的面部动作单元检测(一)),我们介绍了人脸面部动作单元的相关知识和我们在EB+数据库上的最新工作,在该工作的基础上,我们进行拓展,提出了D-PAttNet: 利用动态分块注意模型进行面部动作单元检测。D-PAttNet在BP4D公开数据集上取得了最佳的实验性能。


        前面文章中介绍的FACS3D-Net虽然取得了很好的模型性能,但是它的输入是126帧,对于一些AU,会在更短时间内发生,所以当输入序列较长时模型可能会降低这部分AU的感知能力。另外,FACS3D-Net没有考虑到AU的发生具有区域性,因为AU反映的是局部肌肉块,具有区域性,而FACS3D-Net是一次性输入整个人脸,没有考虑区域性。从这两点出发我们提出了D-PAttNet,考虑了AU的区域时空建模,另外我们也提出了一个基于Sigmoid的注意力机制,在NLP等传统任务中,大多数注意力机制是基于softmax的,但是我们在这里提出了基于Sigmoid的注意力,后面我们也会对两者进行对比。

        

        图1是D-PAttNet的结构,首先是(a)预处理部分,(b)然后将对齐归一化后的人脸分块,如图2中这9个块,这些块之间有重合,避免了把个别AU割裂开。然后将每一个人脸块输入2D和3D里面进行时空信息建模。

image.png

图1 D-PAttNet的结构


image.png

图2 人脸分块


        在得到每一块的时空表示之后,我们紧接着进行不同人脸块的加权,首先将这些人脸块的时空表示输入一个全连接层,得到其隐层表示hp,再将hp与一个上下文向量cf相乘,再使用Sigmoid的注意力得到alpha p,最后将权重alpha p和最初的时空信息ep相乘,得到加权后的时空信息v。这里的上下文向量cf可以看作是模型在训练过程中,每一个人脸块对于特定AU的检测所提供的信息量,这是这个cf的物理含义。通过衡量hp与每个局部块的上下文特征向量cf之间的相似度来确定各个人脸块的重要性。这里的上下文向量cf可以看作是模型在训练过程中,每一个人脸块对于特定AU的检测所提供的信息量。然后我们将这个重要性归一化到0,1之间,采用Sigmoid函数进行归一化,最后一步就是将归一化后的权重和最初的时空信息ep相乘,得到加权后的时空信息v这块关于这个alpha p我们用到的是基于Sigmoid的注意力激活函数,而不是通常用的Softmax,这是有原因的,后面我们会专门对比这块。

image.png



        最后一步就是将v通过全连接层和激活函数进行AU的检测:

image.png

        D-PAttNet模型在人脸动作单元检测数据库BP4D上进行验证,这是一个非常著名的AU检测数据库,大家都用这个数据库做对比。需要说明的是,在FACS3D-Net里面我们一次性将整个视频段都输了进去,但是在这里我们一次性只输进去20帧,比如要预测第20帧的AU,那将前20帧输入3D卷积中,将第20帧输入2D卷积中。

        1. 实验数据库

        BP4D:包含41名受试者(23 名女性和18 名男性)视频。在BP4D中,由一名实验组织者通过精心设计的任务来激发被试者各种各样的自发情绪,每位受试者需要执行八项任务。数据库总共包含328 条大约20秒的标注视频,累计约140,000 个有效的帧。

        2. 实验设置 

            a. 3D卷积参数: (32@5*5*5, 64@5*5*5, 64@5*5*5)+60 

            b. 2D卷积参数与3D卷积参数一致 

            c. 输入模型中的序列长度为T=20帧 

            d. 三折交叉验证

        3. 实验结果(与SOTA比较)

image.png


        这是模型最终的F1得分,最下面四行是D-PAttNet的各种变种,Only 3D-PAttNet是指将DPAttNet中的2D部分去掉,Only 2D-PAttNet则是将DPAttNet中的3D去掉,最后一行DPAttNet上面带了一个tt标志,是指模型在进行Au检测时,最后的输出是Au出现的概率,正常情况下我们默认这个概率大于0.5,则认为AU出现了,但实际上,这个0.5只是人类的先验假设,模型并不知道,即便是0.99的概率模型都会进行误差反向传播的。因此我们采用了阈值调整策略,根据训练集来调整到底这个Au出现与否的阈值应该选多少合适。上面这些对比的结果是比较新的结果,DPAttNet以64.7的F1得分取得最高值,这个数值目前也是这个数据库上应该是最高的值。而当去掉D-PAttNet中的2D部分,这个only 3D的F1仅仅是56.6比较低,这也比较好理解,因为去掉2D之后,一次性输入20张人脸,但是没有告诉模型要预测那一张,模型只学到了20张人脸的整体信息,没有具体到哪一张上,所以性能不好。

image.png

        在AUC指标对比中,DPAttNet也获得了最高得分。

image.png


        这两个表对比了前面提到的,基于Sigmoid和基于Softmax的注意力机制对模型性能的影响。因为传统的注意力机制都是基于Softmax的,Softmax的注意力权重在这里不太适合,因为AU是具有协同性的,有时候对于一个AU,可能好几个面部肌肉都会运动,此时这几个面部块的权重都很重要,但是Softmax的注意力权重就好像要强行给人脸块排个序一样,不会出现两个人脸块同等重要,因此说Softmax在这不太适合,从实验结果中我们也可以看到Softmax的注意力不如Sigmoid的注意力。


image.png



        我们对Softmax和Sigmoid的注意力权重也进行了可视化,上面是Sigmoid的权重,下面是Softmax的权重,颜色越暗代表权重越大,代表了对于特定AU,不同人脸块的权重。可以看到Softmax对于AU几乎没注意到什么信息。另外在第一行中,C图这个Only3D-PAttNet对于每一个AU几乎是关注到了所有面部区域,但无差别的加权实际是没有意义的。而A和E比较相近,但仔细分析一些AU的话,还是A的权重更合理,所以综合对比下来A的权重加的最好的。


        综上,D-PAttNet在AU检测任务中达到了state-of-the-art性能,说明将人脸分块进行空间和时间信息的学习对于人脸分析具有很重要的作用,而且D-PAttNet是端到端建模,避免了动态信息的浪费。




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。