基于改进ResNet和损失函数的表情识别

2022-04-27 12:24谢银成李聪聪
自动化与仪表 2022年4期
关键词:类别注意力数量

谢银成,黎 曦,李 天,李聪聪

(武汉工程大学 电气信息学院,武汉 430205)

得益于计算机图像识别技术在各个领域的应用和发展,人脸表情识别技术也得到较大的进步。近年来,人脸表情识别技术在智能驾驶、远程教育、智能安防、机器人制造、谎言检测和健康管理等领域得到了大量关注,其用途日益广泛。传统识别方法需要人工设计特征提取器,可以提取的特征有LBP[1]、PCA[2]等,但传统识别方法的鲁棒性和泛化能力较差,尤其是在复杂多变的真实环境中,其识别效果极不稳定。深度学习方法不需要人工提取特征,并且在大数据集训练过程中能够提取到更深层次、更抽象的表情特征信息。由于深度学习方法的优越性,近年来在表情识别研究中常应用深度学习的方法[3]。

文献[4]提出VGGNet 模型,运用多个小尺寸的卷积核来代替大卷积核,可以有效降低参数量,加深网络深度,提升识别精度。文献[5]提出ResNet 模型,通过加入残差单元的跳跃连接有效解决了由于网络加深造成的梯度消失或爆炸问题。在经典网络的基础上,文献[6]提出结合注意力机制和迁移学习的人脸表情识别方法,嵌入空间增强注意力,并在迁移学习中加入距离损失函数,缩小目标域和源域的差异。文献[7]提出改进VGGNet 和损失函数,提升网络的特征提取能力,并减弱了误标注样本对分类性能的影响。文献[8]融合金字塔卷积模块、注意力模块,更好地提取图像的细节特征,适用于精细的人脸表情识别。以上网络虽然考虑了网络的特征提取能力,但未考虑数据集样本类别的不均衡问题,会导致模型在少样本类别上分类效果较差。

1 本文方法

1.1 CBAM 注意力模块

注意力机制是为学习到的图像特征设置权重分布,根据图像特征对任务的不同贡献,将学习的权重分布作用在原图像特征上,增强关键特征的权重,减少无效特征的权重。CBAM 注意力机制包括通道注意力机制和空间注意力机制,由它们串联而成[9]。

通道注意力的具体操作为输入大小为W×H×C的特征图F(W 为特征图的长、H 为特征图的高、C为通道数),经过并行的全局平均池化和全局最大池化将特征图变化为1×1×C 的大小,然后经过共享权值的多层感知机(Shared MLP)。为降低网络参数,隐藏层设置为C/r 个神经元,其中r 为缩放因子,将多层感知机处理之后的特征相加并采用Sigmoid 激活函数映射,得到通道权重Mc与输入特征F 相乘,完成通道注意力的操作处理,如图1所示,通道注意力的公式为

图1 通道注意力模块Fig.1 Channel attention module

式中:σ 为Sigmoid 激活函数;MLP 为共享参数的感知器;GAP 为全局平均池化;GMP 为全局最大池化;⊗为逐元素相乘。

空间注意力的具体操作为输入为通过通道注意力得到的特征F′,分别经过全局平均池化和全局最大池化得到H×W×1 的特征,将它们拼接在一起形成H×W×2 的特征,经过7×7 的卷积操作将通道数变为1,再经过Sigmoid 激活函数得到空间权重系数Ms,得到的空间权重Ms与输入特征F′相乘,完成空间注意力的操作处理,如图2所示,空间注意力的公式为

图2 空间注意力模块Fig.2 Spatial attention module

式中:σ 为Sigmoid 激活函数;conv 为卷积核为7×7的卷积操作;GAP 为全局平均池化;GMP 为全局最大池化;⊗为逐元素相乘。

1.2 嵌入CBAM 的ResNet50 识别模型

ResNet 网络中提出了残差模块,可以有效避免CNN 网络加深带来的网络梯度消失和梯度爆炸问题[5]。因此本文选择ResNet50 作为基础网络,针对特征提取中包含较多的无效信息,在基础网络中加入CBAM 注意力机制,使模型更加关注有效的关键特征,减少或忽略一些无效的特征信息,从而提高模型的识别率和鲁棒性。CBAM 注意力是一种轻量化的注意力模型,可以集成到现有的网络架构中,本文将注意力模块嵌入到ResNet50 模型的残差块中,命名为CBAM-Bottleneck,结构如图3所示。

海西州委常委、格尔木市委书记王勇说,格尔木依托柴达木盆地得天独厚的生态优势,积极发展有机枸杞产业,建成全省首个国家级生态原产地产品保护示范区,获颁我国首张有机枸杞认证证书,出口和创汇位居全省农产品之首,枸杞产业成为拉动农牧业经济持续增长的引擎。

