本项目专注于表情识别技术在人脸识别系统中的应用,提供详细代码示例及实现方法,旨在提升人机交互体验和系统智能化水平。
人脸表情识别项目于2020年8月22日重构了整个代码仓库,并改用TensorFlow 2中的Keras API来实现系统。考虑到Jupyter Notebook的训练脚本使用起来不太方便,这里将其实现方式改为py脚本。
在2020年12月18日根据用户反馈修改了JAFFE数据集优化器设置。该项目基于卷积神经网络构建整个系统,在尝试Gabor、LBP等传统人脸特征提取方法后发现深度模型效果显著。项目使用FER2013、JAFFE和CK+三个表情识别数据集进行评估,环境部署要求Python 3.6版本及Keras(TensorFlow 后端)。具体依赖安装如下:
```
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 cudnn=7.6.5
pip install -r requirements.txt
```
对于Linux用户,可以直接执行根目录下的env.sh脚本一键配置环境。
数据准备方面,项目已将数据集和预训练模型上传至百度网盘。下载后请按照说明移动解压相应文件到指定位置。
在传统方法中使用了图片降噪、人脸检测(HAAR分类器及opencv)、特征工程等步骤;而在深度学习部分则采用MTCNN进行人脸检测,通过卷积神经网络实现特征提取与分类任务。项目基于经典卷积神经网络设计模型,并参考2018年CVPR论文和谷歌的Going Deeper研究成果。
训练在FER2013、JAFFE及CK+数据集上完成,在后两个标准实验室采集的数据集中达到99%左右准确率,而前者由于存在标签错误等问题仅达67%。可通过以下命令指定数据集(fer2013或jaffe或ck+)、训练轮次和batch size进行模型训练:
```
python src/train.py --dataset fer2013 --epochs 300 --batch_size 32
```
项目提供GUI界面及摄像头实时检测功能,使用推理数据增强技术提高预测准确性。通过以下命令即可启动GUI程序或开启视频流预测:
```
python src/gui.py
python src/recognition_camera.py [--source camera_index | --video_path video_file_path]
```