杜杏菁,孙炳刚
(华北科技学院 计算机学院,北京 东燕郊 065201)
情感识别大致可分为三个阶段:感知、认知、自主智能。感知智能如语音识别等技术已经相当成熟,应用到相关领域,取得较好的效果。认知智能如人脸识别、姿态识别、人体跟踪等技术也比较成熟,应用到了各种识别、监控、支付等场所。自主智能正随着互联网、物联网、移动网络、大数据及GPU计算机硬件、深度学习等技术而快速发展。
表情识别是最直接、有效的情感识别模式,分静态图像表情识别和动态序列表情识别,静态图像表情识别是图片表情识别,涉险岗位人员情绪实时监测是表情识别在现实场景中的验证和应用,是预防失控情绪引发的重大伤害事件发生的措施,是社会和谐发展、城镇智能化的技术支撑。基于深度学习卷积神经网络人脸表情识别技术,对涉险岗位人员异常情绪识别,提高识别率,设计异常情绪评估与应急预警系统,推动表情识别和情绪监控技术的广泛应用。
表情是面部肌肉活动呈现的一种情绪指标,是人生理和心理的综合反映,能够传递情感,是情感最直接有效的识别模式,表达了个体情绪状态,是一种非语言交际形式。面部表情最常见的有七类:‘中性、高兴、吃惊、悲伤、愤怒、厌恶、恐惧’,后来人们又提出了‘复合表情’。面部表情传递的情绪信息占55%,声音传递的情绪信息占38%,语言传递的情绪信息仅占7%[1-2]。面部表情中含有的情绪信息最多,图像采集方便,是基于生物特征情绪识别中比较便捷的方法。
MIT开发的情感机器人通过生物传感器识别情感[3]。IBM公司通过手部血压计温度传感器判断情感[4]。中科院王兆其研究虚拟人表情和动作,高文研究多功能感知技术[5]。深圳安视宝产品属于自体原发非主观控制数据分析情感[6]。北京科技大学李敏嘉等研究了基于皮肤电反应及心电图传感器的情绪监测体域网[7]。科思创动通过摄像头捕捉脸部可观测数据,直接输出预警结果。哈尔滨工程大学研制了可模仿再现人脸表情的机器人H&F Robot-II。香港中文大学研究了深度学习人脸表情识别。百度发布了raven H智能音箱和raven R情感机器人。
人脸表情识别不断有新成果出现,其识别算法可分为:Fisher线性判别法、局部特征分析法(PCA)、独立分量分析(ICA)、隐马尔科夫模型法、卷积神经网络、多任务分类法等。表情识别分为整体识别与局部识别、变形提取与运动提取、几何特征与纹理特征[8]。识别过程分为图像预处理、特征提取、表情分类识别[9]。表情特征主要有灰度特征、运动特征、频率特征[10]。表情识别包括分类模型设计与训练、模型应用与决策[11]。模型设计与训练方法有线性法、支持向量机、隐马尔科夫模型、物理建模、图像编码、神经网络等。
近年来,以卷积神经网络进行表情识别的研究成为热门,Su H等利用多角度卷积神经网络(MvCNN),实现了多姿态物体识别[12]。2015年何凯明团队提出残差网络[13],不再学习完整的输出F(x),而是学习残差H(x)-x,解决信息传递过程中的丢失和损耗问题[14]。Ghosh等提出联合视觉和听觉信息的情绪识别[15],YIN H等采用文本、图像、语音三种信息融合法[16],ZADEH提出记忆融合网络实现多特征信息序列同步[17],李寿山等提出多任务融合学习网方法。Hu J等提出了SE-Net表情识别网络[18],获取特征的依赖关系,提升了卷积神经网络的性能。WOO S等人提出了识别网络CBAM[19]。Hua等提出了不同深度子网卷积神经网络模型[20]。吕宝粮等进行了脑电和眼睛双模态深度学习DNN情绪分类[21]。王喆等利用语音和面部表情特征进行情绪分类[22]。贵州大学卢涵宇等将迁移模型用到表情识别训练中[23],建立基于迁移学习的深度学习模型,对要进行迁移学习的表情数据预训练网络进行微调,进行参数和知识的迁移。刘健用Inception结构迁移到FER2013数据库训练中[24],丁剑飞利用迁移MobileNets网络结合SVM迭代多次后提高识别率[25],王瑞琼将InceptionV3迁移到CK+数据库训练提升训练效果[26]。
2013年后,各种表情识别竞赛从现实场景收集大量训练数据,推动了表情识别技术从实验室走向真实场景中。合肥工业大学的姜明星等提出了时空局部三值方向角模式(SLTOP)和表情、姿态的云加权决策融合分类方法[27],该方法首先对视频图像进行预处理,得到表情和姿态的序列,提取SLTOP特征,结合灰度共生矩阵降低特征的稀疏性。王晓华等对VLBP算法进行改进,将纹理特征与3DHOG特征融合[28],但该方法没有分析表情与姿态对情感识别贡献的大小分析。付晓峰等提出了多尺度时空局部方向角模式,有效的捕捉人脸表情三维空间的时空特征[29],但该方法获得的特征较稀疏,限制了特征空间的分类性能。基于动态序列的人脸表情特征学习算法出现了卷积神经网络(CNN)、深度置信网络(DBN)、深度自编码(DAE)、递归神经网络(RNN)等。
结合人脸表情的纹理特征、运动特征,研究改进的RNN模型。考虑表情序列空间和时间信息的RNN结合C3D方法,利用RNN在时间序列变化上建模,利用C3D在2D卷积基础上沿着时间轴增加时间维度,形成3D卷积,其输入是经过预处理后的视频序列,设置3-4层卷积层,降低过拟合度,利用随机梯度下降法对模型参数进行优化[30]。结合应用环境及性质,对异常情绪进行识别。用训练好的分类模型对预处理后的动态视频序列进行异常表情或非异常表情进行分类。
设计四层结构:数据采集层采用网络摄像机实时采集视频流,帧频率25-30。支持层经过采集层获得动态图像序列,收集表情样本,分类训练,收集视频序列验证测试样本,在GPU系统进行深度学习网络模型训练。情绪监测验证系统实现情绪监测中间层各功能。最上层是分类结果及应急预警应用层。
异常表情识别与应急预警过程如图1所示。
将开心、中性两种表情样本中去掉,选取训练样本包含‘生气、厌恶、恐惧、伤心、惊讶’五种,分别对应于数字标签和中英文:0 anger 生气、1 disgust 厌恶、2 fear 恐惧、3 sad 伤心、4 surprised 惊讶。建立文件夹存放各自对应的样本图片。从前面五种负面表情样本中挑选表情极严重的样本,单独形成一种类别,其数字标签和中英文为:‘5 cnce 失控情绪’。将上面0-4五种负面表情样本作为输入,训练表情分类器,监测失控情绪,找出失控表情样本,并进行标注。
人脸检测与表情识别研究可在现有公开数据集上进行训练模型和验证测试。下载并整理了FER2013数据集,包含35887张人脸图片,其中训练集28709张、验证集3589张、测试集3589张。每张图片的像素为48×48。将emotion与pixels分开,形成label.csv和data.csv。转换训练、测试、验证数据为图片,转换后分成0-6类,分别对应着不同表情的图片。数据集中train中的28709张图片,前24000图片作为训练数据集,其他4709张图片作为验证数据集,分别放在train、val文件夹中。建立data-label对照表,遍历train和val文件夹中的所有文件,将jpg格式的图片名和索引label写入对照表中,做为卷积网络程序的输入。
长短记忆单元(LSTM)是循环神经网络的改进形式。通过记忆单元保存时间维度的历史信息,因此能够长期记住前面历史,这些记忆单元通过各种门选择信息的通过、禁止、舍弃。视频经预处理后的动态帧序列作为3DCNN、RNN网络的输入,3DCNN提取某时刻图像的外观和运动信息,侧重提取局部时域特征,LSTM提取动态帧序列的全局时间信息。基于两种网络的优势,我们采用两种网络联合,充分利用时域在局部和全局的特征信息。
LSTM-SVM网络结构有两部分构成,LSTM从输入中获取特征,SVM进行特征分类输出。首先训练LSTM网络,将预处理的动态序列输入网络,然后获得调整后的特征参数,输出的信息作为SVM的输入,进行表情特征分类。
LSTM的输出层为softmax逻辑回归网络,包括记忆单元和控制记忆单元状态的门结构,通过遗忘门丢掉相关度第的历史特征,输入门决定记忆单元对特征的敏感程度,输出门用于输出信息。
LSTM记忆单元状态更新和输出的过程如下:
第一步,删除低关联度历史信息,如公式(1)所示。
ft=σ(Ufht-1+Wfxt+bf)
(1)
第二步,根据输入数据、历史记录更新,如公式(2)所示。
it=σ(Uiht-1+Wixt+bi)
(2)
第三步,输出t时刻的信息,如公式(3)所示。
ot=σ(Uoht-1+Woxt+bo)
ht=ot×tanh(Ct)
(3)
其中,Uf、Ui、Uc、Uo是隐含状态h对应的门权重矩阵,Wf、Wi、Wc、Wo是输入状态x对应的门权重矩阵,b是对应门的偏置向量,σ为激活函数,tanh为双曲正切激活函数。
支持向量机(SVM)用于表情二分类,通过特征空间上最大间隔进行线性分类,添加核函数转换为非线性分类,求解划分训练数据且几何间隔最大的超平面。
超平面表示为:w·x+b=0,w为直线的斜率,b为直线的截距。数据集的几何间隔定义见式(4)。
(4)
用核函数K(x,y)代替内积,解得非线性支持向量机,见式(5)。
(5)
非线性支持向量机的学习具体步骤如下:
首先,输入训练集;
其次,输出分离超平面和分类决策函数;
然后,选取适当核函数K和惩罚参数C,构造并求解凸二次规划问题。分类决策函数可用式(6)表示。
(6)
(7)
最后,设置惩罚函数C和几何间隔γ,γ可设置成1。
构建四层情绪监测结构模型,即视频数据采集层、支撑层、功能实现层和应用层。如图2所示。数据采集层采用网络摄像机实时采集视频流,帧频率25-30,压缩格式,黑白自动平衡,支持ONVIF、RTSP协议,光照感光0.1 lux。支撑层经过采集层获得动态图像序列,收集表情样本,分类训练,收集视频序列检验、验证样本,在GPU系统进行深度学习训练网络模型。在Intel I7酷睿4/8核CPU实现情绪监测的中间各功能层。最上层是分类结果及应急预警应用层。
图2 异常情绪应急预警系统层次结构
整理FER2013数据集,训练集28709张、验证集3589张、测试集3589张。每张图片的像素为48×48。将emotion与pixels分开,形成label. csv和data.csv。转换训练、测试、验证数据为图片,转换后分成0-6类,分别对应着不同表情的图片。数据集中train中的28709张图片,前24000图片作为训练数据集,其他4709张图片作为验证数据集,分别放在train、val文件夹中。建立data-label对照表,遍历train和val文件夹中的所有文件,将jpg格式的图片名和索引label写入对照表中,做为卷积网络程序的输入。
采用深度学习卷积神经网络进行特征提取和分类模型训练,优化参数,调整模型结构,使用验证样本对模型进行验证。视频人脸表情识别是一个动态识别过程,使用3D-LSTM-SVM网络模型,将视频中N帧图像分别对应N个CNN提取特征,每层CNN与LSTM相连,将视频流中各帧表情特征逐个提取,并通过LSTM-SVM分类识别,最终判断是否为异常情绪。网络模型如图3所示。
图3 异常表情识别模型
分类判别器输入图像大小为256×256×3,卷积核为3×3,设计四层卷积,滤波器数量分别为32、64、128、256,输出图像大小为32×32×256,利用全连接层进行表情分类识别。通过神经元参数,输出隐含层信息,将隐含层信息输入到SVM分类器。卷积网络模型设计见表1。
表1 卷积神经网络层次
考虑到系统的准确率,在保证功能的情况下,调整Conv2D的参数。filters参数是过滤器的个数,kernel_size卷积核的尺寸,Strides步长是上下左右滑动的长度,默认为1。Padding只有两个值valid和same,valid代表图像边缘为空,而same表示图像边缘用“0”填充。activation激活函数关键字,表示经过本次卷积后,再运行一次激活函数。sigmoid相对来说,计算量较大,进行反向传播时,会出现梯度消失情况。ReLU则缓解了过拟合问题,softmax用于分类。首先修改卷积核的个数8、16、32、64、128,修改卷积核的尺寸3×3、5×5,步长1、2、3,找到最优的解,然后通过不同padding值,以及不同的激活函数达到最优目的,修改卷积层个数,找到模型性训练的最高准确率和效率。卷积神经网络训练模型的参数输出见表2。
表2 param输出
在FRE2013数据集上,通过Covariance Pooling、Soft Label等方法进行识别比较,得到的结果见表3。
表3 FER2013-DB数据集上的识别精度
(1) 将某时间窗口的一系列帧作为输入,使用3DCNN模型,输入n帧序列与3D滤波器做卷积,整体网络与局部特征网络结合训练,捕捉表情变化的过程信息。训练LSTM分类器学习表情特征的时间演变,连接低层的CNN网络捕捉时空特征信息,完成异常情绪识别及应急预警系统设计。
(2) 使用FER2013数据集对系统的卷积神经网络模型进行多次深度学习后,最高识别效率达到70.04%.
(3) 将应急预警系统设计成四层,通过异常情绪识别,完成语音视频的预警处理。