本科项目 / 2025 · UNIVERSITY OF SHEFFIELD

从一张图像,
到一种表情。

微调已有视觉模型,并将它连接到可运行的网页应用。

7表情类别
Swin-T预训练模型
Web端到端原型
视觉系统
Illustrative face, image patches and classifier outputs. Not a real person or model prediction.
原创示意图 · 非模型输出01 / 02

01 / 项目速览

一眼看懂这个项目。

30 秒阅读
01

动机

显示一个标签很简单,把图像处理、模型和界面连起来才是工程任务。

02

问题

预训练模型能否分类表情?更多数据能否改善不同测试集的表现?

03

方法

微调 Swin Tiny,对比两个训练阶段,再将 Python 推理接入 Java 网页应用。

04

证据

按数据集查看准确率和混淆矩阵,避免总体分数掩盖局部退步。

05

贡献

数据处理、训练管理、评估与系统集成,而不是创造新的 Transformer。

06

收获

让模型跑起来是起点,理解模型为何出错是下一步。

02 / 跟随图像的处理过程

模型只是系统的一部分。

无需上传人脸,也能理解基本流程。

Illustrative face, image patches and classifier outputs. Not a real person or model prediction. 原理演示 · 不执行模型推理

单张拍摄图像经缩放后,转换成三通道灰度张量。

此示意图用于解释结构,不识别情绪、不产生真实预测,也不请求摄像头权限。

  1. 01拍摄浏览器摄像头与画布
  2. 02上传Java Servlet 接收图像
  3. 03预测Python 加载模型权重
  4. 04返回返回 JSON 标签并清理临时图像

03 / 论文报告的证据

数据更多,提升并不一致。

相同结构,比较继续训练前后的表现。

第 50 与 62 轮准确率:FER2013 71.66% 与 71.40%;RAF-DB 60.76% 与 85.23%;合成数据 47.71% 与 39.69%;混合数据 69.57% 与 76.25%。
来源:2025 年本科最终报告第 6 章。依据报告的总体准确率重新绘制,未重新训练。
关键认识

总体分数提高,也可能掩盖局部退步。

RAF-DB 改善,FER2013 几乎不变,合成数据集表现下降。混合测试结果不代表现实部署准确率。

RAF-DB 参与了第二阶段训练,因此这不能证明对全新数据来源的泛化能力。

具体数值与比较局限
论文报告的总体准确率(%)
测试集第 50 轮第 62 轮变化(百分点)
FER201371.66%71.40%-0.26
RAF-DB60.76%85.23%+24.47
Synthetic47.71%39.69%-8.02
Mixed69.57%76.25%+6.68

混合测试集由前三种来源组成,并非第四个独立人群。训练时长与数据构成同时改变,这些观察不能分离合成数据的独立作用。

04 / 技术深读

完整流程,按需深入。

01问题与个人贡献完成了什么,又复用了什么。

这是应用开发与评估项目。我使用已有预训练模型,而不是设计新的注意力机制。

我的工作

准备输入、配置训练、分析错误,并把模型连接到网页界面。

已有基础

Swin Transformer 与 timm 提供网络实现,PyTorch 提供自动求导和参数优化。

02数据与预处理基准数据、合成图像和一致的模型输入。

FER2013 和 RAF-DB 提供基准图像,SDXL 脚本生成辅助合成图像。分类器使用愤怒、厌恶、恐惧、开心、中性、悲伤和惊讶七个标签。

  1. 01检查读取图像,检查文件完整性
  2. 02统一三通道灰度;224 × 224
  3. 03增强仅训练:翻转及 ±15° 旋转
  4. 04归一化张量;均值与标准差均为 0.5
像素归一化
x′ = (x − 0.5) / 0.5

对转换到 [0, 1] 的普通 8 位图像,该操作映射到 [−1, 1];测试与推理不使用随机增强。

合成提示词组合光照、姿态、背景、遮挡和表情强度。归档生成器使用 SDXL Base 1.0、FP16、guidance 9.5、50 步,每个激活类别目标为 200 张。保存版本仅激活了 disgust,不能据此复原全部历史生成过程。

03模型结构与方法预训练 Swin Tiny,而非新发明的网络。

timm 模型标识为 swin_tiny_patch4_window7_224。预训练权重适配七类输出,未自行实现 Swin 内部模块。

Stage 1

56 × 56 × 96 · 2 blocks

Stage 2

28 × 28 × 192 · 2 blocks

Stage 3

14 × 14 × 384 · 6 blocks

Stage 4

7 × 7 × 768 · 2 blocks

从图像到图像块
(224 / 4)2 = 3,136

224 × 224 输入分成 4 × 4 图像块。窗口注意力处理局部区域,移位窗口实现跨窗口信息交换。

