一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于ViT和StarGAN的驾驶员表情识别方法与流程

2022-02-22 07:26:17 来源:中国专利 TAG:

一种基于vit和stargan的驾驶员表情识别方法
技术领域
1.本发明涉及计算机视觉领域,更具体地,涉及一种基于vit和stargan的驾驶员表情识别方法。


背景技术:

2.面部表情是人类传达情感状态和意图的最有效途径之一。在迅速发展的智能汽车和辅助驾驶领域,驾驶员的驾驶状态对交通安全、智能驾驶起着至关重要的作用。而传统的通过测量生理参数的情绪检测方法在驾驶场景下存在一定的局限性,因此基于面部图像的非接触式驾驶员情绪识别具有非常重要的研究意义和应用价值。
3.驾驶员面部表情识别是一种基于面部生理反应的驾驶员状态识别方法,通过车内摄像头拍摄,获取驾驶员在驾驶过程中各种场景下的面部表情图像,同时利用计算机在有限的时间内进行识别分析,如今计算机视觉在驾驶员面部表情识别研究中逐渐成为主导。近年来,深度神经网络(deep neural networks,dnns)成为计算机视觉领域的通用方法,由于卷积神经网络(cnn)良好的特征提取和识别能力,越来越多地被用于解决面部表情识别问题,在常规的实验室场景下也实现了相当不错的识别效果。然而针对真实的驾驶场景,因为驾驶员头部姿态大,光照变化大,驾驶员面部表情数据集缺乏等问题,基于图像的驾驶员面部表情识别依然无法实现很好的效果。


技术实现要素:

4.本发明提供一种基于vit和stargan的驾驶员表情识别方法,该方法有效缓解驾驶员面部表情数据集匮乏的问题并提高识别精度。
5.为了达到上述技术效果,本发明的技术方案如下:
6.一种基于vit和stargan的驾驶员表情识别方法,包括以下步骤:
7.s1:利用驾驶员面部表情数据集中所有的人脸表情图像,采用viola-jones 人脸检测算法检测面部区域并进行裁剪和背景去除,然后搭建和训练stargan 网络用于扩充驾驶员面部表情数据集,随后对扩充数据进行归一化处理,得到一个驾驶员面部表情扩充数据集;
8.s2:构建基于vit的驾驶员面部表情识别网络;
9.s3:利用步骤s1得到的面部表情扩充数据集训练步骤s2构建的vit驾驶员面部表情识别网络;
10.s4:将步骤s1人脸定位处理后的且未作为网络训练的kmu-fed数据集子集送入步骤s3训练过程中最后20个迭代循环对应的网络模型中,得到每个图像的识别标签。
11.进一步地,所述步骤s1中,训练stargan网络具体包括以下步骤:
12.s11:将人脸定位裁剪后的图像进行缩放至分辨率为96
×
96,并进行噪点处理;
13.s12:随机将图片x及其标签f输入到生成器g中,得到生成的图像结果 g(x,f),组成一系列带标签特征的假图并混合真假图像;
14.s13:将真假混合图像集中的随机图片x输入判别器d及其辅助分类器中,得到判别真假图的判别结果d
src
(x)和鉴别图片表情标签的判别结果d
cls
(x);
15.s14:为使得生成器g的生成图与真值集差距不断减小,且加快训练的同时防止训练过程中产生过拟合现象,定义生成器g和判别器d之间关于真假的对抗误差函数表示如下:
[0016][0017]
式中,表示原图像和生成图像之间的直线均匀样本,表示判别器 d对样本的梯度值;
[0018]
s15:假设真值集原图标签为f

,将原图和假图分别送入判别器d中的辅助分类器,得到分类误差和表示为:
[0019][0020][0021]
s16:将生成图和它对应的标签再次放入生成器g中进行重构,得到第二次生成的图片与原图之间的像素点信息差值的均方误差l
rec
,表示为:
[0022]
l
rec
=e
x,f,f

