基于改进纹理特征与迁移学习的人脸表情识别

2023-05-24 09:06焦阳阳黄润才
智能计算机与应用 2023年5期
关键词:描述符全局像素

焦阳阳,黄润才

(上海工程技术大学 电子电气工程学院,上海 201620)

0 引言

在情感计算领域中,面部表情可以最有效地表达出一个人的情感信息。随着计算机的飞速发展,研究人员开始尝试使用机器自动识别人脸表情。人类的面部表情按照Ekman 和Friesen[1]的定义可分为愤怒、厌恶、恐惧、兴奋、悲伤与惊讶等6 类。伴随着研究的不断深入,表情识别准确率不断提高,人脸表情识别也开始广泛应用于人们的日常生产生活中,如医疗诊断、驾驶员疲劳检测以及学生课堂管理等。

人脸表情识别按技术路线可分为3 个步骤:表情图像预处理、特征提取与表情识别。目前用于提取人脸表情特征的方法有两种:基于传统特征的方法与基于深度学习的方法。传统特征提取方法使用不同的编码算子来提取图像的局部信息,其中编码算子主要有局部二值模式(LBP)[2]、方向梯度直方图(HOG)[3]和局部图结构(LGS)等。Abusham[4]于2011 年提出使用局部图结构来提取图像特征,随后Mohd[5]等针对LGS 的非对称性提出了改进后的SLGS。但传统方法只能提取图像的局部信息,无法获取全局语义信息,因此深度学习技术被不断运用在表情识别领域。冯杨[6]等设计了一个小尺度卷积核的神经网络来提取面部表情特征,提高了表情识别的准确率。Jiang[7]等设计了一种混合深度分离残差网络,用于表情特征提取。Transformer 在最近几年中被广泛运用在自然语言处理领域中,研究人员也开始尝试将其运用在计算机视觉任务。Alexey[8]等人提出了VIT,将Transformer 移植到了计算机视觉领域中,在图像分类及目标检测等不同任务中均获得了巨大的成功。由于单一方法提取的特征信息不够丰富与小样本表情数据集的表情样本不足等问题,不少研究人员开始尝试融合不同特征以提高特征的表征能力,并尝试使用迁移学习的方法训练神经网络。Wang[9]等使用MO-HOG 与卷积神经网络提取的特征进行融合。Yang[10]等将几何特征、纹理特征与ResNet 网络提取的特征进行结合,构成复合面部特征进行表情识别。

传统的LGS 算子表征了图像的局部信息,但存在一些不足,如采样范围小,左右两边权重分配不均匀。本文首先对LGS 进行了改进,提出了完全局部图结构(Complete Local Graph Structure,CLGS)特征描述符,通过CLGS 对表情图像提取局部图像特征。随后通过迁移学习的方法,使用视觉注意力机制对面部表情进行全局特征提取,通过将局部特征与全局特征进行级联融合,使表情特征能够表达更加丰富的信息,最后使用Softmax 对表情进行分类。

1 人脸表情识别模型

本文提出的人脸表情识别模型如图1 所示。首先将原始图像经过预处理操作,把背景等无关因素去除掉,然后对图像进行分块处理,分别送入两条支路提取特征向量。将分块后的图像展平成一维向量,在每个向量位置上添加一个位置嵌入,得到Transformer 编码器的输入向量,经过Transformer 处理后得到全局特征向量。与此同时将分块后的图像通过CLGS 特征描述符提取特征,并转换为直方图形式,得到局部纹理特征。最后将全局特征与局部纹理特征拼接融合,经过全连接层后送入Softmax中得到最终预测结果。

图1 人脸表情识别模型Fig.1 Facial expression recognition model

1.1 图像预处理

在原始图像中存在着许多对表情特征提取无关的信息,如果直接将原图像送入模型进行处理,对表情识别的准确性有一定的影响。因此需要对表情图像进行预处理,包括人脸检测、灰度及尺寸归一化等。检测并裁剪出人脸部位,然后将三通道RGB 图像转换为灰度图,统一缩放成相同规格的尺寸大小,得到模型所需的输入图像。

1.2 CLGS 特征

