摄像头检测系统 · 省创项目结题报告¶
项目类别:浙江省大学生创新训练计划项目(校级 2024 年度立项) 结题时间:2026 年 5 月 撰写依据:教务处《关于开展 2024 年校级创新训练计划项目结题验收工作的通知》(2025-05-13)
一、项目基本信息¶
| 项 | 内容 |
|---|---|
| 项目名称 | 摄像头检测系统(Camera Monitor System) |
| 项目编号 | <待补> |
| 立项类别 | 浙江省大学生创新训练计划项目 |
| 所属单位 | 中国计量大学 <学院待补> |
| 立项时间 | 2024 年 9 月 |
| 结题时间 | 2026 年 5 月 |
| 项目负责人 | <待补> |
| 项目成员 | 何劭弘(23 级)、龚馨铃(24 级)、陈宣良(24 级)、钱子豪(24 级) |
| 指导教师 | 金 <完整姓名待补> 老师 |
| 项目版本 | CameraMonitorSystem v2.1 |
二、项目摘要¶
本项目面向工业圆盘干燥机的运行状态智能化监测需求,研发了一套基于深度学习的端到端视觉检测系统。系统集成膨胀检测与含水量检测两个独立功能模块:膨胀检测模块基于 EfficientNet-B3 二分类网络实时识别物料膨胀状态;含水量检测模块采用三模型加权投票策略,将含水量三分类(30-35% / 35-40% / 40-45%)任务拆解为三个二分类子任务后融合,提升判别稳定性。系统采用 Python + Tkinter 桌面应用形态,配合 PyInstaller 实现 Windows 一键打包分发,可独立运行于无网络的工业现场计算机。最终交付的应用程序 CameraMonitorSystem2.1.exe 已可在标准 USB 摄像头环境下完成实时检测演示。
三、研究背景与立项目标¶
3.1 工业背景¶
干燥工艺是化工、食品、医药等行业的关键环节。圆盘干燥机作为典型的连续干燥设备,其运行过程中物料的「含水量」与「膨胀状态」是直接影响产品质量与能耗的两个关键工艺参数:
- 含水量过高:产品不达标,需返工;
- 含水量过低:能耗浪费,可能造成物料过热分解;
- 物料膨胀:可能导致设备堵塞、传热效率下降。
传统检测方式依赖人工巡检或离线取样化验,存在三大局限:(1)实时性差,无法即时反馈;(2)主观性强,依赖工人经验;(3)取样破坏样品,无法连续监测。
3.2 立项目标¶
针对上述痛点,本项目立项时设定三个目标:
- 可行性验证:探索仅依靠摄像头视觉信号即可判别物料含水量区间与膨胀状态的可能性;
- 算法实现:训练具有可接受准确率的深度学习模型,构建端到端检测流程;
- 工程落地:将算法封装为可在普通 Windows PC 上独立运行的桌面应用程序,便于工业现场部署。
3.3 关键挑战¶
| 挑战 | 应对策略 |
|---|---|
| 工业图像与公开数据集差异大 | 在自采图像数据集上微调 EfficientNet-B3 |
| 含水量三分类边界模糊 | 拆解为三组二分类子问题,加权投票合成最终结论 |
| 工业现场无网络、无 Python 环境 | 通过 PyInstaller 打包为单一可执行文件 |
| 实时性要求 | 含水量检测采用 5 秒采样间隔以匹配模型推理速度 |
四、技术路线¶
4.1 整体技术架构¶
系统采用四层架构:
flowchart TB
subgraph L1 ["应用层(GUI)"]
GUI[Tkinter 主界面<br/>启动/停止/状态显示]
end
subgraph L2 ["调度层"]
MM[ModuleManager<br/>多线程子模块管理]
end
subgraph L3 ["检测层"]
SW[膨胀检测模块]
WA[含水量检测模块]
end
subgraph L4 ["算法层"]
BB[EfficientNet-B3 Backbone]
M1[Model1: 含水量<br/>35-40 vs 30-35]
M2[Model2: 含水量<br/>40-45 vs 35-40]
M3[Model3: 含水量<br/>40-45 vs 30-35]
M4[Model4: 膨胀二分类]
end
GUI --> MM
MM --> SW
MM --> WA
SW --> M4
WA --> M1
WA --> M2
WA --> M3
M1 --> BB
M2 --> BB
M3 --> BB
M4 --> BB
4.2 技术栈¶
| 层 | 技术 | 选型依据 |
|---|---|---|
| 编程语言 | Python 3.7+ | 深度学习生态最完整 |
| 桌面 GUI | Tkinter | 标准库零依赖、跨平台、易打包 |
| 视觉采集 | OpenCV 4.5+ | 工业摄像头适配成熟 |
| 图像处理 | Pillow | 支持中文文字叠加 |
| 深度学习 | PyTorch 1.9+ | 部署友好、模型表达灵活 |
| 主干网络 | EfficientNet-B3 | 12M 参数量适合小数据集微调,300×300 输入对工业图像友好 |
| 打包工具 | PyInstaller 5.0+ | 一键生成 Windows 可执行文件 |
4.3 数据采集与训练策略¶
| 项 | 描述 |
|---|---|
| 数据来源 | 真实圆盘干燥机运行图像 <合作单位待补> |
| 数据规模 | <待补:训练集/验证集张数> |
| 标注方式 | 按含水量区间分组(30-35%/35-40%/40-45%)+ 膨胀/不膨胀双标签 |
| 图像分辨率 | 统一缩放至 300×300(匹配 EfficientNet-B3 输入) |
| 归一化 | ImageNet 标准(均值 [0.485, 0.456, 0.406],方差 [0.229, 0.224, 0.225]) |
| 训练框架 | PyTorch |
| 损失函数 | BCEWithLogitsLoss(二分类) |
| 优化器 | <待补> |
| 训练 epoch | <待补> |
详细训练超参由项目成员龚馨铃负责,相关脚本与训练日志保存于其本地工作环境。本结题阶段不需重新训练,最终模型权重以
.pth文件形式集成于应用程序中。
4.4 模型结构设计¶
四个分类器共享 EfficientNet-B3 Backbone(特征维 1536),通过自定义分类头实现各自的二分类任务:
膨胀分类器(model4)分类头:
[Backbone 1536-dim feature]
↓ Dropout(0.45)
↓ Linear(1536 → 256)
↓ ReLU
↓ BatchNorm1d(256)
↓ Dropout(0.55)
↓ Linear(256 → 1)
↓ Sigmoid → 二分类概率
含水量三个分类器(model1/2/3)采用结构相似的分类头。
4.5 三模型加权投票算法¶
含水量检测的核心创新点——将三分类问题分解为三个对偶二分类,加权融合:
flowchart LR
IMG[输入图像] --> M1[Model1<br/>35-40 vs 30-35]
IMG --> M2[Model2<br/>40-45 vs 35-40]
IMG --> M3[Model3<br/>40-45 vs 30-35]
M1 --> F1{|p₀-p₁| ≥ 0.1?}
M2 --> F2{|p₀-p₁| ≥ 0.1?}
M3 --> F3{|p₀-p₁| ≥ 0.1?}
F1 -- 是 --> V1[× 0.91 投票]
F2 -- 是 --> V2[× 0.95 投票]
F3 -- 是 --> V3[× 0.90 投票]
V1 --> SUM[加权累加 + 归一化]
V2 --> SUM
V3 --> SUM
SUM --> ARGMAX[argmax → 最终类别]
算法要点: - 三模型对应三种类别两两组合(C(3,2)=3) - 置信度差异 ≥ 0.1 才纳入投票,避免不确定预测干扰 - 权重 0.91 / 0.95 / 0.90 对应各模型验证集性能 - 通过归一化得到最终预测概率分布
4.6 应用程序架构¶
桌面应用采用「主界面 + 独立子模块」设计:
- 主界面(main.py):Tkinter 实现,提供启动 / 停止 / 状态显示 / 计时统计
- 子模块(swellcamera/ + watercamera/):可独立运行,通过
python -m swellcamera/python -m watercamera单独调试 - 线程隔离:主线程负责 GUI,每个检测模块独立子线程,互不阻塞
- 状态同步:通过
queue.Queue实现线程间状态消息传递
五、关键创新点¶
5.1 算法层:三模型加权投票¶
将含水量三分类问题分解为三组二分类对偶子问题,通过加权投票与置信度过滤融合最终结果。该方法相比单一三分类模型有三点优势:
- 训练数据更均衡:每个二分类器只见两类样本,类别比例更易控制
- 决策可解释性更强:可单独观察每个二分类器的判别置信度
- 失败模式更可控:若某模型在边界样本上不确定(置信度差 < 0.1),可被自动剔除而非误投
5.2 工程层:端到端打包分发¶
通过 PyInstaller 与三重 Tkinter 兼容方案(spec 配置 + 钩子文件 + 运行时修复),实现: - 单一可执行文件分发,无需用户安装 Python 环境 - 模型权重内嵌,无需联网下载预训练 - 中文字体内嵌,跨设备字体一致
5.3 系统层:模块化解耦¶
swellcamera 与 watercamera 两个检测模块完全独立——可单独运行、单独测试、单独部署。ModuleManager 作为调度层负责生命周期管理,新增检测功能只需仿照现有结构即可扩展。
六、项目实施进度¶
6.1 时间节点¶
| 阶段 | 时间 | 主要工作 |
|---|---|---|
| 立项与调研 | 2024-09 ~ 2024-12 | 文献调研、数据采集计划、技术选型 |
| 数据准备与训练 | 2025-01 ~ 2025-06 | 圆盘干燥机现场图像采集、人工标注、模型训练 |
| 算法实现 | 2025-06 ~ 2025-07 | 4 个分类器训练完成、投票算法设计 |
| 应用程序开发 | 2025-07 ~ 2025-08 | Tkinter GUI、多线程模块管理、PyInstaller 打包 |
| 阶段性交付 | 2025-08 | 向指导老师交付可运行应用程序 |
| 文档化与结题准备 | 2026-05 | 撰写技术文档、结题验收材料 |
6.2 团队分工¶
| 成员 | 主要分工 |
|---|---|
| 龚馨铃(24 级) | 模型训练、算法设计、应用程序主体开发 |
| 何劭弘(23 级) | 项目协调、技术文档撰写、代码评审、结题材料准备 |
| 陈宣良(24 级) | <待补:协助内容> |
| 钱子豪(24 级) | <待补:协助内容> |
七、主要成果¶
7.1 应用程序¶
CameraMonitorSystem2.1.exe — 基于 PyInstaller 打包的 Windows 桌面应用:
| 维度 | 指标 |
|---|---|
| 可执行文件 | dist/CameraMonitorSystem/CameraMonitorSystem2.1.exe |
| 部署方式 | 拷贝目录即用,无需 Python 环境 |
| 操作系统 | Windows 10 / 11(推荐) |
| 硬件要求 | USB 摄像头一台,内存 2GB+ |
| 启动时间 | ≤ 5 秒 |
7.2 模型权重¶
| 模型文件 | 大小 | 任务 |
|---|---|---|
best_model1.pth |
43 MB | 含水量 35-40% vs 30-35% 二分类 |
best_model2.pth |
43 MB | 含水量 40-45% vs 35-40% 二分类 |
best_model3.pth |
43 MB | 含水量 40-45% vs 30-35% 二分类 |
best_model4.pth |
43 MB | 膨胀 vs 不膨胀 二分类 |
四个模型基于自建工业图像数据集,从 EfficientNet-B3 微调而来,独立保存为 PyTorch 标准 .pth 格式。
7.3 性能指标¶
<待补:由项目成员龚馨铃在 2025-08 阶段性交付材料中提供>
| 指标 | 膨胀检测 | 含水量检测 |
|---|---|---|
| 验证集准确率 | <待补> |
<待补> |
| 验证集 F1 | <待补> |
<待补> |
| 单帧推理耗时(CPU) | <待补> |
<待补> |
| 实测帧率 | <待补> |
0.2 fps(每 5 秒一帧) |
7.4 代码与文档¶
| 资产 | 规模 |
|---|---|
| Python 源代码 | ~1975 行(含 GUI、检测模块、模型加载) |
| PyInstaller 配置 | 1 个 spec + 2 个 hook 共 ~270 行 |
| 技术文档 | 9 篇 markdown,约 30000 中文字、9 张 Mermaid 架构图 |
| 项目仓库 | 完整源码 + 模型权重 + 字体资源 + 打包配置 |
7.5 团队成员相关学术与竞赛产出¶
<待补:成员在本项目期间参加的竞赛证书与论文清单>
参考申报书要求:"基本满足"指有国家级 A 类竞赛奖项。当前团队已知:
- 国家级竞赛获奖:<待补>
- 省级竞赛获奖:<待补>
- 发表论文:<待补>
- 申请专利:<待补>
八、团队能力提升¶
参与本项目期间,团队成员在以下方面得到锻炼:
| 能力维度 | 涉及环节 | 受益成员 |
|---|---|---|
| 深度学习建模 | EfficientNet-B3 微调、损失函数选择、训练超参调优 | 龚馨铃为主 |
| 工业图像数据处理 | 数据采集、标注规范、增强策略 | 全员 |
| 算法设计 | 三模型投票方案设计与权重确定 | 龚馨铃为主 |
| Python 工程实践 | 多线程编程、Tkinter GUI、模块化设计 | 全员 |
| 应用程序部署 | PyInstaller 打包、跨环境兼容、依赖管理 | 龚馨铃为主 |
| 技术文档撰写 | Markdown、Mermaid、代码评注 | 何劭弘为主 |
| 项目管理 | 任务分工、阶段性交付、跨年级协作 | 全员 |
| 工业领域知识 | 干燥工艺基础、含水量与膨胀状态的工程意义 | 全员 |
<可由各成员补充具体的"我学到了什么"段落>
九、项目特色与亮点¶
- 算法与工程并重:既有可解释的投票算法设计,又有面向工业现场的打包分发方案
- 模块化架构:检测模块完全解耦,便于新增功能与维护
- 跨年级协作示范:23 级与 24 级同学优势互补,符合「以老带新」的省创培养目标
- 真实工业场景:项目面向真实圆盘干燥机检测需求,非实验室玩具问题
- 可持续扩展:基础架构与文档体系完备,为后续国创申报奠定基础
十、结论与展望¶
10.1 结题结论¶
本项目按计划完成了「可行性验证 → 算法实现 → 工程落地」三阶段目标,最终交付物 CameraMonitorSystem v2.1 已可在 Windows 平台独立运行,实现摄像头实时膨胀检测与含水量检测。算法层引入的三模型加权投票策略,在含水量三分类任务上展示了稳定的判别能力;工程层借助 PyInstaller 实现了端到端打包分发,满足工业现场无网络部署需求。
项目结题预期评价:合格 / 良好(具体由验收小组评定)。
10.2 未来优化方向¶
虽已满足立项目标,仍有以下方向可在后续工作中持续优化:
- 算法层:
- 探索单一三分类模型与现有投票方案的性能对比
- 引入数据增强(旋转、CutMix)提升泛化能力
-
加入模型不确定性估计(如 Monte Carlo Dropout)
-
系统层:
- 优化推理 I/O 路径,提升单帧处理性能
- 增强模块停止机制的响应性
-
支持摄像头自动发现与多摄像头切换
-
部署层:
- 扩展 Linux / macOS 跨平台支持
- 减小可执行文件体积(剔除未使用依赖、采用 CPU 版 PyTorch)
-
加入日志系统与远程监控接口
-
应用层:
- 探索接入工厂 MES / SCADA 系统的数据通路
- 增加多模态融合(温度、湿度传感器协同)
10.3 国创延续¶
考虑到本项目的工程基础与团队储备,建议在 2026 年度继续申报国家级大学生创新训练计划项目,由 24 级成员(龚馨铃、陈宣良、钱子豪)牵头,在算法、系统、应用三个层面继续深化研究。23 级成员(何劭弘等)将作为高年级顾问参与指导,形成「老带新」的合作模式。
具体延续方向初步设想:
- 课题升级:从「单点检测」走向「全流程智能监测」
- 算法升级:引入跨域自适应(Domain Adaptation),让实验室训练的模型适配不同工厂环境
- 学术产出:争取在公开学术会议 / 期刊发表 1-2 篇论文
十一、附录¶
附录 A · 项目仓库结构¶
20260515-MonitorSystem/
├── 结题报告.md(本文档)
├── 调研报告.md(详细技术调研)
├── README.md(项目使用说明)
├── main.py(GUI 主程序,849 行)
├── CameraMonitorSystem.spec(PyInstaller 配置)
├── hook-tkinter.py(打包钩子)
├── logo.ico(应用图标)
├── requirements.txt(依赖清单)
├── fonts/ # 中文字体
│ └── simhei.ttf
├── models/ # AI 模型层
│ ├── model1.py ~ model4.py(4 个分类器)
│ └── best_model1.pth ~ best_model4.pth(4 份训练权重)
├── swellcamera/ # 膨胀检测模块
├── watercamera/ # 含水量检测模块
├── utils/ # 工具函数
└── docs/ # 完整技术文档
├── README.md(文档索引)
└── 01 ~ 09 共 9 篇技术文档
附录 B · 技术文档清单¶
完整的项目技术文档位于仓库 docs/ 目录下,共 9 篇:
| 文档 | 链接 | 内容简介 |
|---|---|---|
| 01 项目概览 | docs/01-项目概览.md | 项目身份、技术栈、目录结构、演进时间线 |
| 02 环境与运行 | docs/02-环境与运行.md | 依赖安装、模型路径、运行步骤、故障排查 |
| 03 系统架构 | docs/03-系统架构.md | 7 张 Mermaid 架构图(含数据流、类关系、时序) |
| 04 主程序与 GUI | docs/04-主程序与GUI.md | main.py 逐节解析、按钮回调矩阵 |
| 05 检测模块 | docs/05-检测模块.md | 膨胀检测与含水量检测的实现细节 |
| 06 模型与推理 | docs/06-模型与推理.md | 4 个分类器结构对比、推理接口说明 |
| 07 打包与部署 | docs/07-打包与部署.md | PyInstaller 配置详解、跨平台限制 |
| 08 问题与改进 | docs/08-问题与改进.md | 已识别的改进点与建议(含未来工作) |
| 09 开发指南 | docs/09-开发指南.md | 调试、扩展、国创延续建议 |
附录 C · 详细技术调研报告¶
项目早期阶段在 Linux 容器环境中完成的代码调研,识别了应用程序的工程现状与优化方向,详见 调研报告.md。
附录 D · 关键依赖与版本¶
| 包 | 版本 | 用途 |
|---|---|---|
| Python | 3.7+ | 运行环境 |
| torch | 1.9+ | 深度学习推理 |
| torchvision | 0.10+ | 图像变换 |
| efficientnet_pytorch | 0.7+ | EfficientNet-B3 模型定义 |
| opencv-python | 4.5+ | 摄像头采集与图像显示 |
| Pillow | 8.0+ | 中文文字叠加 |
| numpy | 1.20+ | 数值计算 |
| pyinstaller | 5.0+ | 应用程序打包 |
附录 E · 验收所需材料对照¶
按教务处《结题验收附件材料表》要求,本项目可提供:
| 材料类别 | 状态 | 位置 |
|---|---|---|
| 项目验收表(附件 1) | <待填写> |
验收时单独提交 |
| 中期检查表 | <待补充> |
— |
| 学生成果材料(论文 / 专利 / 竞赛) | <待补> |
— |
| 应用程序与源码 | ✅ 已就绪 | 本仓库 |
| 技术文档 | ✅ 已就绪 | docs/ |
| 训练数据样例 | <待补> |
由龚馨铃同学提供 |
结题报告撰写人:何劭弘 审核:项目指导教师 + 项目负责人 版本:v1.0(2026-05-15 初稿)