Do Deep Neural Networks Learn Facial Action Units When Doing Expression Recognition?阅读笔记
前言
这是第一次写博客(本人还只是个入门小白),主要是自己学习看文章时做的小笔记吧,方便以后自己回顾和整理,如有理解错误的地方,还请指出。文章有少量内容有所省略,如果想要深入学习本篇论文,最好的方法还是去阅读原文,本文只是一个简单的辅助。
简单说一些这篇论文的学习重点:理解CNN在做表情识别时究竟提取了什么样的高级特征,学会可视化的理论及其方法。
这儿给出论文地址:Do Deep Neural Networks Learn Facial Action Units When Doing Expression Recognition?
Abstract
尽管近年来,卷积神经网络(CNN)被选为基于外观的分类器,但研究卷积神经网络(cnn)能在多大程度上提高公认的表情识别数据集上的性能的工作相对较少,更重要的是,研究卷积神经网络实际上学习了什么。 在这项工作中,我们不仅展示了CNN可以实现较强的性能,而且我们还引入了一种方法来破译哪些面部区域影响了CNN的预测。 首先,我们在面部表情数据上训练一个zero-bias CNN,据我们所知,在两个表情识别数据集上取得了最先进的性能: 扩展的Cohn-Kanade (CK+)数据集 和 多伦多面部数据集(TFD) 。然后,我们通过 可视化空间模式 来定性分析网络,大致操作就是最大限度地激发了卷积层中的不同神经元,并通过可视化结果展示了它们与 面部动作单元(FAUs) 的相似性。最后,我们使用CK+数据集提供的FAU labels来验证我们在滤波器可视化中观察到的FAU确实与受试者的面部运动一致。
总结来说,该文章证明了CNN可用于表情识别的任务,并且可以取得不错的结果。同时,对深层的卷积特征进行可视化可以发现网络提取到的高级特征与FAU有着对应关系。
Introduction
面部表情为人类向他人传达自己的情绪状态提供了一种自然而简洁的方式。因此,设计准确的面部表情识别算法对人工智能交互计算机系统的发展至关重要。在这一领域的广泛研究发现,只有一小部分区域会随着人类表情的变化而变化,这些区域位于受试者的眼睛、鼻子和嘴巴周围。在1中,Paul Ekman提出了 面部动作编码系统(FACS) ,该系统枚举了这些区域,并描述了每个面部表情如何被描述为多个动作单元(AUs)的组合,每个动作单元对应于面部的特定肌肉群。然而,事实证明,让电脑准确地学习面部传达情感的部位并非易事。
面部运动编码系统 (FACS,Facial Action Coding System)从人脸解剖学的角度,定义了44个面部动作单元(Action Unit,简称AU)用于描述人脸局部区域的肌肉运动,如下图所示,AU9表示“皱鼻”,AU12表示“嘴角拉伸”。面部动作单元能够客观、精确、细粒度地描述人脸表情,各种动作单元之间可以自由组合,对应不同的表情。如“AU4(降低眉毛)+AU5(上眼睑上升)+AU24(嘴唇相互按压)”这一组合对应“愤怒”这一情绪状态。
以往的面部表情识别工作可以分为两大类: 基于AU/基于规则的方法 和 基于外观的方法 。基于AU的方法将明确检测个体AU的存在,然后根据《Emotional facial action coding system》中最初由Friesen和Ekman提出的组合对一个人的情绪进行分类。不幸的是,每个AU探测器都需要精心的手工设计来确保良好的性能。另一方面,基于外貌的方法根据人的一般面部形状和纹理来模拟人的表情。
在过去的几年中,卷积神经网络(CNNs)作为一种基于外观的分类器的兴起,极大地促进了计算机视觉中许多成熟的问题的发展。像物体识别、物体检测和人脸识别这样的任务在几个公认的数据集测试中都有了巨大的性能提升。不幸的是,其他任务,如面部表情识别,并没有获得同样程度的性能提升。关于CNN能在公认的表情识别数据库上提供多大的帮助,目前还没有做什么工作。
在本文中,我们寻求以下问题的答案: CNN能否提高表情识别数据集/基线的性能,以及它们学习了什么? 我们建议在已建立的面部表情数据集上训练CNN,然后通过可视化网络中的各个过滤器来分析它们学习到的内容。在这项工作中,我们应用了Zeiler和Fergus和Springenberg等人提出的 可视化技术 ,其中网络中的单个神经元被激发,并使用一个 反卷积网络 在像素空间中显示它们相应的空间模式。当我们将这些有区别的空间模式可视化时,我们发现许多滤波器是由面部对应的面部动作单元(FAUs)激发的。图1显示了这些空间模式的子集。
图1 在扩展Cohn-Kanade (CK+)数据集上训练的网络的第三个卷积层中激活五个选定滤波器的面部区域的可视化。每一行对应于conv3层中的一个滤波器,我们显示前5张图像的空间模式。
因此,本文的主要贡献如下:(即本文重点研究内容,以下内容都是围绕这两点)
- 我们发现CNN经过表情识别训练后的识别任务学习特征与Ekman提出的FAUs强烈对应。我们首先通过可视化在我们的网络的卷积层中最大程度激发不同滤波器的空间模式来证明这一结果,然后使用ground truth FAU标签来验证在过滤器可视化中观察到的FAU与受试者的面部运动一致。
- 我们还表明,我们的CNN模型基于最初提出的工作,据我们所知,可以在扩展的Cohn-Kanade (CK+)数据集和Toronto Face dataset (TFD)上实现最先进的性能。
Related Work
在大多数面部表情识别系统中,主机器与传统的机器学习管道非常匹配。更具体地说,人脸图像被传递给分类器,该分类器试图将其分类为几个(通常为7)表情类之一:愤怒,2、厌恶,3、恐惧,4、中性的,5、快乐,6、难过的时候,和7、惊喜。在大多数情况下,在传递给分类器之前,人脸图像被预处理并交给特征提取器。直到最近,大多数基于外观的表情识别技术都依赖于手工特征,特别是Gabor小波、Haar特征和LBP特征,以使不同表情类的表示更具甄别性。
一段时间以来,基于手工制作特征的系统能够在公认的表情识别数据集上取得令人印象深刻的结果,如日本女性面部表情(JAFFE)数据库,扩展的Cohn-Kanade (CK+)数据集和Multi-PIE数据集。然而,最近深度神经网络的成功使得许多研究人员开始探索从数据中学习的特征表示。毫不奇怪,几乎所有的方法都使用了某种形式的无监督的前训练/学习来初始化模型。我们假设,这可能是因为标签数据的缺乏,使作者无法训练一个没有严重过拟合的完全监督模型。
在《Facial expression recognition via a boosted deep belief network》中,作者训练了一个多层增强深度置信网络(BDBN),并在CK+和JAFFE数据集上取得了最先进的精度。同时,在《Disentangling factors of variation for facial expression recognition》中,作者使用卷积收缩自动编码器(CAE)作为他们的底层无监督模型。然后,他们执行了一种被称为收缩判别分析(CDA)的半监督编码功能,以从非监督表示中分离出判别表达式特征。
一些基于无监督深度学习的研究也试图分析FAU和学习特征表示之间的关系。在[15,16]中,作者学习了一种以K-means为低级特征的基于patch的滤波器组。然后利用这些特征选择对应于特定FAU接受域的接受域,并将其传递给多层受限玻尔兹曼机器(RBMs)进行分类。使用图像特征和表达标签之间的互信息准则选择FAU接受域。Susskind等人的早期研究表明,第一层的特征是经过训练生成面部表情图像的深度信念网络,似乎学习了对脸部部分敏感的滤波器。我们进行了类似的分析,除了我们使用CNN作为我们的基础模型,我们可视化的空间模式,刺激网络中的高级神经元。
(中间有省略)
相比之下,我们的工作是对单一图像的表情识别,并将重点分析网络学习到的特征。因此,我们不仅将证明CNN对现有表情分类基线的有效性,而且我们还将定性地表明,该网络能够学习人脸图像中对应于面部动作单元(FAUs)的空间模式。(此段是本文作者所做研究重点,且与上述其他相关研究有所不同)
Our Approach
Network Architecture
在本文的所有实验中,我们使用了一个经典的前馈卷积神经网络。我们使用的网络,如图2所示,由3个卷积层组成,分别带有64、128和256个滤波器,滤波器大小为5x5,然后是ReLU(整流线性单元)激活函数。最大池化层放置在前两个卷积层之后,而 象限池化层2 应用在第三个卷积层之后。象限池化层之后是一个包含300个隐藏单元的全连接层,最后是一个用于分类的softmax层。softmax层包含6-8个输出,对应于训练集中表情的数量。
图2 网络架构——我们的网络由3个卷积层组成,分别包含64、128和256个滤波器,每个滤波器的尺寸为5x5,然后是ReLU(整流线性单元)激活函数。我们在前两个卷积层之后添加2x2最大池化层,在第三个卷积层之后添加象限池化层。3个卷积层之后是一个包含300个隐藏单位的全连接层和一个softmax层。
象限池化层——其实是一种非常简单的池化形式,具体来说,我们将特征图划分为四个大小相等的象限,并计算它们在每个象限中的总和。这将产生每个象限的简化(K维)表示,用于分类的共有4K个特征。
Network Training
在训练我们的网络时,我们从头开始使用随机梯度下降进行训练, batch size为64 , momentum设置为0.9 , weight decay为1e-5 。我们使用 0.01的恒定学习率,并且不使用任何形式的退火。每个层的参数都是随机初始化的,通过绘制一个具有零均值和标准差的高斯分布( σ = k N F A N − I N \sigma = \dfrac{k}{N_{FAN-IN}} σ=NFAN−INk),其中 N F A N − I N N_{FAN-IN} <