首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TensorFlow深度学习:CNN做人脸表情识别,准确率达93%

TensorFlow深度学习:CNN做人脸表情识别,准确率达93%

作者头像
机器学习AI算法工程
发布2019-10-28 18:10:44
6.2K0
发布2019-10-28 18:10:44
举报

此次分享的项目是利用tensorflow构建一个CNN网络来对fer2013数据集进行训练以实现面部表情识别的小项目。

首先,我们需要现在官网上下载fer2013数据集,将数据集进行解压,会生成一个fer2013.csv文件,我们首先要对这个.csv文件进行简单的处理。

fer2013数据集将表情大致分为7类,fer2013.csv中分别标注了每张图片的标签,特征值和分类。我们首先根据分类将数据集划分为train, test和val。

fer2013数据集 官网

https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data

或者

关注微信公众号datayx 然后回复“表情识别”即可获取本文代码和数据集。

之后,我们需要将根据其特征值将其还原为48*48的灰度图像:

在这之后,我们就可以对数据集构建batch和CNN网络对其进行训练了。

这样通过调用get_batch()这个函数就可以生成相应的batch,这将对我们后边训练数据非常重要。

将数据的准备工作完成之后,我们接下来来构建本次项目需要使用的CNN网络。本次构建的网络包含2个卷积层,2个池化层,2个全连接层以及1个softmax层,为了训练的方便,还在模型代码中加入了计算损失和准确率以及训练的函数,方便之后直接调用。具体代码如下:

将模型构建好之后,我们就可以直接开始训练了。将训练轮数设置为50000次,学习率设为0.0001,开始训练:

在训练50000轮后,训练的准确率达到了95%左右,验证准确率也到达93%左右,算是一个可以接受的值了。

下面,我们就要来实现从摄像头来识别人脸并对我们做出的表情做出判断。

从摄像头来识别人脸,我们要用到openCV技术以及写好的人脸识别器。人脸识别器有许多种,我们此次选用haarcascade_frontalface_default.xml这个分类器。

使用摄像头截取人像的时候,我们将摄像头此时的一帧图像截取并保存下来。代码如下:

这样调用CatchPICFromVideo()这个函数可以生成瞬时帧的图片,并将其命名为0.jpg。

接着,我们将截下来的图片进行裁剪,使之大小为48*48,并处理为灰阶位图,便于导入网络中进行预测。

这之后我们就能得到一个48*48的灰阶位图。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习AI算法工程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档