一种基于Keras和CNN的人脸表情识别系统设计

2018-12-22 10:55樊雷
电脑知识与技术 2018年33期

樊雷

摘要:采用深度学习算法的人脸表情识别系统需要较高的CPU或GPU硬件进行模型训练。实践中也需要将模型嵌入不同的硬件终端平台进行识别,工程化后的系统软硬件成本较高。该文提出一种B/S结构的低成本静态图片人脸表情识别系统,技术路线采用Bootstrap、Python、Anaconda、Tensorflow和Keras,采用CNN实现人脸检测定位和表情检测分类功能。模型训练集采用了CK+、Fer2013、日本的JAFFE等开放数据库。系统通过浏览器端上传人脸表情图片进行识别处理,将GPU训练好的CNN模型在单机低端硬件配置上实现了内存预先加载,单张识别速度小于0.002秒,总体表情识别率可以达到65%左右。

关键词:Keras;FER;CK+

中图分类号: TP391 文献标识码:A 文章编号:1009-3044(2018)33-0178-02

Abstract: Facial Expression Recognition System using the algorithm of Deep Learning always needs higher CPU or GPU hardware for training models. In practice, it is also necessary to embed the model into different hardware terminal platforms for recognizing, and the cost of software and hardware is higher after engineering. This paper presents a low-cost of structure for static picture of Facial Expression Recognition System. The technical route includes Bootstrap, Python, Anaconda, TensorFlow and Keras using CNN to realize detecting, locating and classifying of face expression. The training sets of model use open databases such as CK+, Fer2013, and JAFFE of Japan. The system uploads the pictures of facial expression by browser for recognizing and processing. The CNN model trained by GPU is pre-loaded on the low-end hardware of computer. The recognition speed of a single sheet is less than 0.002 seconds, and the overall expression recognition rate can reach about 65%.

Keywords: Keras; FER; CK+

1 概述

20世纪70年代心理学家Ekman提出了六种基础表情(高兴、生气、害怕、厌恶、悲伤、惊讶)。各国学者在不断深入研究中发现基本表情并不能准确表达出人类复杂的情绪,有研究表明多个离散的基础表情可以组合成复合表情,比如当人们有意外惊喜时表情可以既开心又惊讶。此外人脸的微表情(最短可持续0.04秒)有时候会根据心理变化表达相反的情绪,需要依据肢体动作、语言、事件等上下文关系才能准确判断对方所要表达的情绪。

FER(Facial Expression Recognition面部表情识别)一般包含静态图像FER和动态序列FER。静态图像FER一般指图片表情识别,动态序列FER是指基于视频序列进行分析建模。近年来FER算法和数据集发展的概要情况如图1。

2 系统技术实现

该文中的FER系统采用B/S结构,技术路线选用Bootstrap、Python、Anaconda、TensorFlow和Keras进行实现。Keras可以选择TensorFlow、Theano以及CNTK作為后端,支持构建CNN、RNN等多种深度学习神经网络模型,使用CPU或GPU训练模型。

系统采用TensorFlow作为后端,使用GPU训练Keras设计的CNN模型,将训练好的模型存为hdf5格式后通过Python代码实现的FER引擎进行模型内存预加载调用,实现了算法模型、业务代码和前后端架构解耦。系统对Python代码进行了优化,在后端内存中预加载算法模型,可以进行多目标定位识别人脸表情,对工程硬件需求大大降低,识别速度快。后端将人脸定位模型和识别模型分离加载,可以随意替换优化后的不同CNN深度学习模型。

3 CNN训练网络

FER技术算法一般可以分为三类:基于人脸几何形状、基于子空间和基于分类器模型。基于分类器模型主要包括神经网络、支持向量基(SVM)、隐马尔可夫模型(HMM)、混合高斯(GMM)等主流方法。

卷积神经网络(CNN)是人工神经网络的一种,如今已成为当前语音识别和图像识别领域的研究热点,CNN是引起了学术界和工业界广泛重视的一种高效识别方法[1]。

CNN是包含卷积层、降采样层和全连接层的深度神经网络,层的组织方式一般为卷积层与降采样层交替出现,顶部是全连接层,输入是表示图像的二维数据,输出是预设长度的判别向量 [2] 。该系统采用的CNN模型结构如表1。

系统采用了3层卷积、3层池化和2层全连接层的CNN结构进行训练。[3]

4 实验结果

FER-2013包含35887张48*48像素灰色图片,训练集数据分布:angry:3995 、disgust:436 、fear:4097 、happy:7215 、sad:4830 、surprise:3171 、normal:4965 。训练集中加入了CK+的642个、 JAFFE的214张表情分类图片以及部分收集的彩色图片进行混合训练,训练实验结果如表2:

测试服务器硬件为低端AMD 640处理器超频稳定至3.3GHz,8G内存,如表3:

实验结果表明在低端硬件配置下也能够较好的提供基于深度学习算法的人脸表情识别功能,大大降低深度学习算法应用的硬件门槛,后端也可较好的适配多种前端智能硬件,降低软硬件成本。

该文设计的系统可以实现互联网跨平台应用;原型设计和代码实现分离,并行开发节省开发时间;采用Keras训练好的模型,hdf5文件可以方便进行模型迭代和替换,便于工程化实现;功能扩展性强,基于Http协议,适用各种互联网硬件终端;识别速度和识别率可以进一步改进和提高。

5 结束语

人脸表情识别是一个多学科交叉的研究课题,已经成为心理学、医学、计算机视觉、模式识别、机器人、智能控制、安全等领域十分热门的研究课题,在智能人机交互领域具有重要的应用价值。近年来人脸表情识别开始应用于视频、动画,在嵌入式智能家居设备中也起到了必不可少的作用,在大数据支持下采用深度学习卷积神经网络CNN可以大幅提高表情识别能力进而实现更加友好便利的人机AI交互。FER系统的工程化、鲁棒性、实时性、可扩展性和识别率都有待进一步提高。

参考文献:

[1] 刘宇灏. 微表情识别的理论和方法研究[D]. 南京: 东南大学, 2016: 55-56.

[2] 罗翔云, 周晓慧, 付克博. 基于深度學习的人脸表情识别[J]. 工业控制计算机, 2017, 30(5): 92-93.

[3] 卢官明, 何嘉利, 闫静杰, 等. 一种用于人脸表情识别的卷积神经网络[J]. 南京邮电大学学报: 自然科学版, 2016, 36(1): 16-22.

[4] 马丽. 基于社会服务机器人的脸部共性信息识别系统[D]. 成都: 电子科技大学, 2016: 59-65.

[5] 姜慧. 基于迁移学习的人脸识别研究[D]. 青岛: 青岛科技大学, 2018: 50-52.

【通联编辑:谢媛媛】