人脸表情识别
1 项目说明
项目分为FER_train和FER_deploy两个文件夹:
FER_train:
- **CK+、JAFFE、RAF_DB、FER2013、FER+**对应的原始数据、预处理代码、处理后的数据
- 五个数据集对应的训练和测试代码
- checkpoints,训好的模型
- loss、accuracy、confusion matrix可视化
FER_deploy:
- 提供了ResidualMaskingNetwork和modified_vgg两个训练好的模型
- 对于切割好的人脸图片的表情分类识别
- 对于原始图像人脸的检测与表情识别及其可视化
- onnx模型转化
2 实验结果
CK+:
模型名称 | 测试集准确率 |
---|---|
resnet50 | 100% |
vgg19_bn | 100% |
modified_vgg | 100% |
JAFFE:
注:数据太少,随机性比较大,训练集和测试集的随机划分会影响到结果,运气差的时候只有83%
模型名称 | 测试集准确率 |
---|---|
resnet18 | 95.3% |
resnet34 | 88.4% |
resnet50 | 81.4% |
vgg19_bn | 79.1%(有时会很差) |
modified_vgg | 79.1%(有时会很差) |
RAF-DB:
模型名称 | 测试集准确率 |
---|---|
resnet18 | 76.1% |
resnet34 | 75.2% |
resnet50 | 73.8% |
vgg19_bn | 81.0% |
modified_vgg | 80.1% |
FER2013:
模型名称 | 验证集最高准确率 | 测试集准确率 |
---|---|---|
resnet18 | 65.5% | 66.1% |
resnet34 | 64.7% | 65.7% |
resnet50 | 64.4% | 65.6% |
vgg19_bn | 69.3% | 69.4% |
modified_vgg | 69.7% | 69.3% |
FER+:
模型名称 | 验证集最高准确率 | 测试集准确率 |
---|---|---|
resnet18 | 80.9% | 78.6% |
resnet34 | 81.0% | 78.5% |
resnet50 | 80.2% | 79.2% |
vgg19_bn | 84.1% | 82.5% |
modified_vgg | 84.2% | 83.0% |
Mix(RAF-DB与FER+):
模型名称 | 验证集最高准确率 | 测试集准确率 |
---|---|---|
resnet18 | 80.7% | 77.5% |
resnet34 | 80.7% | 77.5% |
resnet50 | 80.8% | 77.6% |
vgg19_bn | 84.6% | 83.0% |
modified_vgg | 84.0% | 82.8% |
注:这些都是在epoch=150,initial_lr=0.0001,Adam,FiveCrop的设置下训练的
运行train_CK+_JAFFE_RAF-DB.py和train_FER2013_FER+.py能训出更好的结果(对应设置:epoch=250,initial_lr=0.01,SGD,TenCrop)。
在这些更强更耗时的设置下,RAF-DB最优效果从81.0%提升到83.3%,如下:
训练设置参考:
https://github.com/WuJie1010/Facial-Expression-Recognition.Pytorch
3 可视化