[||x-g(g(x,f),f

)||1];
[0023]
s17:根据步骤s14、s15、s16结果得到生成器g和判别器d的训练目标函数,分别表示如下:
[0024][0025][0026]
式中,λ
cls
和λ
rec
分别表示判别器d中特征分类的学习率和生成器g重构损失相对的学习率;
[0027]
s18:设置超参数值λ
cls
=1,λ
gp
=10,λ
rec
=10,同时为防止过拟合现象,设置训练迭代次数为100000,开始模型训练,并得到最终的生成结果,即驾驶员面部表情扩充数据集。
[0028]
进一步地,所述步骤s2中,基于vit的驾驶员面部表情识别网络主要包括 patch embedding、position embedding、transformer encoder block和mlp分类器四个部分;patch embedding是用于记录图片的特征;输入的图像为x(h,w,c),其中,h和w为图片的长和宽,c为图片的通道数;positionembedding用于编码每一个特征块的位置信息;transformer encoder block的输入是一系列特征向量组成的特征块x

p
(n 1,d),经过归一化处理和线性变换,得到三个特征向量组 q:{q1,q2,...,qn}、k:{k1,k2,...,kn}、v:{v1,v2,...,vn},经过多头自注意力机制的计算获得注意力权重,将权重与输入x

p
(n 1,d)加和,得到新的一维向量 y
p
(n,d),对该向量再进行正则化处理,并输入多层感知器mlp,即多个全连接层,其结果与原一维向量y
p
(n 1,d)再加和,最终输出向量y

p
(n 1,d),该输出向量会进入下一层的训练中,类似于多层卷积神经网络,这样多层叠加 transformer编码器能够达到学习特征的目的;在最后一层transformer编码器,结果y

p
(n,d),经过均值处理后具有一维结构,因此经过线性变换得到最终的分类结果。
[0029]
进一步地,patch embedding是用于记录图片的特征:输入的图像为 x(h,w,c),其
中,h和w为图片的长和宽,c为图片的通道数:设需要将图片分成p
×
p大小的特征图,那么可以通过一个重塑形操作,将图片变成一系列特征块 x
p
(n,p2·
c),其中特征块的数量n=hw/p2,特征块的大小为(1,p2·
c),最后对每一个特征块进行线性变换,将数据映射到n个大小为(1,d)的一系列新特征块 x

p
(n,d),其中d为设定的自注意力机制结构的输入的大小;另外重新输入一串长度为d的可学习向量x
class
,该向量为随机数向量,用于初始化该模型;将x
class
与 x

p
(n,d)进行合并,得到大小为x

