基于微表情识别技术的病情预警系统设计
2021-09-23向莉薛红黄岿钱莹晶
向莉 薛红 黄岿 钱莹晶
(1.吉首大学信息科学与工程学院 湖南省吉首市 416000)
(2.怀化学院武陵山片区生态农业智能控制技术湖南省重点实验室 湖南省怀化市 418008)
1 研究背景
当今社会,越来越多老人因疾病突发、处理不及时导致猝死现象。降低病人监护的技术门槛和人力成本,提高疾病突发时候的预警效率和准度是目前亟需解决的问题。为实现患者病情的高效、可靠和低成本检测,本文通过研究人脸检测技术[1]、微表情特征提取技术[2]和微表情识别技术[3]等内容,拟研制一套基于微表情识别的病人病情预警系统。
2 模型与方法
基于计算机的人脸表情识别是指:首先在视频或图像中检测出人脸,然后对人脸的面部特征进行提取,最后通过已训练的模型对表情进行分类。该系统主要包括视频采集模块、图像预处理模块、人体目标识别模块、病人表情识别模块、VAS(微表情库)疼痛评分模块、病情预警模块及服务器数据中心和信息管理平台。系统通过监控设备对监控区域出现的心脏病病人的表情、行为进行采集、处理、训练和识别,进而预测病人的病情。
3 系统实现
整个系统先通过视频采集模块将含有人物特征的图片集从视频中提取出来。第二步,将经过预处理的视频通过人体识别模块标出人物位置。第三步,使用病人表情识别模块,识别出视频人物所出现的表情变化。最后,通过VAS疼痛评分模块将临床病人的痛苦表情打分,超过一定阈值时触发报警,寻求家人或者护理人员的帮助。
3.1 视频采集、图像预处理模块
图像采集模块是指从原始视频流中按照一定的滑动窗口选择连续的数帧图像。对于预处理模块,首先将这些图像灰度化转为灰度图,再使用图像去噪算法,去除图像噪声。本系统采用傅里叶变换与高斯滤波算法降噪,并采用运动模糊图像复原算法,复原处于运动中的临床病人的图像。使用降噪的图像作为输入可以提高图像后期人物与微表情识别模块的准确性。
3.2 人体目标识别模块
本系统的人体目标识别模块的主要任务是从预处理的数帧图像中确定,将获取的视频逐帧输入DarKNet-53变型网络,并以卷积层leaky relu损失函数作为基本组件。在人物识别模块采用多尺度融合的方式进行预测在多个尺度特征图上进行位置和类别预测,提高人物检测的准确率。用k近邻的方法对数据集的目标框进行维度聚类,对于尺度更大的特征图则采用更小的先预测框使用独立的逻辑分类器进行类别预测。对于高层特征图和低层特征图则采用上采样和下采样进行特征融合,对人物目标选取与其重叠并且IOU最大的作为候选框。
图1:系统卷积神经网络模型网络结构图
图2:积极与消极表情测试结果的样本分布
表1:实验模型在7种表情的数据集中的表现结果
3.3 人脸识别模块
系统设计前期,构建了病人表情图像采集系统,收集训练样本并且人工的进行标注,建立病人表情数据集并且采用多尺度训练的策略方式对病人表情进行多尺度训练,结合Keras框架搭建卷积神经网络进行特征提取。在时间维度的流结构中引入LSTM网络[4],使其网络架构能够获得更长的视频帧信息。之后再重新构造标准化图像的误差函数、平滑误差函数以及ssim误差函数并进行整合。最后通过双向LSTM获取关键时域信息进行联合训练,去除无用帧。
使用该训练好的识别模型,针对人这一人物特征进行学习,将时间流和空间流进行加权融合采取softmax回归从而识别视频中的微表情将其结果传递给服务器。
3.4 微表情识别模块
目前微表情识别的方法主要有LBP、SVM和深度学习等。卷积神经网络是用于微表情识别最热门的方法之一,如VGGNet、CNN16等。本系统采用了卷积神经网络模型结构,使用OpenCV中分类器积分图与Ada Boost级联分类器[5],大量节省了识别微表情的时间,提高了系统的运行效率。微表情识别模块在患者实时监护系统中的主要目的是精确判断患者的面部表情是否痛苦。相较于目前主流的微表情识别系统的主要区别在于,本系统较为关心其面部表情的痛苦程度、愤怒等具有消极性的面部表情,对于其他类型面部表情本系统将不予区分,进一步缩短训练与识别时间,提高识别效率,能够更快的响应实时性的视频流数据,降低计算的资源消耗。
同时,该模块采用的卷积神经网络是一种包含卷积层、池化层、全连接层及Softmax层的深度神经网络,图1为系统的卷积神经网络模型的网络结构图。
其中卷积层采用大小为3×3、步长为1的卷积核对图像进行卷积计算,同时使用ReLU激活函数减少计算量、增加网络稀疏性、防止发生过拟合。卷积层和池化层交替出现,对输入的参数进行降维处理,使得提取出来的特征数据方便连接全连接层。Softmax分类器输出每一个类别对应的输出概率,最终选择输出概率最大的类别作为分类器输出结果。
4 实验内容与结果
fer2013/PublicTest共含有7种表情标签,分别为anger、disgust、fear、happy、neutral、sad以及surprise。为将这些表情用于病床监护系统中去,我们将这七种表情分为两类:happy以及neutral标签的分为positive类,其余五种表情归为negative类,这五类表情因为与痛苦表情具有一定的相通性,在实际病房中,可以将该类表情均归为一类。
使用CNN模型对fer2013/PublicTest的七种表情的数据集测试结果如表1。
其中face_detection_rate表示在包含人脸的图片中识别出人脸的概率,可以评估出人脸检测模块的准确性。emotion_identify_accuracy表示在已识别出人脸的样本中划分表情性质的准确度,可以评估表情识别模块在区分积极与消极表情的准确度。total_accuracy表示最终正确划分的结果占总样本的比重,用于评价组合模型的整体性能。
同时,实际程序在CPU占用峰值<600%(6线程)的情况下,平均检测速度达到7张图(512×512)每秒,能够满足高通量数据流的病床监护系统需求。
从实验结果中,我们对积极与消极两种表情的人脸检测错误、表情识别成功与表情识别错误的样本个数的统计结果如图2所示。
5 结论
实验模型使用了目前主流的人脸表情数据集CK+、JAFFE进行了训练,对fer2013/PublicTest的数据集进行了测试。在人脸表情的识别这一模块中能达到80.56%的准确度,但由于受到人脸检测模型准确度的影响,使得最终准确度维持在57.48%。但实际应用中,我们可以在高通量的图片数据流中,对于连续的多帧图片的检测结果来综合判定短时间内患者的表情,提高最终预测的准确性。