张爱梅,徐 杨
贵州大学 大数据与信息工程学院,贵阳 550025
面部表情是传达人们心理活动、思想状态最自然、最直接的方式,因此,人脸表情识别(Facial Expression Recognition,FER)具有极大的应用价值,可在许多领域实现广泛应用,例如,心理状态检测、安防智能监控、商业营销推荐、临床医疗检测等。眉毛、眼睛、嘴等的细微变化可能导致截然不同的分类结果使得不同类表情间差异小,另外,受姿态、背景、照明等因素影响,使得同类表情间差异大,人脸表情识别任务仍然极具挑战性。
现有研究大多在给定显著特征和额外部件标注的情况下,使用卷积层、最大或平均池化层以及全连接层的传统卷积神经网络(Convolutional Neural Network,CNN)实现面部表情分类。这些方法忽略了层间部分特征交互作用与人脸表情特征学习相互关联的事实,限制了模型的学习能力。本文添加分层双线性池化层来集成多个跨层双线性特征,学习面部表情分类任务中的细微差异,这有助于显著提高面部表情识别能力。此外,面部表情识别需要特别关注带有区分情感的重要信息的眼睛、嘴、眉毛等特定位置的细微变化。因此,可以借鉴人脑处理信息的方式,特别关注这些关键位置以增强特征表示能力。为此,引入注意力机制,为卷积层输出的通道特征图分配不同的权重,实现通道特征图的重新校正,提高网络的分类能力。
近年来,卷积神经网络在图像特征提取方面显示出显著优势,随着网络深度的增加,它可以提取图像的高级语义信息。文献[1]嵌入注意力模型,确定感兴趣区域来推断出情感标签。注意力机制是面部表情识别时,在关键特征中定位关键点并建立关键点的集合关系最直接、最有效的方法。目前几种有竞争力的视觉注意力方法如下:SE[2]是将通道注意力整合到卷积模块中的代表性方法,为各种深层CNN 架构带来了明显的性能提升。CBAM[3]作为SE-Net的扩展,CBAM沿通道维和空间维结合了全局平均池化和最大池化,但这对于全局上下文建模还不够有效。GSoP-Net[4]引入了从低层到高层的全局二阶池化,网络性能优于大部分一阶网络,但模型复杂度也更高。ECA[5]为无需降维的本地跨通道交互策略,该模块包含少量参数,同时带来了具竞争力的性能。
特征提取是面部表情识别过程中的关键步骤。一些细微、小分辨率的面部表情需要深层特征以增强识别能力。双线性卷积神经网络(B-CNN)[6]是第一个在细粒度识别任务上可以端到端训练的协方差池化网络模型。然而,B-CNN无法利用不同卷积层中固有的信息,且采用两种不同的CNN 模型致使计算和存储成本更高。紧凑型双线性池化(CBP)[7]有与完整双线性表示形式相同的判别力,且降低了维度。全局高斯分布嵌入网络(G2DeNet)[8]可以捕获具有区别性的一阶和二阶图像特征,是最早以端到端的方式将参数概率分布嵌入到深度CNN的工作之一。迭代矩阵平方根归一化协方差池化(iSQRT-COV)[9]用于全局协方差池化网络的快速端到端训练,适合在GPU 上并行实现。分层双线性池化(HBP)[10]与 B-CNN 相比,HBP 不需要边界框注释也能获得更好的结果,生成改进的图像表示。
为了更好地定位面部表情显著的局部区域变化,本文提出一种注意力分层双线性池化残差网络(Attention Hierarchical Bilinear Pooling Residual Network,AHBPRN),在分层双线性池化残差网络中嵌入有效的通道注意力机制对潜在空间建模。本文的主要贡献包括:
(1)在面部表情识别中,分层双线性池化用于捕获层间部分特征关系,对图像的层间部分特征交互信息进行端到端池化,更适合捕获精细的面部表情图像之间的细微差异。
(2)本文的网络添加了有效的通道注意力模块来学习特征图的权重度量,从而可以自主识别和增强重要的神经元单元。并在不同的网络上进行了一组实验,以说明添加的注意力机制的有效性。实验结果如表1所示。
(3)模型在两个公共数据集FER-2013 和CK+上实现了具有竞争力的性能。
随着我国高速公路工程行业的迅猛发展,在高速公路施工中科学、合理地运用预应力管桩的施工技术,不但可以为施工企业节约施工成本,使企业获得更多的社会与经济效益,而且可以确保高速公路桥梁工程的稳固性和整体安全性,从而保证工程的施工质量。
由于面部表情数据量较少,首先使用随机水平翻转、随机剪裁等数据增强方法来扩充数据量,提高模型的泛化能力。再将归一化的面部表情图像输入到残差网络中,来自不同卷积层的特征通过独立的线性映射被扩展到高维空间。为了关注某些特定位置的重要贡献,在卷积层之后生成注意力特征图,使网络能够提高对可利用区域特征的敏感性。在提取注意力特征之后,本文借鉴了文献[11]中分层双线性池化的概念,使用外积将来自不同卷积层的元素相乘来捕获层间局部特征交互。该模型将有效的通道注意力嵌入到基于分层双线性池化的残差网络中,以端到端的方式学习。网络模型如图1所示。
假设面部表情图像被CNN滤波后卷积层的输出特征图X∈ℝh×w×c,Y∈ℝh×w×c,Z∈ℝh×w×c,各自包含一组所有通道的二维特征图,其中w、h和c分别是宽度、高度和通道数。为了根据需求动态地关注最有用的部分,引入有效的通道注意力[5]自动获取权重,来增强特征矩阵X、Y、Z的表示能力。以卷积特征图X为例,有效的通道注意力模块的结构如图2所示,给定通过全局平均池化(GAP)获得的聚合特征,通过考虑每个通道及其k个邻居来捕获本地跨通道交互,内核大小k代表本地跨通道交互的覆盖范围(即有多少邻居参与一个通道的注意力预测)。
图2的详细步骤如下:首先,将卷积特征图X,X∈ℝh×w×c作为原始输入,在不降低维数的情下,进行通道级全局平均池化,得到大小为1×1×c的特征向量。为了保证捕获本地跨通道交互的效率和有效性,使用带状矩阵来学习通道注意力。当所有通道共享相同的学习参数时,这种策略可以通过内核大小为k的快速一维卷积有效实现。然后,执行Sigmoid 函数以学习有效的通道注意力,生成通道注意力权重Ax,Ax∈ℝ1×1×c。最后,将注意力权重Ax与原特征图X进行对应元素相乘(element-wise multiplication),得到融合后的注意力特征图X˜,X˜ ∈ ℝh×w×c,用X˜替换原始特征图X。
图1 AHBPRN的表情识别网络模型图
图2 有效的通道注意力模块
因此,图1中通道注意力模块可由式(1)、(2)表示:
其中,Ax∈ ℝ1×1×c,Ay∈ ℝ1×1×c,Az∈ ℝ1×1×c为生成的有效通道注意力权重。C1D表示一维卷积,GAP为全局平均池化函数,k表示一维卷积的卷积核大小,σ表示Sigmod激活函数。
式(1)中交互作用的覆盖范围k与输出通道数C成正比。换句话说,k与C之间存在映射φ:C=φ(k)=γ×k-b。众所周知,通常将输出通道数C设置为2 的幂。因此,扩展线性函数到非线性:C=φ(k)=2γ×k-b。所以,在给定输出通道数C的情况下,卷积核大小k可以通过式(3)自适应地确定:
分层双线性池化[10]可以对局部成对特征交互进行建模,已被证明是解决细粒度识别任务的强大工具,本文提出了面部表情细粒度识别任务背景下探索它们的强烈动机。为了捕获更好的特征相关性,本文对人脸表情图像部分属性的层间交互进行建模。将来自不同卷积层的特征通过逐元素乘法进行集成,以捕获更多中间卷积层特征。
分层双线性池化模型是基于分解双线性池化(FBP)[11]模型构建的。由式(2)可知,输出注意力特征图为˜∈ℝh×w×c,高度为h,宽度为w,通道数为c。FBP模型由每个空间位置的以下低阶外积运算定义:
通过在其他中间卷积层内进行层间特征交互来改善FBP,利用与来自中间卷积层的补充信息的部分相关性,生成了改进的图像表示。对于每个空间位置,基于注意力特征图的分层双线性池化模型的输出矢量O∈ ℝd′(本文的面部表情分7类,d′=7)定义如式(5):
提出的模型在Ubuntu18.04 LTS 系统、深度学习框架PyTorch1.1.0 上使用具有11 GB 显存的NVIDIA GeForce GTX 1080Ti实现。本章将在两个公共人脸表情数据集上对提出的网络模型进行实验,并通过与之前的工作进行比较来展示性能。
本文选择数据集FER-2013[12]和CK+[13]评估所提出的注意力分层双线性池化残差网络,数据集示例图像如图3所示。FER-2013是使用谷歌图像搜索API创建的,是一个大规模的面部表情数据集,包含了27 809张训练图像,3 589张验证图像和3 589张测试图像,每种情绪的图像数量的数据分布如图4所示,可以看出,数据分布非常不均匀。CK+数据集由来自不同种族群体的18~50岁的123 位受试者的593 个图像序列组成,选择带有标记的327个序列,提取每个序列带有峰值信息的最后一帧。
图3 FER-2013和CK+数据集示例图像
图4 FER-2013每种情绪数据分布
本文的数据扩充遵循常用的水平翻转、随机剪裁等操作。训练过程中批量大小设置为32,训练周期为80,初始学习率为0.1,动量为0.9,权重衰减为1×10−5。本文使用经过预训练的图像分类模型ResNet-50[14]来构建网络,残差网络最后一层卷积层的输出特征维数为512,从原始的ResNet-50中删除了全连接层并插入了所有本文框架中的组件。首先训练新添加的层,然后微调整个网络以更新所有层中的参数。
表1用几个当前的经典CNN架构AlexNet[15]、VGG-16[16]、ResNet-18[14]、ResNet-50[14]作为提出方法的骨干网络,分别在FER-2013 和CK+数据集上进行了评估。表1 中,Original 是指将数据输入到不同的标准网络进行训练得到的结果,Attention 是在标准网络嵌入有效的通道注意力以后的结果,AHBP是指注意力分层双线性池化。
表1 FER-2013和CK+上各种标准网络结构的识别率对比%
从表1可以看出:
(1)本文提出的注意力分层双线性池化方法在ResNet-50 上获得了最好的分类结果,分别为73.84%、98.79%。与文献[10]中,在VGG-16 上构建池化模型相比,本文选取ResNet-50作为模型的特征函数部分,能够获得更好的分类结果,这是由于残差结构具有更好的层间相关性。
(2)嵌入有效的通道注意力后,FER-2013数据集上的识别率提高了2~5个百分点,CK+数据集上的识别率提高了1~4 个百分点。证明注意力块以略微的额外计算成本为面部表情细粒度识别任务带来了性能上的显著改善。
(3)与未采用分层双线性池化的网络相比,FER-2013 和CK+上的识别率分别提高了2~8 个百分点和0.8~4个百分点,这说明了层间特征交互的有效性。
根据表1 的实验结果选择ResNet-50 作为基本网络,表2中考虑分层双线性池化不同层的组合。结果表明,relu4_0×relu4_1+relu4_0×relu4_2+relu4_1×relu4_2表现出的性能最好,因为与较浅的层相比,它们包含更多的部分语义信息。因此本文在接下来的实验中专注于relu4_0、relu4_1和relu4_2层的交互。
表2 FER-2013数据集上的定量分析结果
本节评估了在本文提出的网络框架下,使用不同池化方法进行面部表情识别的效果,实验结果如图5 所示。在本次实验中,根据表1 中的实验对比结果,选择在基本网络ResNet-50中嵌入有效的通道注意力。根据表2中的实验对比结果,所提网络模型中分层双线性池化(HBP)选择的是relu4_0×relu4_1+relu4_0×relu4_2+relu4_1×relu4_2 的组合。图5 显示了本文提出的方法与分别使用全局平均池化(GAvP)方法和双线性池化方法——双线性卷积神经网络(B-CNN)和紧凑双线性池化(CBP)时,在人脸表情数据集FER-2013 和CK+上识别率的比较结果。从图5 可以看出:(1)基于双线性池化的识别率高于基于平均池化的识别率,原因主要在于比起全局平均池化,双线性池化方法能通过特征融合增强识别能力;(2)相较于另外三种池化方法,所提方法在FER-2013 和CK+数据集上识别率分别有0.5~7 个百分点,1~4 个百分点的提升。结果表明,本文的模型比类似网络[6-7]的对应的模型具有明显的优势。
图5 AHBPRN与其他池化方法对比
为了验证整体算法的可靠性,本文所提方法与不同方法之间每个类别的识别率对比,如表3 所示,为了简化说明,本文方法表示为AHBPRN。可以看出,高兴和惊讶的识别率明显高于其他,但害怕和生气的识别率却略低,因为害怕、生气、难过和厌恶有某些相似之处,在现实生活中,人们也很难区分这四种表情。在FER-2013 数据集上与文献[17-20]对比,本文方法的平均识别率比Khemakhem 等人[17]提出的增强预处理阶段的卷积神经网络高出3.25 个百分点,比Liu 等人[18]提出的将课程学习策略应用于表情识别的训练阶段的平均识别率高出1.73 个百分点。在CK+数据集上与文献[18-19,21-22]对比,文献[19,21]与所提方法一样也是在卷积层嵌入注意力块的情况下进行表情识别,所提方法相较于它们也具有较优的结果。可以看出,与近年来其他参考文献的识别率相比,本文的算法达到了具有竞争力的结果,这证明了该方法的有效性。可以得出结论,这源于基于 ResNet-50的分层双线性池化卷积神经网络和用于增强特征矩阵表示能力的通道注意力的有效性。
本文提出了一种新的注意力分层双线性池化残差网络用于人脸表情识别,可以学习具有较强分辨力的面部表情特征。由于面部特征点的细微变化可能导致截然不同的分类结果,首先利用有效的通道注意力模块来学习权重矩阵,充分利用某些特定位置的重要详细信息,输入到可捕获层间部分特征关系的分层双线性池化网络,以端到端的方式学习更具判别性的面部图像表示。最后,在两个公开的人脸表情数据集FER-2013 和CK+上设计了多个实验从多个方面评估了模型,结果表明,注意力分层双线性池化模块捕获的强大鉴别特征可以有效地提高人脸表情的识别率。
将来,进一步考虑如何有效地融合更多的层特征以获得多尺度的部分表示。在整合一些弱监督方案以主动的方式选择更好的层进行特征交互方面,进行扩展研究。并且,也可以将本文所提模型泛化到其他任务中,例如其他细粒度分类任务或者人脸性别、年龄识别任务等。
表3 与FER-2013和CK+上其他参考文献的识别率对比 %