基于深度学习的人脸表情实时检测(一)

最近,我fork了GitHub上的一个深度学习的开源项目,项目链接为:https://github.com/oarriaga/face_classification

我的系统环境是虚拟机Ubuntu18.04,Python3.6.5,使用的开发环境是pycharm-2018.1.4专业版。本项目所需要的环境配置请见我之前的技术博客:https://blog.csdn.net/blgpb/article/details/80780868

首先,clone下来这个项目,打开这个工程,如下图所示。这个项目要能成功运行,需要4个步骤。

第一个步骤

 

 

 

打开左侧项目文件列表中的video_emotion_color_demo.py,会提示出现如下的错误:

以上代码的作用是从项目文件夹utils中导入package,但是由于未能在pycharm中正确地添加项目的路径,导致IDE无法导入这些函数。解决办法是把导入的具体路径写清楚,可以采用如下的方法:

from src.utils.datasets import get_labels
from src.utils.inference import detect_faces
from src.utils.inference import draw_text
from src.utils.inference import draw_bounding_box
from src.utils.inference import apply_offsets
from src.utils.inference import load_detection_model
from src.utils.preprocessor import preprocess_input

第二个步骤

 

 

本项目运行于TensorFlow的框架下,但是对于仅安装了TensorFlow的CPU版本而未安装GPU版本的环境下,运行时会报错:

为了解决这个问题,在python文件中加入如下的代码即可以解决:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

 

第三个步骤

由于本项目是人脸表情的实时检测,需要使用笔记本电脑的摄像头。在VMware虚拟机中连接摄像头的操作是,打开“虚拟机”选项->"可移动设备"下,选择对应的摄像头,点击“连接”。

为了验证摄像头是否连接成功,接下来打开Ubuntu shell终端,输入:

sudo apt-get install cheese

安装完成后,在shell终端启动cheese,如以上操作都正常,可以看到摄像头灯点亮并且cheese窗口显示实时的视频画面。

如果以上的操作都正常,但是cheese出来的视频窗口是黑屏的,就VMware的“虚拟机”->“虚拟机设置”->USB控制器”下,查看“USB兼容性”,如果当前是“USB2.0”就修改为“USB3.0”,如果当前是“USB3.0”就改为“USB2.0”。然后再在“虚拟机”->“可移动设备”下重新连接camera此时cheese就可以正常显示实时的视频画面,并且pycharm下的项目也能正常调用摄像头。

第四个步骤

 

 

当尝试运行程序时,会出现如下的错误:

这个错误是由于pycharm中Qt环境设置出现了问题,解决办法如下:

 

 

点击pycharm中的"Run"->"Edit Configurations",弹出如下的窗口

 

 

点击红框右侧的按钮,弹出一个对话框,点击下图中绿色的“+”,在”Name“下输入”QT_X11_NO_MITSHM“,”Value“下输入”1“,点击OK确认。

在经历了上述的4个步骤后,就可以成功运行这个程序了。运行结果如下:

                                                您的支持是我不断前行的动力,谢谢!

  • 11
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
人脸表情识别 2020.8.22,重构了整个仓库代码,改用Tensorflow2中的keras api实现整个系统。考虑到很多反映jupyter notebook写的train使用起来不太方便,这里改成了py脚本实现。 2020.12.18,根据反馈,修改了Jaffe的优化器设置。 简介 使用卷积神经网络构建整个系统,在尝试了Gabor、LBP等传统人脸特征提取方式基础上,深度模型效果显著。在FER2013、JAFFE和CK+三个表情识别数据集上进行模型评估。 环境部署 基于Python3和Keras2(TensorFlow后端),具体依赖安装如下(推荐使用conda虚拟环境)。 git clone https://github.com/luanshiyinyang/FacialExpressionRecognition.git cd FacialExpressionRecognition conda create -n FER python=3.6 source activate FER conda install cudatoolkit=10.1 conda install cudnn=7.6.5 pip install -r requirements.txt 如果你是Linux用户,直接执行根目录下的env.sh即可一键配置环境,执行命令为bash env.sh。 数据准备 数据集和预训练模型均已经上传到百度网盘,链接给出,提取密码为2pmd。下载后将model.zip移动到根目录下的models文件夹下并解压得到一个*.h5的模型参数文件,将data.zip移动到根目录下的dataset文件夹下并解压得到包含多个数据集压缩文件,均解压即可得到包含图像的数据集(其中rar后缀的为原始jaffe数据集,这里建议使用我处理好的)。 项目说明 传统方法 数据预处理 图片降噪 人脸检测(HAAR分类器检测(opencv)) 特征工程 人脸特征提取 LBP Gabor 分类器 SVM 深度方法 人脸检测 HAAR分类器 MTCNN(效果更好) 卷积神经网络 用于特征提取+分类 网络设计 使用经典的卷积神经网络,模型的构建主要参考2018年CVPR几篇论文以及谷歌的Going Deeper设计如下网络结构,输入层后加入(1,1)卷积层增加非线性表示且模型层次较浅,参数较少(大量参数集中在全连接层)。 模型训练 主要在FER2013、JAFFE、CK+上进行训练,JAFFE给出的是半身图因此做了人脸检测。最后在FER2013上Pub Test和Pri Test均达到67%左右准确率(该数据集爬虫采集存在标签错误、水印、动画图片等问题),JAFFE和CK+5折交叉验证均达到99%左右准确率(这两个数据集为实验室采集,较为准确标准)。 执行下面的命令将在指定的数据集(fer2013或jaffe或ck+)上按照指定的batch_size训练指定的轮次。训练会生成对应的可视化训练过程,下图为在三个数据集上训练过程的共同绘图。 python src/train.py --dataset fer2013 --epochs 300 --batch_size 32 模型应用 与传统方法相比,卷积神经网络表现更好,使用该模型构建识别系统,提供GUI界面和摄像头实时检测(摄像必须保证补光足够)。预测时对一张图片进行水平翻转、偏转15度、平移等增广得到多个概率分布,将这些概率分布加权求和得到最后的概率分布,此时概率最大的作为标签(也就是使用了推理数据增强)。 GUI界面 注意,GUI界面预测只显示最可能是人脸的那个脸表情,但是对所有检测到的人脸都会框定预测结果并在图片上标记,标记后的图片在output目录下。 执行下面的命令即可打开GUI程序,该程序依赖PyQT设计,在一个测试图片(来源于网络)上进行测试效果如下图。 python src/gui.py 上图的GUI反馈的同时,会对图片上每个人脸进行检测表情识别,处理后如下图。 实时检测 实时检测基于Opencv进行设计,旨在用摄像头对实时视频流进行预测,同时考虑到有些人的反馈,当没有摄像头想通过视频进行测试则修改命令行参数即可。 使用下面的命令会打开摄像头进行实时检测(ESC键退出),若要指定视频进行进行检测,则使用下面的第二个命令。 python src/recognition_camera.py python src/recognition_camera.py --source 1 --video_path 视频绝对路径或者相对于该项目的根目录的相对路径 下图是动态演示的在Youtube上某个视频上的识别结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值