p
(n 1,d)的一系列特征块,这一系列特征块包含了全部的图片信息。
[0030]
进一步地,position embedding用于编码每一个特征块的位置信息:由于在图片重塑形时,位置信息会发生改变,如果不提供位置信息,那么模型只能通过嵌入块的语义来学习特征,而图像特征往往取决于相近像素之间的信息,没有位置信息意味着模型必须自己寻找该信息,这样会额外添加学习成本,因此需要一个地址块来储存位置信息;为了与嵌入块中的输出一致,同时避免模型过于复杂, vit采用的是由n 1个大小为(1,d)的特征块组成,而地址块由[-1,1]的随机数组成但无序的数字排列并不代表无序的位置信息,相反,如果两个区域把相邻区域也作为位置编码的内容,那么这两个区域的位置编码就会存在一定的重复内容,此时可以认为这两个区域更相近,相反位置编码没有重复内容的两个区域距离将会更远,最后选择地址块与嵌入块相加和,作为二者的结合,输入第一层 transformer编码器中。
[0031]
进一步地,步骤s3中,训练过程中设置的网络参数分别为:数据增强方式为随机水平翻转,batchsize为16
×
16,网络深度为12,patch embedding的dim 设置为128,multi-head self-attention的头数h=8,dropout设为0;训练过程选取的激活函数为relu函数,损失方程为ce loss,优化器为adam,学习率初始值为lr=5e-4,学习率变化策略为间隔调整学习率,调整间隔设置为5,下降比例为0.7,迭代次数设置为1500。
[0032]
进一步地,驾驶员面部表情数据集是指公开的kmu-fed数据集,该数据集包含1106张驾驶场景下的6种人脸表情即愤怒、烦躁、恐惧、快乐、悲伤、惊奇图像且均标注对应的表情标签,该数据集是目前为数不多的公开的驾驶场景下人脸表情图像数据集之一。
[0033]
进一步地,viola-jones人脸检测算法使用不同的haar特征和积分函数获取人脸图像中不同区域之间的特征,每一类特征用一个adaboost分类器进行分类,但单个分类器的效果有限,所以需要多个分类器协同,因此扩大haar特征的长和宽,重复训练不同的adaboost分类器,最后将这些不同的分类器级联,得到一个强分类器,该强分类器可以有效地识别出人脸位置。
[0034]
进一步地,stargan网络由一个生成器g和一个判别器d组成;生成器g 能够将驾驶员人脸图片映射到不同标签上,生成一组带标签特征的假图;判别器 d能够判别图片是否为g生成,且能识别出图片中的驾驶员表达哪种表情,生成器g由多层卷积层、残差块、反卷积层顺序连接,判别器d由纯卷积层构成。
[0035]
与现有技术相比,本发明技术方案的有益效果是:
[0036]
本发明基于面部图像的非接触式驾驶员情绪识别方法,通过基于haar特性的人脸定位和裁剪使得驾驶员面部图像尺寸减小、特征增强,然后采用一种新的数据增强策略用于生成驾驶员面部表情图像,即搭建并训练stargan网络获得一个驾驶员面部表情扩充数据集。此外,为了实现驾驶员面部表情的识别,本发明不同于传统的基于cnn网络框架的表
情识别方法,构建了一个基于多头自注意力机制的vit表情识别网络,该方法一方面能够使得网络训练的注意力逐渐集中在重要的表情特征上,另一方面能够更多地关注表情图像的长距离信息。同时搭配基于stargan的驾驶员表情图像生成策略,缓解了数据集数据不足的问题,达到了更高的识别准确率。
附图说明
[0037]
图1本发明基于vit网络框架和stargan数据增强的驾驶员面部表情识别方法的实施流程图;
[0038]
图2viola-jones人脸检测算法流程;
[0039]
图3stargan各层网络的基本组成结构;
[0040]
图4基于stargan的驾驶员面部表情扩充数据集部分样例;
[0041]
图5基于vit的驾驶员面部表情识别网络框架;
[0042]
图6transformer encoder block的具体结构;
[0043]
图7基于vit网络框架和stargan数据增强的驾驶员面部表情识别结果。
具体实施方式
[0044]
附图仅用于示例性说明,不能理解为对本专利的限制;
[0045]
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
[0046]
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0047]
下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0048]
本发明中提供一种基于vit网络框架和stargan数据增强的驾驶员面部表情识别方法,图1是实现该方法的流程图。本实施例的具体实施步骤如下:
[0049]
步骤1,利用驾驶员面部表情数据集中所有的人脸表情图像,采用v&j人脸定位方法检测面部区域并进行裁剪和背景去除,然后搭建和训练stargan网络用于扩充驾驶员面部表情数据集,随后对扩充数据进行归一化处理,得到一个驾驶员面部表情扩充数据集。
[0050]
所述的驾驶员面部表情数据集是指公开的kmu-fed(keimyung universityfacial expression of drivers)数据集,该数据集包含1106张驾驶场景下的6种人脸表情(愤怒、烦躁、恐惧、快乐、悲伤、惊奇)图像且均标注对应的表情标签。该数据集是目前为数不多的公开的驾驶场景下人脸表情图像数据集之一。
[0051]
所述的v&j人脸定位方法是viola-jones人脸检测算法,一种常用的人脸检测算法。该算法使用不同的haar特征和积分函数获取人脸图像中不同区域之间的特征,每一类特征用一个adaboost分类器进行分类,但单个分类器的效果有限,所以需要多个分类器协同,因此扩大haar特征的长和宽,重复训练不同的 adaboost分类器,最后将这些不同的分类器级联,得到一个强分类器,该强分类器可以有效地识别出人脸位置。具体的算法流程如图2所示。
[0052]
所述的stargan网络由一个生成器g和一个判别器d组成。生成器g能够将驾驶员人脸图片映射到不同标签上,生成一组带标签特征的假图;判别器d 能够判别图片是否为g生
成,且能识别出图片中的驾驶员表达哪种表情。生成器g由多层卷积层、残差块、反卷积层顺序连接,判别器d由纯卷积层构成,图3展示了stagan网络详细的结构信息。
[0053]
所述的训练stargan网络具体包括以下步骤:
[0054]
步骤11,将人脸定位裁剪后的图像进行缩放至分辨率为96
×
96,并进行噪点处理;
[0055]
步骤12,随机将图片x及其标签f输入到生成器g中,得到生成的图像结果 g(x,f),组成一系列带标签特征的假图并混合真假图像;
[0056]
步骤13,将真假混合图像集中的随机图片x输入判别器d及其辅助分类器中,得到判别真假图的判别结果d
src
(x)和鉴别图片表情标签的判别结果d
cls
(x);
[0057]
步骤14,为使得生成器g的生成图与真值集差距不断减小,且加快训练的同时防止训练过程中产生过拟合现象,本发明定义生成器g和判别器d之间关于真假的对抗误差函数表示如下:
[0058][0059]
式中,表示原图像和生成图像之间的直线均匀样本,表示判别器d对样本的梯度值。
[0060]
步骤15,假设真值集原图标签为f