图3 加入CBAM 的残差模块Fig.3 Residual module added to CBAM

加入CBAM 注意力机制的ResNet50 网络结构:首先输入特征通过7×7 卷积操作,其后加BN 层和Relu 激活函数,最大池化层,然后加嵌入CBAM的残差块,残差块主要有4 种类型(区别在于卷积核的数量),残差块的数量分别为3,4,6,3,最后加平均池化层和全连接层,用softmax 分类7 种表情概率,详细的结构如图4所示。

图4 嵌入CBAM 的ResNet50 网络Fig.4 ResNet50 network embedded in CBAM

1.3 加权交叉熵损失函数

运用深度学习方法的图像识别,需要数据集各类别之间均衡分布,这样有助于提升网络的识别精度,避免模型专注于数量较多的样本,而使得少样本淹没在多样本中,以至于少样本类别的识别精度较低,从而影响总的识别精度,导致模型的性能较差。本文使用的数据集也存在类别不均衡的问题,尤其是Fer2013 数据集,样本数量最多的类别(高兴)比样本数量最少的类别(厌恶)多大约16 倍,图5为Fer2013 数据集的各类别数量。

图5 原数据集各类别数量Fig.5 Number of categories in the original dataset

针对数据集的类别不均衡问题,本文通过数据增强和应用加权损失函数2 个方法进行优化,数据增强将在实验部分讲述。传统交叉熵损失(cross entropy,CE)函数公式如下:

式中:N 表示总的样本数量;Pn,i表示第n 个样本为类别i 的概率。

交叉熵损失函数在分类问题上有较好的效果,尤其在数据集类别均衡的条件下,但在类别不均衡的时候,传统的交叉熵损失函数的效果就不太理想。因此,改进传统交叉熵损失函数,在其基础上加入权重系数Wn,使其更加适用于类别不均衡的数据集。在表情分类中,设最多样本类别(高兴)数量为S,其他类别样本数量为Mk(k 为其他类别样本),则权重系数为Wn=S/Mk,最多样本类别的权重为1,其他类别的权重大于1,使得网络模型在训练过程中更加关注小样本类别的学习[10]。加入权重的交叉熵损失函数公式为

2 实验过程及结果分析

2.1 实验环境

本文实验软件采用Pytorch 和Keras 的深度学习框架搭建,编程语言使用Python,版本为Python3.6.4。硬件平台为CPU 内存16 GB 的Intel(R)Core(TM)i7-10750H,GPU 内存6 GB 的NVIDIA GeForce RTX 3060 Laptop。

2.2 数据集

为了对本文所提出的方法进行验证,本文实验采用了CK+和Fer2013 数据集进行网络模型的训练和测试。

CK+数据集是表情识别研究中常用的数据集,适合用于验证模型的效果。CK+数据集是通过采集123 名参与者的不同面部表情得到593 例表情图像序列,其中327 例有表情标签。数据集共分为7 个表情标签,标签标注较准确,如图6所示。

图6 CK+数据集的7 类表情标签示例Fig.6 Example of 7 categories of emoticon labels in CK+ dataset

Fer2013 数据集也是人脸表情识别实验中经常用到的公开数据集,该数据集共有35886 张表情照片,包括28708 张训练样本,3589 张公开测试样本,3589 张私有测试样本,图像为灰度图,大小为统一的48×48,共有7 类表情标签。该数据集的各类样本之间较不均衡,且照片存在水印和遮挡,分类难度较大,如图7所示。

图7 Fer2013 数据集的7 类表情标签示例Fig.7 Examples of 7 categories of emoticon labels in Fer2013 dataset

2.3 预处理

在表情识别实验中,数据集照片的尺寸和角度不一致会影响识别效果,针对CK+数据集中原始表情图像存在多余信息,使用openCV 进行人脸识别,然后对人脸部中心区域进行剪裁。对处理之后的人脸表情图像进行直方图均衡化,增加数据集图像的整体对比度,最后将数据集图像缩放为48×48 的像素大小。

使用Keras 框架,利用其封装的ImageDataGenerator 对Fer2013 数据集进行数据增强,采用缩放、旋转、水平或垂直平移、透视变换等方法,扩充数据集的样本数量,并着重增加少样本类别数量,使各类样本尽量趋于平衡,如图8为数据增强后数据集各类别数量。

图8 数据增强后数据集各类别数量Fig.8 Number of types of dataset after data enhancement

2.4 评价标准

在深度学习的分类问题中,经常用到的分类评价标准包括Accuracy(准确率)、Confusion matrix(混淆矩阵)、F1-score(F1 值)等,针对本文,由于要了解各个类别的识别精度,所以本文采用准确率和混淆矩阵来作为评价标准。

准确率为全部分类正确的样本数除以总的样本数量,公式为

式中:TP 表示正例分类正确的数量;TN 表示负例分类正确的数量;P 和N 分别为所有正例和所有负例。

