TJU 图像处理课程大作业
基于深度神经卷积网络的人脸表情识别
基于PyTorch框架,使用 VGG19 和 ResNet18 两种网络结构实现,使用了 FER2013 和 CK+两个数据集
在 FER2013 数据集上的准确率:
- VGG19:71.33%
- ResNet:72.75%
在 CK+ 数据集上的准确率:
- VGG19:81.82%
- ResNet:87.88%
│ loadData.py // 加载数据集
│ model.py // 自定义模型
│ README.md
│ run.py // 运行训练、验证、测试
│ utils.py
│ visualize.py // 可视化展示
│
├─analyzer
│ plotAcc.py // 绘制准确率曲线
│
├─data
│ ├─CK+
│ │ │ CK+_data.h5
│ │
│ └─FER2013
│ data.h5
│ fer2013.bib
│ fer2013.csv
│ README
│
├─images // 测试图片
│ │ 1.jpg
│ │
│ └─emojis
│
├─models // 保存训练好的模型
│
├─preprocess // 预处理程序
│ preprocessCK+.py
│ preprocessFER.py
- Python 3.10
- PyTorch 1.13.1
- CUDA 11.7
- h5py
- sklearn
- matplotlib
- --model:指定使用模型名称,"vgg"为VGG19,"resnet"为ResNet18
- --dataset:指定使用数据集,"FER2013" 为FER2013数据集,"CK+"为CK+数据集
- --do_train:是否训练
- --do_eval:是否在验证集上验证
- --do_test:是否在测试集上测试
- --train_batch_szie:训练时的batch_size
- --eval_batch_size:验证测试时的batch_size
- --epochs:训练轮数
- --learning_rate:学习率
- --resume:是否对已有模型从上一批次继续训练
- --show_confusion:是否展示混淆矩阵
- 需要先获取FER2013原数据集,将其放于
data/FER2013/
,命名为fer2013.csv
cd preprocess
python preprocessFER.py
-
VGG训练:
python run.py --model=vgg --dataset=FER2013 --do_train
-
ResNet训练:
python run.py --model=resnet --dataset=FER2013 --do_train
-
VGG测试:
python run.py --model=vgg --dataset=FER2013 --do_test
-
ResNet测试:
python run.py --model=resnet --dataset=FER2013 --do_test
需要在代码中修改相应的路径(训练过程的log日志,存于log文件夹下)
cd analyzer
python plotAcc.py
-
VGG:
python run.py --model=vgg --dataset=FER2013 --do_test --show_confusion
-
ResNet测试:
python run.py --model=resnet --dataset=FER2013 --do_test --show_confusion
cd preprocess
python preprocessCK+.py
-
VGG训练:
python run.py --model=vgg --dataset=CK+ --do_train
-
ResNet训练:
python run.py --model=resnet --dataset=CK+ --do_train
-
VGG测试:
python run.py --model=vgg --dataset=CK+ --do_test
-
ResNet测试:
python run.py --model=resnet --dataset=CK+ --do_test
需要在代码中修改相应的路径(训练过程的log日志,存于log文件夹下)
cd analyzer
python plotAcc.py
-
VGG:
python run.py --model=vgg --dataset=CK+ --do_test --show_confusion
-
ResNet测试:
python run.py --model=resnet --dataset=CK+ --do_test --show_confusion
需要在visualize.py中修改待分析的图片路径,如果需要测试新的图片,需要将图片放于images/
路径下
python visualize.py