,将原图和假图分别送入判别器d中的辅助分类器,得到分类误差和表示为:
[0061][0062][0063]
步骤16,将生成图和它对应的标签再次放入生成器g中进行重构,得到第二次生成的图片与原图之间的像素点信息差值的均方误差l
rec
,表示为:
[0064]
l
rec
=e
x,f,f

[||x-g(g(x,f),f

)||1]
[0065]
步骤17,根据步骤14、15、16结果得到生成器g和判别器d的训练目标函数,分别表示如下:
[0066][0067][0068]
式中,λ
cls
和λ
rec
分别表示判别器d中特征分类的学习率和生成器g重构损失相对的学习率。
[0069]
步骤18,设置超参数值λ
cls
=1,λ
gp
=10,λ
rec
=10,同时为防止过拟合现象,设置训练迭代次数为100000。开始模型训练,并得到最终的生成结果,即驾驶员面部表情扩充数据集,定义为sg(kmu-fed),部分生成结果如图4所示。
[0070]
步骤2,构建基于vit的驾驶员面部表情识别网络。
[0071]
在本实施例中,所述的基于vit的驾驶员面部表情识别网络主要包括patchembedding、position embedding、transformer encoder block和mlp分类器四个部分,如图5所示。
[0072]
所述的patch embedding是用于记录图片的特征。输入的图像为x(h,w,c), 其中,
h和w为图片的长和宽,c为图片的通道数。设需要将图片分成p
×
p大小的特征图,那么可以通过一个重塑形操作,将图片变成一系列特征块x
p
(n,p2·
c), 其中特征块的数量n=hw/p2,特征块的大小为(1,p2·
c),最后对每一个特征块进行线性变换,将数据映射到n个大小为(1,d)的一系列新特征块x

p
(n,d),其中d 为设定的自注意力机制结构的输入的大小。另外重新输入一串长度为d的可学习向量x
class
,该向量为随机数向量,用于初始化该模型。将x
class
与x

p
(n,d)进行合并,得到大小为x