为了便于分析,本文的混淆矩阵中的数值由百分比来表示,对角线为该类别预测准确的概率,其余为分类成其他类别的概率。混淆矩阵如表1所示。

表1 混淆矩阵Tab.1 Confusion matrix

表中TP 为正例分类正确的数量,FP 为正例分类错误的数量,TN 为负例分类正确的数量,FN 为负例分类错误的数量。

2.5 实验设置及结果分析

本文在Fer2013 数据集的实验,模型参数的设置如下:网络共迭代200 轮,选用自适应估计(Adam)优化器,初始学习率为0.001,迭代60 轮后,网络每迭代10 轮,学习率衰减为现学习率的0.8 倍,批次大小设为128。在CK+数据集的实验设置为网络共迭代150 轮,选用自适应估计(Adam)优化器,初始学习率为0.001,迭代50 轮后,网络每迭代10轮,学习率衰减为现学习率的0.8 倍,批次大小设为32。

为了验证文中方法的效果,将原始网络和加入不同方法的网络效果做对比,主要针对Fer2013 数据集,效果对比如表2所示。

表2 不同方法在Fer2013 数据集的实验对比Tab.2 Experimental comparison of different methods in Fer2013 dataset

Fer2013 数据集上的实验,分为原始数据集和数据增强版的数据集,分别在不同方法上进行实验,在基础网络下,原始数据集识别准确率为70.05%,数据增强后识别准确率为70.49%,有小幅度的提升。在基础网络中加入CBAM 注意力机制后,两种数据集下的识别精度都有提升,表明加入注意力机制后,模型的特征提取能力得到提升,网络更多的关注有效特征。损失函数改为加权的交叉熵损失后,原数据集和增强后的数据集均有提升,但原数据集的提升幅度较大,原因是原数据集的类别不平衡较明显,所以改为加权重的交叉熵损失后,对识别精度的提升较大。在加入注意力机制和使用加权损失函数的模型中,识别的最终精度达到了72.38%,表明本文的方法在人脸表情识别中具有一定的有效性。

图9为Fer2013 的混淆矩阵,可以较清晰地看到各类表情的识别准确率和误分类情况,由混淆矩阵可知,高兴类别的表情识别率最高,原因为其较易分辨且样本数量较多,生气、厌恶和恐惧等表情的识别精度不高,原因是这些类型有相似性且样本较少,不易分辨。但从混淆矩阵也可以看出,各类别的识别效果趋于均衡,说明重加权的交叉熵损失函数有一定的效果。

图9 Fer2013 的混淆矩阵Fig.9 Confusion matrix for Fer2013

为了证明本文方法针对人脸表情的识别效果,在CK+和Fer2013 数据集上与国内外的优秀论文进行对比,如表3、表4所示。

表3 不同方法在Fer2013 数据集的效果对比Tab.3 Effect comparison of different methods in Fer2013 dataset

表4 不同方法在CK+数据集的效果对比Tab.4 Effect comparison of different methods in CK+ dataset

表3中文献[11]的方法为增加Fer2013 数据集的数量结合CNN 网络进行识别;文献[12]分割出输入照片的人脸表情关键特征区域以提升网络的准确率;文献[13]使用特征图聚类的方法,去除特征冗余以获取更有效的特征。本文方法高于以上文献的识别精度,表明本文方法在Fer2013 数据集上有一定的提升效果。表4中文献[14]使用深度网络结构,引入残差模块解决精度下降问题;文献[15]使用小尺度卷积代替大卷积,并使用softmax 分类器进行分类;文献[8]融合金字塔卷积模块、注意力模块,更好地提取图像的细节特征。本文方法在CK+数据集上的识别精度高于以上文献方法,表明本文方法在CK+数据集上有一定的提升效果。

3 结语

本文提出一种基于改进ResNet 网络和损失函数的人脸表情识别方法。首先,对ResNet50 基础网络进行改进,在网络中嵌入CBAM 注意力机制模块,提升模型的关键特征提取能力;然后,针对数据集类别数量不均衡影响模型识别性能的问题,采用数据集增强和加权交叉熵损失函数的方法对模型进行优化。本文在CK+和Fer2013 数据集进行实验,相较于基础网络,本文方法提升了网络的识别精度,另外对数据集中少样本类别的识别提升效果更明显,表明本文方法对数据集类别不均衡问题有一定效果。本文方法虽然在识别精度上有提升,但也相应地增加了网络计算量,未来研究可以减少模型的计算量,搭建高效轻量化的网络结构。

猜你喜欢
类别注意力数量
让注意力“飞”回来
芳芳猜童话书的数量
论陶瓷刻划花艺术类别与特征
一起去图书馆吧
如何培养一年级学生的注意力
统一数量再比较
A Beautiful Way Of Looking At Things
头发的数量
选相纸 打照片