<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
<!-- code_chunk_output -->
- [1 项目介绍](#1-项目介绍)
- [1.1 功能说明](#11-功能说明)
- [1.2 设计意义](#12-设计意义)
- [2 研究背景](#2-研究背景)
- [2.1 表情的研究](#21-表情的研究)
- [2.2 表情识别的发展](#22-表情识别的发展)
- [3 技术介绍](#3-技术介绍)
- [3.1 项目流程图(实时为例)](#31-项目流程图实时为例)
- [3.2 项目流程说明](#32-项目流程说明)
- [3.3 模型介绍](#33-模型介绍)
- [3.4 模型训练](#34-模型训练)
- [3.5 模型评估](#35-模型评估)
- [4 成果截图](#4-成果截图)
- [5 附件说明](#5-附件说明)
# 作者
- 张世奇(第一作者)
- 邵俊(第二作者)
- 汪锦星(第三作者)
# 1 项目介绍
## 1.1 功能说明
该项目实现对捕捉到人脸进行表情识别,并制作两种形式:
1. 实时识别
2. 截图识别(拓展)
该项目一共设置7种表情类型:
1. anger(生气)
2. disgust(厌恶)
3. fear(恐惧)
4. happiness(高兴)
5. neutral(中性)
6. sadness(悲伤)
7. surprise(惊喜)
## 1.2 设计意义
表情可以反应一个人的内心,既可以帮助教师理解学生的感受,也可以帮助警察在审讯时捕捉嫌疑人的心理变化
# 2 研究背景
## 2.1 表情的研究
面部表情的研究始于19世纪,1872年,达尔文在他著名的论著《人类和动物的表情(The Expression of the Emotions in Animals andMan,1872)》中就阐述了人的面部表情和动物的面部表情之间的联系和区别。
1971年,Ekman和Friesen对现代人脸表情识别做了开创性的工作,他们研究了人类的6种基本表情(即高兴、悲伤、惊讶、恐惧、愤怒、厌恶),确定识别对象的类别,并系统地建立了有上千幅不同表情的人脸表情图像数据库,细致的描述了每一种表情所对应的面部变化,包括眉毛、眼睛、眼睑、嘴唇等等是如何变化的。
## 2.2 表情识别的发展
1978年,Suwa等人对一段人脸视频动画进行了人脸表情识别的最初尝试,提出了在图像序列中进行面部表情自动分析。
20世纪90年代开始,由K.Mase和A.Pentland使用光流来判断肌肉运动的主要方向,使用提出的光流法进行面部表情识别之后,自动面部表情识别进入了新的时期。
# 3 技术介绍
## 3.1 项目流程图(实时为例)
```mermaid
graph TD
s(start) --> 初始化程序 --> p[捕捉图像] --> i{识别面部} --识别成功 --> 识别表情 --> z[展示标注] --> p
i -- 识别失败 --> p
z --按下指定键--> e(结束程序)
```
## 3.2 项目流程说明
1. 在初始化程序阶段,加载了模型和图像预处理方式以及opencv封装好的面部识别算法(haarcascade_frontalface_default.xml),输入的图像为已封装算法识别区域
2. 在初始化程序阶段,调用opencv的VideoCapture函数打开本机摄像头
## 3.3 模型介绍
该模型为vgg16模型的变种,主要变化在最后输出类别即softmax设置为7个类别
输入:PIL图像对象,大小为224 * 224 * 3
输出:类别序列(0-6)
```mermaid
graph LR
输入图像224*244*3 --> 特征提取层7*7*512 --> 全连接层第一层4096 --> softmax7
```
## 3.4 模型训练
```python
loss_save = []
flag = 0
lr = 0.002
def train():
batch_size = 7
# 该处加载旧模型
model = load_pretrained()
optimizer = optim.SGD(params=model.parameters(), lr=lr)
device = torch.device("cuda:0")
model.to(device)
loss_func = nn.CrossEntropyLoss()
train_set = My_Dataset('archive/jaffe/train', T.ToTensor())
train_loader = DataLoader(train_set, batch_size, shuffle=True)
for i in range(1000):
loss_temp = 0
for j, (batch_data, batch_label) in enumerate(train_loader):
batch_data, batch_label = batch_data.cuda(), batch_label.cuda()
optimizer.zero_grad()
prediction = model(batch_data)
loss = loss_func(prediction, batch_label)
loss_temp += loss.item()
loss.backward()
optimizer.step()
print('[%d] loss: %.4f' % (i + 1, loss_temp / len(train_loader)))
torch.save(model.state_dict(), 'emo12.pth')
```
由于训练次数较多,共训练12代模型,loss曲线无法制作
## 3.5 模型评估
```python
def test(model):
model.eval()
# 批量数目
batch_size = 7
# 预测正确个数
correct = 0
# 加载数据
test_set = My_Dataset_test('archive/jaffe/test', transform=T.ToTensor())
test_loader = DataLoader(test_set, batch_size, shuffle=False)
# 开始
for batch_data, batch_label in test_loader:
# 放入GPU中
batch_data, batch_label = batch_data.cuda(), batch_label.cuda()
# batch_data, batch_label = batch_data.cpu(), batch_label.cpu()
# 预测
prediction = model(batch_data)
# 将预测值中最大的索引取出,其对应了不同类别值
predicted = torch.max(prediction.data, 1)[1]
# 获取准确个数
correct += (predicted == batch_label).sum()
print('准确率: %.2f %%' % (100 * correct / 63)) # 因为总共63个测试数据
```
第一次准确率57.14%
第二次准确率65.08%
第三次准确率60.32%
结论:该模型准确率大于60%
# 4 成果截图
[![pCk4GpF.png](https://s1.ax1x.com/2023/06/08/pCk4GpF.png)](https://imgse.com/i/pCk4GpF)
# 5 附件说明
1. 模型仅保存最后一代,即emo12.pth (太大了没有上传)
3. archive文件夹为数据集文件夹
4. rubbish.py实现实时展示和识别
5. rubbish2.py实现实时展示和截图识别
6. vgg16.py包含模型和模型训练测试
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
基于卷积神经网络的表情识别.zip (207个子文件)
surprise_28.jpg 45KB
happiness_22.jpg 45KB
anger_21.jpg 45KB
anger_20.jpg 45KB
anger_19.jpg 45KB
disgust_28.jpg 45KB
anger_28.jpg 45KB
fear_21.jpg 45KB
sadness27.jpg 45KB
fear_29.jpg 45KB
neutral_21.jpg 45KB
happiness_28.jpg 45KB
sadness22.jpg 45KB
sadness26.jpg 45KB
happiness_14.jpg 45KB
surprise_26.jpg 45KB
surprise_21.jpg 45KB
happiness_20.jpg 45KB
fear_28.jpg 45KB
anger_14.jpg 45KB
disgust_24.jpg 45KB
surprise_25.jpg 45KB
sadness28.jpg 45KB
disgust_29.jpg 45KB
disgust_25.jpg 45KB
disgust_27.jpg 45KB
anger_29.jpg 45KB
fear_20.jpg 45KB
sadness29.jpg 45KB
surprise_29.jpg 45KB
neutral_20.jpg 45KB
surprise_27.jpg 45KB
happiness_21.jpg 45KB
anger_27.jpg 45KB
sadness21.jpg 45KB
neutral_19.jpg 45KB
fear_27.jpg 45KB
fear_22.jpg 45KB
disgust_26.jpg 45KB
disgust_13.jpg 45KB
happiness_26.jpg 45KB
fear_14.jpg 45KB
surprise_16.jpg 45KB
surprise_1.jpg 45KB
surprise_20.jpg 45KB
anger_13.jpg 45KB
anger_26.jpg 45KB
surprise_2.jpg 45KB
fear_15.jpg 45KB
anger_15.jpg 45KB
happiness_29.jpg 45KB
happiness_15.jpg 45KB
neutral_14.jpg 45KB
neutral_1.jpg 45KB
anger_25.jpg 45KB
happiness_2.jpg 45KB
happiness_27.jpg 45KB
disgust_14.jpg 45KB
happiness_1.jpg 45KB
disgust_20.jpg 45KB
surprise_19.jpg 45KB
neutral_2.jpg 45KB
neutral_15.jpg 45KB
fear_26.jpg 45KB
neutral_13.jpg 45KB
sadness20.jpg 45KB
disgust_19.jpg 45KB
neutral_3.jpg 45KB
disgust_15.jpg 45KB
surprise_15.jpg 45KB
sadness3.jpg 45KB
sadness2.jpg 45KB
happiness_3.jpg 45KB
surprise_18.jpg 45KB
sadness15.jpg 45KB
happiness_16.jpg 45KB
sadness1.jpg 45KB
fear_16.jpg 45KB
surprise_13.jpg 45KB
surprise_14.jpg 45KB
anger_23.jpg 45KB
neutral_27.jpg 45KB
sadness16.jpg 45KB
disgust_3.jpg 44KB
sadness14.jpg 44KB
happiness_4.jpg 44KB
anger_24.jpg 44KB
fear_25.jpg 44KB
surprise_3.jpg 44KB
disgust_1.jpg 44KB
surprise_24.jpg 44KB
fear_3.jpg 44KB
fear_7.jpg 44KB
anger_10.jpg 44KB
fear_23.jpg 44KB
anger_2.jpg 44KB
surprise_22.jpg 44KB
disgust_23.jpg 44KB
surprise_17.jpg 44KB
happiness_17.jpg 44KB
共 207 条
- 1
- 2
- 3
资源评论
- 爱学习的菜2024-04-26大佬能发下相关环境配置吗
妄北y
- 粉丝: 2w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功