基于卷积神经网络的面部表情识别算法及实现开题报告
2020-02-18 19:23:32
1. 研究目的与意义(文献综述)
计算机视觉是计算机科学中一个重要的分支,主要研究如何让机器理解现实世界的事物,像人一样“看”懂世界。通过计算机识别人脸在现实生活中运用前景广泛,比如社交机器人、医疗领域、情绪分析、智能安全等,一直以来都是工业界和学术界研究的热点。面部表情识别是人脸识别中重要的部分,是计算机理解人的情感的重要方向。表情识别是用计算机处理静态或动态的人脸图像,然后识别出人的表情。美国心理学家ekman和friesen通过大量的实验,总结出人的六种基本表情:快乐、气愤、惊讶、害怕、厌恶和悲伤。语言沟通传达了人类沟通的三分之一,而非语言成分传达了人类沟通的三分之二。
传统的面部表情识别方法基本上分为三个主要步骤:(1)人脸以及人脸成分检测,(2)特征提取,(3)表情分类。首先,输入静态或动态的面部图像,检测出人脸的区域和人脸成分(如眼和鼻子)或者是其他的标志;其次,从检测出的结果中提取相关的特征;然后用支持向量机(svm)、adaboost、random、forest等预先训练的面部表情分类器利用提取的特征生成识别结果。
随着深度学习和大数据的不断发展,计算机视觉领域在这些新的研究思想的推动下,也获得了快速法发展。由lecun等在1989年提出的lenet模型是历史上第一个真正意义上的卷积神经网络模型,随后出现多个改进版本,使用最多的是1998年提出的lenet-5模型,在手写识别应用上取得了较好的成绩。2006年,hinton等人在《science》上发文,其主要观点有:(1)多隐层的人工神经网络具有优异 的特征学习能力;(2)可通过“逐层预训练”(layerwisper training)来有效克服深层神经网络在训练上的困难,从此引出了深度学习(deeplearning)的研究,同时也掀起了人工神经网络的又一热潮。他的课题组为了证明深度学习的潜力,设计了alexnet模型,在2012年的ilsvrc(imagenet large scale visual recognition competition)中取得了第一,相比传统机器学习方法有一定的优势。在2014年举办的ilsvrc比赛中,牛顿大学的视觉几何组提出vggnet获得了定位任务第1名和分类任务第2名。相比较alexnet,vggnet模型中使用统一的参数,增加了深度网络模型的深度,分别定义了16层的vgg16和19层的vgg19。同样在这一年的比赛中,取得分类任务第1名的是googlenet模型,该模型更深为22层并引入了incepting单元结构。在2015年的ilsvrc比赛中,取得第1名的是resnet模型,该模型引入了残差网络(residualnetwork)结构,更深层次的网络模型不仅没有出现模型性能退化,反而取得了更好的性能。
2. 研究的基本内容与方案
目的:设计一个基于卷积神经网络的面部表情识别系统,用python语言结合Pytorch机器学习库实现,然后用现有的图像库FER2013或CK 图像库训练,再用非训练库中的图像测试,正确率达到一定的比率。通过这个过程如何搭建,训练和测试卷积神经网络模型。
初步计划采用的方案如下:
2.1 获取数据集
通过网络访问官方网站下载RER2013和CK 图像库。
2.2 预处理数据
检测人脸、数据扩充、人脸对齐,在把图片载入内存的过程中,通过构建一个队列,每次从外部磁盘读取部分数据打乱后放到内存中,内存只需维护队列大小的空间,这样避免直接全部载入内存导致内存不够用,耗时长。
2.3 搭建卷积神经网络
初步考虑搭建如下的卷积神经网络:
种类 | 核 | 步长 | 填充 | 输出 | 丢弃 |
输入 | | | | 48*48*1 | |
卷积层1 | 1*1 | 1 | | 48*48*1 | |
卷积层2 | 5*5 | 1 | 2 | 48*48*32 | |
池化层1 | 3*3 | 2 | | 23*23*32 | |
卷积层3 | 3*3 | 1 | 1 | 23*23*32 | |
池化层2 | 3*3 | 2 | | 11*11*32 | |
卷积层4 | 5*5 | 1 | 2 | 11*11*64 | |
池化层3 | 3*3 | 2 | | 5*5*64 | |
全连接层1 | | | | 1*1*2048 | |
全连接层2 | | | | 1*1*1024 | |
输出 | | | | 1*1*7 | |
卷积层的作用是对图像数据卷积运算,提取关键特征。
池化层的作用是压缩图像数据,减少参数量,避免出现过拟合,保留关键信。 采用最大池化层,最大池化方法也就是选取特征图中的最大值。
完全连接层的作用是观察高级特征和哪一分类最为吻合和拥有怎样的特定权重,计算出权重与先前层之间的点积后,得到不同分类的正确概率
2.4 训练模型
卷积神经网络的训练过程分为两个阶段。第一个阶段是数据由低层次向高层次传播的阶段,即前向传播阶段。另外一个阶段是,当前向传播得出的结果与预期不相符时,将误差从高层次向底层次进行传播训练的阶段,即反向传播阶段。
先定义损失函数,衡量和实际结果之间差距,准备采用对数损失函数,找到最小化损失函数的参数W和b,卷积神经网络中用的算法是随机梯度下降。采用如下的步骤
第1步、网络进行权值初始化;
第2步、输入数据经过卷积层,池化层,全连接层得到输出值;
第3步、求出网络的输出值与目标值之间的误差;
第4步、当误差大于期望值时,将误差传回网络中,依次求得全连接层、池化层、卷积层的误差。各层的误差相当于网络的总误差,网络应承担多少,当误差小于期望值时,结束训练
第5步、根据误差对权值进行更新,然后进行第2步。
2.5 测试模型
用非训练库中的图像测试,如果识别结果没达到预期,那么继续训练模型。
3. 研究计划与安排
第1周—第3周 搜集资料,撰写开题报告;
第4周—第5周 论文开题;
第6周—第12周 撰写论文初稿;
第12周—第15周 修改论文;
第16周 论文答辩
4. 参考文献(12篇以上)
[1] shan li, weihongdeng. deep facial expression recognition:a survey. arxiv: computer vision and pattern recognition,2018.
[2] isma hadji, richard wildes. what do we understand aboutconvolutional networks? arxiv: computer vision and patternrecognition,2018.
[3]andre teixeira lopes, edilson de aguiar, alberto ferreira de souza,thiago oliveirasantos. facial expression recognition with convolutional neuralnetworks.pattern recognition vol.61 pp.610-628,2017.