项目简介本项目是一个面向人脸表情图像的情绪识别系统前端通过 Django 页面完成图片上传和模型选择后端调用 PyTorch 训练好的分类模型进行推理并在页面展示预测类别与概率。项目原页面与部分训练脚本中曾保留旧业务命名本次已按当前真实数据集和业务目标统一为“情绪识别系统”。技术栈Web 框架Django深度学习框架PyTorch、torchvision数据处理与可视化Pandas、Matplotlib、PIL支持模型AlexNet、GoogLeNet、ResNet、VggNet、LeNet、MobileNet、DenseNet、EfficientNet、RegNet、ShuffleNet、Swin Transformer、Vision Transformer数据集说明系统使用项目本地数据集 data_set/FER_2013目录结构为 train/test 两个子集共包含训练集 28709 张、测试集 3589 张图片。类别采用 FER2013 常见 7 类情绪编号映射0 anger、1 disgust、2 fear、3 happy、4 sad、5 surprise、6 neutral。当前统计为anger(生气) train3995, test491disgust(厌恶) train436, test55fear(恐惧) train4097, test528happy(开心) train7215, test879sad(悲伤) train4830, test594surprise(惊讶) train3171, test416neutral(中性) train4965, test626。训练数据集分布如下测试集分布如下系统功能图片上传用户选择一张人脸表情图片作为识别输入。模型选择页面根据 models 目录下可用权重动态列出可选模型。情绪预测后端按选择的模型加载对应 predict.py并输出情绪类别和概率。结果展示页面展示使用模型、情绪类别、识别概率和上传图片。核心流程说明训练阶段读取 data_set/FER_2013/train 作为训练集若不存在 val 目录则自动使用 data_set/FER_2013/test 作为验证集。训练脚本通过 torchvision.datasets.ImageFolder 读取类别目录并将 0-6 类编号写入 class_indices.json 的情绪标签映射。Django 页面提交图片后views.py 根据用户选择的模型导入对应模型目录下的 predict 函数。predict.py 完成图像预处理、模型加载、前向推理和 softmax 概率计算最终返回类别与概率。训练与运行流程训练单个模型示例python main_train.py --model swin --data_set FER_2013 --epoch 10 --batch_size 64启动 Web 系统示例python manage.py runserver访问页面后上传人脸表情图片选择模型并点击开始识别。项目总结与优化方向本项目完成了从 FER_2013 数据集读取、模型训练、类别映射、Django 页面上传到推理展示的完整流程。当前已将旧业务命名和默认数据集路径统一到情绪识别场景避免页面、训练脚本和类别文件之间互相矛盾。后续可继续优化的方向包括补充更规范的训练日志保存、增加混淆矩阵和分类报告、统一模型权重命名、加入摄像头实时识别入口以及对表情类别不均衡问题进行采样或损失函数优化。
基于 Django 与 PyTorch 的情绪识别系统项目实践
项目简介本项目是一个面向人脸表情图像的情绪识别系统前端通过 Django 页面完成图片上传和模型选择后端调用 PyTorch 训练好的分类模型进行推理并在页面展示预测类别与概率。项目原页面与部分训练脚本中曾保留旧业务命名本次已按当前真实数据集和业务目标统一为“情绪识别系统”。技术栈Web 框架Django深度学习框架PyTorch、torchvision数据处理与可视化Pandas、Matplotlib、PIL支持模型AlexNet、GoogLeNet、ResNet、VggNet、LeNet、MobileNet、DenseNet、EfficientNet、RegNet、ShuffleNet、Swin Transformer、Vision Transformer数据集说明系统使用项目本地数据集 data_set/FER_2013目录结构为 train/test 两个子集共包含训练集 28709 张、测试集 3589 张图片。类别采用 FER2013 常见 7 类情绪编号映射0 anger、1 disgust、2 fear、3 happy、4 sad、5 surprise、6 neutral。当前统计为anger(生气) train3995, test491disgust(厌恶) train436, test55fear(恐惧) train4097, test528happy(开心) train7215, test879sad(悲伤) train4830, test594surprise(惊讶) train3171, test416neutral(中性) train4965, test626。训练数据集分布如下测试集分布如下系统功能图片上传用户选择一张人脸表情图片作为识别输入。模型选择页面根据 models 目录下可用权重动态列出可选模型。情绪预测后端按选择的模型加载对应 predict.py并输出情绪类别和概率。结果展示页面展示使用模型、情绪类别、识别概率和上传图片。核心流程说明训练阶段读取 data_set/FER_2013/train 作为训练集若不存在 val 目录则自动使用 data_set/FER_2013/test 作为验证集。训练脚本通过 torchvision.datasets.ImageFolder 读取类别目录并将 0-6 类编号写入 class_indices.json 的情绪标签映射。Django 页面提交图片后views.py 根据用户选择的模型导入对应模型目录下的 predict 函数。predict.py 完成图像预处理、模型加载、前向推理和 softmax 概率计算最终返回类别与概率。训练与运行流程训练单个模型示例python main_train.py --model swin --data_set FER_2013 --epoch 10 --batch_size 64启动 Web 系统示例python manage.py runserver访问页面后上传人脸表情图片选择模型并点击开始识别。项目总结与优化方向本项目完成了从 FER_2013 数据集读取、模型训练、类别映射、Django 页面上传到推理展示的完整流程。当前已将旧业务命名和默认数据集路径统一到情绪识别场景避免页面、训练脚本和类别文件之间互相矛盾。后续可继续优化的方向包括补充更规范的训练日志保存、增加混淆矩阵和分类报告、统一模型权重命名、加入摄像头实时识别入口以及对表情类别不均衡问题进行采样或损失函数优化。