p
(n 1,d)的一系列特征块,这一系列特征块包含了全部的图片信息。
[0073]
所述position embedding用于编码每一个特征块的位置信息。因为在图片重塑形时,位置信息会发生改变,如果不提供位置信息,那么模型只能通过嵌入块的语义来学习特征,而图像特征往往取决于相近像素之间的信息,没有位置信息意味着模型必须自己寻找该信息,这样会额外添加学习成本,因此需要一个地址块来储存位置信息。为了与嵌入块中的输出一致,同时避免模型过于复杂,vit 采用的是由n 1个大小为(1,d)的特征块组成,而地址块由[-1,1]的随机数组成但无序的数字排列并不代表无序的位置信息,相反,如果两个区域把相邻区域也作为位置编码的内容,那么这两个区域的位置编码就会存在一定的重复内容,此时可以认为这两个区域更相近,相反位置编码没有重复内容的两个区域距离将会更远。最后选择地址块与嵌入块相加和,作为二者的结合,输入第一层transformer 编码器中。
[0074]
所述的transformer encoder block的具体结构如图6所示,它的输入是一系列特征向量组成的特征块x

p
(n 1,d),经过归一化处理和线性变换,可以得到三个特征向量组q:{q1,q2,...,qn}、k:{k1,k2,...,kn}、v:{v1,v2,...,vn},经过多头自注意力机制的计算获得注意力权重,将权重与输入x

p
(n 1,d)加和,得到新的一维向量y
p
(n,d),对该向量再进行正则化处理,并输入多层感知器 (muti-layer perception,mlp),即多个全连接层,其结果与原一维向量 y
p
(n 1,d)再加和,最终输出向量y

p
(n 1,d)。该输出向量会进入下一层的训练中,类似于多层卷积神经网络,这样多层叠加transformer编码器能够达到学习特征的目的。
[0075]
在最后一层transformer编码器,结果y

p
(n,d),经过均值处理后具有一维结构,因此经过线性变换得到最终的分类结果。
[0076]
步骤3,利用步骤1得到的面部表情扩充数据集sg(kmu-fed)训练步骤2 构建的vit驾驶员面部表情识别网络。
[0077]
其中,训练过程中设置的网络参数分别为:数据增强方式为随机水平翻转 (random horizontal flip),batchsize为16
×
16,网络深度(即transformerencoder block堆叠层数)为12,patch embedding的dim设置为128,multi-headself-attention的头数h=8,dropout设为0。此外,训练过程选取的激活函数为relu 函数,损失方程为ce loss,优化器为adam,学习率初始值为lr=5e-4,学习率变化策略为间隔调整学习率(steplr),调整间隔(step_size)设置为5,下降比例(gamma)为0.7,迭代次数设置为1500。
[0078]
步骤4,将步骤1人脸定位处理后的且未作为网络训练的kmu-fed数据集子集(验证集)送入步骤3训练过程中最后20个迭代循环对应的网络模型中,得到每个图像的识别标签。部分识别效果如图7所示。、
[0079]
此外,为验证本发明提出的基于vit网络框架的驾驶员面部表情识别方法的有效
性,本发明采用resnet18网络模型、cnn网络模型在相同的数据参数条件下进行对比实验,实验结果如表1所示。
[0080]
表1不同网络在ck 面部表情数据集的识别结果对比
[0081]
网络模型vitresnet18cnn表情识别率0.6665
±
0.06420.6206
±
0.04110.4968
±
0.0853
[0082]
同时为验证本发明提出的基于stargan数据增强策略在驾驶员面部表情识别上的正确性,本发明还进行了消融实验,分别在基于ck 的原始数据集和 stargan扩充数据集上进行驾驶员面部表情识别率的比较,结果如表2所示。
[0083]
表2 vit网络框架在ck 和sg(ck )数据集上的面部表情识别对比
[0084]
数据集表情识别率ck 0.6665
±
0.0642sg(ck )0.6889
±
0.0355
[0085]
在本实施例中,构建了一种基于驾驶员面部表示识别的vit网络框架,并通过基于stargan生成的驾驶员面部表情扩充数据集的训练得到可用于驾驶员面部表情识别的网络模型,实验验证了本发明提出的基于vit网络框架和stargan 数据增强的驾驶员面部表情识别方法的正确性和有效性。
[0086]
相同或相似的标号对应相同或相似的部件;
[0087]
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
[0088]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献