一个不知名大学生,江湖人称菜狗
original author: jacky Li
Email : 3435673055@qq.com
Time of completion:2022.12.12
Last edited: 2022.12.12
目录
编辑
人脸表情识别 实战项目
简介
环境部署
数据准备
项目说明
传统方法
深度方法
网络设计
模型训练
模型应用
GUI界面
实时检测
作者有言
人脸表情识别 实战项目
简介
使用卷积神经网络构建整个系统,在尝试了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 -y
conda activate FER
conda install cudatoolkit=10.1 -y
conda install cudnn=7.6.5 -y
pip install -r requirements.txt数据准备
数据集和预训练模型均已经上传到CSDN资源https://download.csdn.net/download/weixin_62075168/87270790 https://download.csdn.net/download/weixin_62075168/87270790,下载后将
https://download.csdn.net/download/weixin_62075168/87270790,下载后将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

实时检测
实时检测基于Opencv进行设计,旨在用摄像头对实时视频流进行预测,同时考虑到有些人的反馈,当没有摄像头想通过视频进行测试则修改命令行参数即可。
使用下面的命令会打开摄像头进行实时检测(ESC键退出),若要指定视频进行进行检测,则使用下面的第二个命令。
python src/recognition_camera.pypython src/recognition_camera.py --source 1 --video_path 视频绝对路径或者相对于该项目的根目录的相对路径作者有言
如果感觉博主讲的对您有用,请点个关注支持一下吧,将会对此类问题持续更新……
如果需要源码请找博主私聊一下叭








![[MySQL]-压力测试之性能监测指标](https://img-blog.csdnimg.cn/8a5d5d6f4a9a467eac629a77eb0b36ea.png#pic_center)