Abusham 等提出的局部图结构(LGS)算子用于描述局部纹理特征,其通过构建一个图结构来描述中心像素与周边像素的关系,其计算过程如图2所示。在中心像素周边选取5 个像素点,从左侧开始按照图中标记的箭头位置,依次比较箭头首端与箭头末端所指像素的大小,大于则将连接两像素的边取0,小于取1。沿着图中标记的顺序,依次得到8 个二进制数,将其按照排列顺序赋予一定的权重转换为十进制数,这个数值即为中心像素的LGS 特征值。在图2 中,得到的8 个二进制数为00110100,转换为十进制数52。

图2 LGS 编码示意图Fig.2 Diagram of LGS coding

从图2 可知,LGS 存在着对左右两边像素点利用不均匀与权重赋予左重右轻等特点,左边采样两个像素点,权重赋予了128、64 与32,而右边虽然多一个采样点,但权重明显比左边低。于是SLGS 通过在中心像素两侧提取相同数量的像素,解决了采样不平衡的问题。但SLGS 的采样范围仅利用了周边的一半像素点,另一半像素点则没有利用,并且权重赋予的问题也没有解决。因此,本文提出了CLGS描述符对上述问题进行了改进。

如图3 所示,CLGS 描述符通过构建两个不同的图结构分别计算出特征值,描述符采样范围扩大了一倍。然后根据图4 所示的权重赋予机制,分别对计算完成后的二进制值乘以相应的权重得到两个特征值,中心像素的两边权重分配更加合理。局部最大特征值能够更好地反映周边像素的变化情况,保存更多的纹理信息,因此取最大的那个值作为中心像素的特征值。将图像分为16×16 大小的图像块,分别处理为CLGS 图像,再对这些图像内的特征值进行统计得到特征直方图,作为图像的局部特征信息。

图3 CLGS 示意图Fig.3 Diagram of CLGS

图4 权重赋予示意图Fig.4 Weight assignment diagram

1.3 Vision Transformer(VIT)

VIT 通过计算图像块之间的关系获得图像的全局特征,视觉注意力机制的结构如图5 所示。

图5 VIT 示意图Fig.5 VIT diagram

首先将图像进行裁切,分为16×16 大小的图像块,再将图像块进行展平处理,转换为一维向量。与自然语言处理中的BERT 类似,在输入序列的最前端添加一个可学习的向量,用于表示分类信息;然后使用可学习的一维向量作为位置向量,与图像向量进行相加,保留位置信息。式(1)展示了输入向量的计算过程:

将处理得到的向量序列作为编码器的输入。在整个编码器中,最重要的部件是多头注意力机制,由z个自注意力构成。自注意力通过计算单个向量与其他向量之间的关系得到全局注意力表示,其通过可学习的3 个参数Q、K、V来进行表示。具体的计算如式(2):

其中,d为输入向量的维度,输入向量与3 个权重矩阵相乘得到Q、K、V。

在得到单个自注意力矩阵后,使用多个自注意力头,生成多头注意力。计算公式如式(3):

其中,wo为权重矩阵。输入的向量矩阵首先进行归一化处理,然后送入多头注意力机制中,再次经过归一化以及感知机层,得到输出向量矩阵。在编码过程中,编码器还使用了两个残差连接,其目的是为了防止梯度消失。经过多个编码器的计算后,输出最终的特征向量。

由于表情识别数据集样本小,而深度学习的训练需要大量样本的支撑,因此迁移学习被广泛运用于小样本任务中。迁移学习指的是首先在一个与目标任务类似的任务上进行模型的训练,该任务的样本量非常大,常用的有ImageNet 数据集。在该任务上训练好模型,然后将模型参数迁移到目标任务上。迁移学习可以解决小样本数据集图像特征不足的问题,本文使用在ImageNet 上预先训练过的模型,通过微调得到全局特征向量。

1.4 特征融合

如前所述,通过CLGS 描述符得到了图像的局部特征信息后;再通过迁移学习的方式,使用VIT 得到了图像的全局信息。在此基础上可通过将局部信息与全局信息相融合,得到最终的表情特征向量。融合方法使用串联拼接的方式:

其中,Xdeep为全局特征向量;Xclgs为局部特征向量;X为模型最终得到的特征向量。

经过全连接层后,通过Softmax 进行表情分类。在整个模型训练过程中,选择交叉熵损失函数作为梯度下降的优化函数:

