1. 项目概述
这个基于MATLAB和CNN的人脸表情识别系统是我在计算机视觉课程中的实践项目。它能够自动识别7种基本情绪:愤怒、厌恶、恐惧、高兴、中性、悲伤和惊讶。整个系统采用模块化设计,包含数据准备、模型训练、预测功能和用户友好的GUI界面。
提示:虽然项目使用了模拟数据集进行演示,但代码结构完全兼容真实数据集如FER2013或CK+,只需替换数据加载部分即可。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 整体工作流程
系统采用经典的深度学习流水线:
- 数据准备阶段:生成或加载表情图像数据集
- 模型训练阶段:构建并训练CNN网络
- 应用阶段:通过GUI界面进行实时识别
2.2 文件结构说明
项目采用清晰的模块化组织:
code复制FaceEmotion_CNN/
├── main_gui.m # 主界面入口
├── create_dataset.m # 数据生成脚本
├── train_network.m # 模型训练核心
├── predict_image.m # 单图预测函数
├── report_content.txt # 报告素材
└── dataset/ # 图像数据存储
这种结构便于维护和扩展,每个功能都有独立的实现文件。
3. 数据准备实现
3.1 数据集生成
create_dataset.m脚本会生成7类模拟表情图像,每类50张,共350张48×48像素的灰度图。虽然这只是演示用途,但模拟了真实表情的关键特征:
matlab复制% 生成愤怒表情的特征模拟
img(1:10, 15:35) = img(1:10, 15:35) - 0.3; % 眉毛区域变暗
% 生成高兴表情的特征模拟
img(end-10:end, 15:35) = img(end-10:end, 15:35) + 0.3; % 嘴角上扬
注意:实际应用中应该替换为真实数据集。推荐使用FER2013(35,887张)或CK+(593个序列)等标准表情数据集。
3.2 数据增强策略
在train_network.m中,我们配置了多种数据增强技术来提升模型泛化能力:
matlab复制augmentedImds = augme