分数与概率
pc = exp(zc) / Σj exp(zj)

z 是原始类别分数。Softmax 解释概率映射,但原型仅取最大 logit 对应的标签,并未评估置信度校准。

现在我会纠正原报告中的理论表述:全局自注意力随 token 数量呈二次 O(N²) 增长,而不是指数增长。

04训练与配置论文报告的两阶段训练;标准 PyTorch 优化流程。
0150 轮

FER2013 → 第一阶段权重

02再训练 12 轮

FER2013 + RAF-DB + 合成图像 → 第 62 轮

保存的配置,不是重建的历史训练日志
配置项归档值
批大小128
初始学习率0.0001
优化器AdamW;传入全部模型参数
损失函数交叉熵;标签平滑 0.1
学习率调度CosineAnnealingLR
训练目标
L = −Σc yc log(pc)

交叉熵衡量预测与目标分布的差异。标签平滑使目标分布不那么极端,但不能证明不确定性可靠。

  1. 01前向传播model(images)
  2. 02计算损失criterion(outputs, labels)
  3. 03计算梯度loss.backward()
  4. 04更新权重optimizer.step()

论文描述 50 + 12 轮;保存的训练脚本则是后来设置的 100 轮配置并加载已有权重。我不把该快照视为原始实验日志,也不依据打包后变化的路径推断实验错误。

05评估与验证评价指标能支持什么,又不能支持什么。

总体准确率回答“多少标签预测正确”;类别准确率与混淆矩阵揭示具体混淆。归档代码不能支持已经完成 Macro-F1、置信度校准或独立鲁棒性测试的说法。

分开开发与最终测试

最终测试不应指导检查点或超参数选择。历史分区需要记录核验,而不是猜测文件夹名称。

说明比较的范围

第二阶段同时改变训练轮数与数据来源。缺少对照时,无法分离各因素的独立作用。

06系统设计与实现浏览器、Java 与 Python 如何协作。

原型是拍照提交式网页应用,不是连续逐帧情绪识别。当前作品集不运行该分类器。

功能级索引,不分发原始源代码
模块 / 函数作用
openCamera() / captureImage()浏览器摄像头权限与画布截图
submitImage()使用 FormData 和 fetch 上传 PNG
doPost()接收上传、生成临时文件、返回 JSON
runPythonScript()通过 ProcessBuilder 启动 Python 并读取输出
predict_image()预处理 → 权重推理 → 最高分类别
finally / deleteIfExists()尝试清理临时图像

界面包括首页、识别、介绍、联系和隐私页。客户端使用 HTML、CSS、JavaScript 和 Bootstrap;Java Servlet / Tomcat 调用 Python。训练使用云端 GPU,网页演示使用本地服务与 HTTPS 隧道;不宣称完成生产负载测试或全面安全审计。

07测试、部署与边界学术原型,有明确的适用边界。
测试与部署范围
阶段检查内容证据边界
功能摄像头、上传、推理与返回依据报告和代码;未重新执行原系统
兼容性电脑和手机界面报告中的人工测试
隐私HTTPS 与临时文件清理基础措施;并非合规认证
性能响应时间设计目标缺少完整基准日志

05 / 批判性反思

从“跑起来”,到“为什么值得信任?”

我学会了连接完整的机器学习应用。回头看,我会更重视理解错误与测试替代方案,而不仅仅是让流程运行。
当时

先让一个模型运行

现在的认识

可运行流程不等于公平比较。

下一步

加入条件一致的 ResNet 基线和受控消融。

当时

关注总体准确率

现在的认识

类别不平衡与域差异会掩盖错误。

下一步

报告 Macro-F1、类别错误与独立分布变化测试。

当时

把合成图像作为额外样本

现在的认识

提示词不等于核实过的标签。

下一步

审核标签,分离来源和训练时长的影响。

当时

保存可运行项目

现在的认识

代码快照不能复原每次实验。

下一步

记录分区、种子、环境和每次实验配置。

这些是现在的反思与拟议改进,不表示额外实验已经完成。

↗来源、致谢与公开边界核验了什么、公开了什么,以及哪些材料保留为私有。

对照 2025 年本科报告(尤其第 5–6 章)及所提供的模型、训练、推理、数据和网页代码核验;未重新训练复现实验数值,并区分归档配置与报告中的实验。

政策核查日期:2026 年 11 月 4 日。已完成评估的学生作品能否分享,仍取决于权利归属、合作、课程、第三方及数据条件;一般政策并不构成项目专属许可。本站不分发论文 PDF、原始研究源码、模型权重或患者图像。

示意图为原创几何图形,不重建患者图像,也不代表新的模型实验。