其中,yi为真实值为预测值;N为样本数。使用梯度下降的方法不断缩小预测值与真实值之间的差异。

2 实验结果与分析

本文模型使用Pytorch 深度学习框架搭建,操作系统为Ubuntu,GPU 为NVIDIA Tesla K80,Python版本为3.8。其中神经网络参数设置为:优化器使用Adam,Batchsize 为64,Epoch 设置为20。

2.1 数据集

本文所进行的所有实验均使用CK+[11]与Oulu-CASIA[12]数据集。CK+数据集包含了123 个被采集对象的593 个表情图像序列,其中包含愤怒、厌恶、恐惧、中性、兴奋、悲伤与惊讶7 种表情,本文选用CK+数据集最后三帧的图像进行实验。Oulu-CASIA 数据集共采样80 个人的6 种基本表情,对比CK+数据集缺少中性表情,采样方式分为两种:可见光与近红外光,本文使用可见光数据进行实验。将两个数据集均按照8 ∶2 的比例划分出训练集和测试集,模型验证使用五折交叉方法。

2.2 消融实验

为了验证本文提出的模型有效性,进行了模型消融实验,共设置了两组对照实验。实验一仅使用VIT 视觉注意力机制,实验二使用未经过预训练的VIT 模型,使模型从头开始训练。实验分别在CK+与Oulu-CASIA 数据集上进行,并与本文模型进行对比。实验结果见表1。

表1 消融实验结果Tab.1 Results of ablation experiments

从表1 中可见,本文模型比单一特征提高了8%的准确率,证明本文将全局特征与局部特征进行融合,能够表达更加丰富的信息。实验二的结果证明了经过预训练的模型比重新开始训练的模型识别效果更好,能够提升表情识别的准确率。

2.3 纹理特征对比实验

本文提出了CLGS 特征描述符,为了验证描述符的有效性,选用了不同类型的描述符进行对比实验。实验选用LGS、SLGS 作为参照,最终实验结果如图6 所示。

图6 纹理特征实验结果Fig.6 Experimental results of texture features

从图6 可知,本文提出的CLGS 在CK+数据集上取得了97.4%的准确率,在Oulu-CASIA 上得到了87.6%的准确率,均高于其他特征描述符。CLGS对目标周围像素的利用率均高于其他纹理特征,而改进后的权重赋予机制对左右两边像素的利用更加合理。

2.4 混淆矩阵

为了反映本文模型对不同表情的识别率,绘制了CK+和Oulu-CASIA 数据集的表情分类混淆矩阵。

从图7(a)可以得知,模型对CK+数据集中部分恐惧、自然及悲伤图像识别效果较差;在图7(b)中,悲伤、厌恶及愤怒的识别率明显低于其他表情,模型对于兴奋和惊讶两种表情的识别率较高。分析可知,识别率较低的表情其面部动作相似度高,动作幅度较小,识别率高的表情面部动作幅度较大,特征比较明显。

图7 混淆矩阵Fig.7 Confusion matrix

2.5 算法对比

表2 展示了本文提出的方法与其它主流表情识别算法的识别率对比。经过对比,无论是传统方法还是深度学习方法,本文模型在CK+与Oulu-CASIA 数据集上的识别准确率均高于表中所列其它方法,证明了本文方法的有效性。

表2 与其他算法识别率对比Tab.2 Comparison of recognition rate with other algorithms

3 结束语

本文对传统LGS 算子进行了改进,提出的CLGS 算子能更加合理地表示出图像的局部纹理信息,并通过迁移学习的方式提取了表情的全局特征,将局部特征与全局特征进行融合与表情分类。在CK+和Oulu-CASIA 上的实验证明了本文表情识别模型的有效性。由于模型还存在对特定表情识别准确率不高的问题,下一步将继续研究如何提高难区分表情的识别率。

猜你喜欢
描述符全局像素
Cahn-Hilliard-Brinkman系统的全局吸引子
像素前线之“幻影”2000
量子Navier-Stokes方程弱解的全局存在性
基于结构信息的异源遥感图像局部特征描述符研究
基于AKAZE的BOLD掩码描述符的匹配算法的研究
“像素”仙人掌
落子山东,意在全局
Linux单线程并发服务器探索
ÉVOLUTIONDIGAE Style de vie tactile
利用CNN的无人机遥感影像特征描述符学习