跳转至

01 · 项目概览

本篇是 docs/ 的"项目入口"——身份信息、技术栈、目录树、规模、时间线。 这与「结题报告.md」(仓库根目录)的区别:结题报告偏向老师视角(成果导向),本篇偏向技术视角(事实导向)。 下一篇:02 · 环境与运行


1.1 项目身份信息

内容
项目名称 摄像头检测系统(MonitorSystem / CameraMonitorSystem)
立项类别 浙江省大学生创新训练计划项目(省创)
立项时间 2024 年 9 月(推断,由微信对话"去年9月当时有做什么实验")
验收时间 2026 年 5 月(材料 5/22 交,验收 5/23 前)
项目编号 <待补>
项目负责人 <待补>
项目成员 何劭弘(23 级)、龚馨铃(24 级)、陈宣良(24 级)、钱子豪(24 级)等
指导老师 金老师 <完整姓名待补>
所属单位 中国计量大学
应用程序版本 CameraMonitorSystem2.1(见 CameraMonitorSystem.spec:155

1.2 项目定位与功能

一句话定位:基于 EfficientNet-B3 的工业视觉检测系统,含两个独立模块——膨胀检测、含水量检测,配 Tkinter GUI 与 PyInstaller 一键打包。

应用场景(推测):工厂"圆盘干燥机"工况检测——通过摄像头实时监控物料状态,识别其膨胀情况与含水量区间,为干燥工艺调控提供输入。证据来自 model4.py:113 测试代码里的路径 E:\圆盘干燥机智能化运行图片\膨胀组\膨胀结束\

两个模块的功能边界

模块 输出 分类粒度 推理频率 模型数
膨胀检测 "膨胀" / "不膨胀" 二分类 每帧(~30 fps) 1
含水量检测 "30-35%" / "35-40%" / "40-45%" 三分类(拆为 3 个二分类投票) 每 5 秒 3

1.3 技术栈

技术 版本 / 备注
语言 Python 3.7+(实测 3.10 OK)
GUI Tkinter Python 标准库
视觉采集 OpenCV (cv2) ≥ 4.5
图像处理 Pillow (PIL) ≥ 8.0
深度学习 PyTorch ≥ 1.9,< 2.6
Backbone EfficientNet-B3 通过 efficientnet_pytorch 第三方库加载
数值计算 NumPy ≥ 1.20
打包 PyInstaller ≥ 5.0
字体 SimHei (黑体) 9.5 MB TTF

为什么用 EfficientNet-B3:B3 在参数量(~12M)与精度上的折中适合小数据集微调;300×300 输入对工厂图像分辨率友好。


1.4 仓库目录结构

20260515-MonitorSystem/                       (本仓库根目录)
├── 📄 main.py                                Tkinter GUI 主入口(849 行)
├── 📄 README.md                              gxl 原作 README(保留不动)
├── 📄 调研报告.md                            Linux 调研产物(2026-05-14 写)
├── 📄 结题报告.md                            ★ 给老师的正式结题材料(本仓库根目录)
├── 📄 requirements.txt                       依赖清单(大部分被注释,详见 docs/02)
├── 📄 CameraMonitorSystem.spec               PyInstaller 主配置
├── 📄 hook-tkinter.py                        Tkinter 钩子(被 spec hookspath 自动加载)
├── 📄 add_hidden_imports.py                  ⚠️ 命名错误的 hook(实际未被加载)
├── 🖼️ logo.ico                                exe 程序图标
├── 📂 fonts/
│   └── simhei.ttf                            中文黑体字体(9.5 MB)
├── 📂 models/                                AI 模型层
│   ├── __init__.py                           (空文件)
│   ├── model1.py                             含水量 35-40 vs 30-35 二分类器
│   ├── model2.py                             含水量 40-45 vs 35-40 二分类器
│   ├── model3.py                             含水量 40-45 vs 30-35 二分类器
│   ├── model4.py                             膨胀 vs 不膨胀 二分类器
│   ├── best_model1.pth                       43 MB
│   ├── best_model2.pth                       43 MB
│   ├── best_model3.pth                       43 MB
│   ├── best_model4.pth                       43 MB
│   ├── efficientnet_b3_pytorch.pth           48 MB(⚠️ 实际未被加载)
│   ├── tempCodeRunnerFile.py                 ⚠️ IDE 临时文件
│   ├── .idea/                                ⚠️ PyCharm 配置
│   └── __pycache__/                          ⚠️ 字节码缓存
├── 📂 swellcamera/                           膨胀检测子模块
│   ├── __init__.py                           1 行:from .swellcamera import main
│   ├── __main__.py                           8 行:python -m swellcamera 入口
│   └── swellcamera.py                        208 行:核心逻辑
├── 📂 watercamera/                           含水量检测子模块
│   ├── __init__.py                           1 行
│   ├── __main__.py                           8 行
│   └── watercamera.py                        221 行:核心逻辑(含投票算法)
├── 📂 utils/
│   ├── __pycache__/
│   └── model_loader.py                       importlib 动态加载器(仅 watercamera 使用)
└── 📂 docs/                                  ★ 本技术文档集
    ├── README.md                             文档索引与导航
    ├── 01-项目概览.md                        ← 你在这里
    ├── 02-环境与运行.md                      跑通推理的最简步骤
    ├── 03-系统架构.md                        Mermaid 架构 / 数据流 / 类关系
    ├── 04-主程序与GUI.md                     main.py 逐节解析
    ├── 05-检测模块.md                        swellcamera + watercamera
    ├── 06-模型与推理.md                      4 个 AgeClassifier 类
    ├── 07-打包与部署.md                      PyInstaller spec / hook
    ├── 08-问题与改进.md                      P0/P1/P2 完整清单
    └── 09-开发指南.md                        如何调试 / 加功能 / 国创建议

1.5 代码规模统计

文件 行数 字符数 备注
main.py 849 ~31.9 KB GUI 主入口
swellcamera/swellcamera.py 208 膨胀检测
watercamera/watercamera.py 221 含水量检测(含投票)
models/model1.py 92 含水量分类器 1
models/model2.py 110 含水量分类器 2
models/model3.py 92 含水量分类器 3
models/model4.py 117 膨胀分类器
utils/model_loader.py 19 动态加载器
CameraMonitorSystem.spec 182 PyInstaller 配置
hook-tkinter.py 81 Tkinter 钩子
add_hidden_imports.py 4 (未生效)
Python 总计 ~1975 行 不含注释和空行

模型权重总计:5 个 .pth × 43-48 MB = ~220 MB。


1.6 项目演进时间线

由微信记录、文件 mtime、git log 综合推断:

时间 事件
2024-09 省创立项,团队启动
2025-06~07 gxl 训练模型(最早的 .pth 修改日期 2025-06-30
2025-07-03 EfficientNet-B3 备份权重保存(mtime)
2025-07-26 model4 权重训练完成(mtime),分类头从 model1/2/3 风格升级到含 Dropout/ReLU 的版本
2025-07-30 PyInstaller 打包配置 add_hidden_imports.py / hook-tkinter.py 加入
2025-07-31 README.md 写完
2025-08-01 CameraMonitorSystem.specmain.py 最后修改(mtime)
2025-08 gxl 把最终 exe 交给金老师,项目暂时搁置
2026-05-11 老师 @ 何劭弘和龚馨铃准备结题材料
2026-05-12 何劭弘与 gxl 微信对接,得知 gxl 已无暇深度参与
2026-05-13 教务处发布结题验收通知
2026-05-14 何劭弘在 Linux LXD 容器中做代码调研,产出 调研报告.md
2026-05-15 在 Windows 工作目录开始撰写正式技术文档体系(本文档集)
2026-05-22 计划交结题材料
2026-05-23 计划完成学院验收

1.7 项目状态评估

完成度

维度 完成度 说明
应用程序 ✅ 90% exe 可运行,GUI 可用,推理可输出结果
模型权重 ✅ 100% 4 个分类器都训好并集成
文档 🟡 60%→90% 原仅有 README,正在补 docs/ 与结题报告
训练复现 ❌ 0% 无 train.py、无数据集、无训练日志
测试 ❌ 0% 无单元测试、无集成测试
性能指标 🟡 待补 gxl 8 月资料中可能有,需收集
跨平台 🟡 30% 仅 Windows 跑过,Linux/macOS 需修字体路径等

工程质量评分

维度 评分 说明
功能完整性 ⭐⭐⭐⭐ 双模块齐全,端到端可用
代码质量 ⭐⭐ 命名混乱(AgeClassifier)、复制粘贴多、临时文件滥用
架构设计 ⭐⭐ 模块停止机制失效、接口不统一、无配置化
可维护性 ⭐⭐ 硬编码多、无日志、文档原仅 README
可部署性 ⭐⭐⭐ PyInstaller 支持完整,但仅 Windows
安全性 ⭐⭐ torch.load 无 weights_only、输入无验证

综合:典型「学生课程项目水平」,核心功能可用但工程粗糙。文档化与 bug 修复是接下来的主要工作。


1.8 与项目相关的"非代码"资产

资产 位置 状态
训练数据集 gxl 本地(E:\kingtask\waterdata\E:\圆盘干燥机智能化运行图片\ 仅 gxl 持有,未提交
训练脚本 gxl 本地 未提交
训练日志 gxl 本地 未提交
八月给金老师的 exe gxl 本地 仓库内有源码可重新打包
微信记录 何劭弘 ↔ gxl 部分摘录见 调研报告.md 末尾 和本仓库其他文档的 context 引用
学校验收表 教务处 OA 附件 1-6 已下载链接 oa.cjlu.edu.cn

1.9 接下来读哪一篇

flowchart LR
    HERE[你在这里<br/>01 项目概览] --> A02[02 环境与运行<br/>先把推理跑起来]
    A02 --> A03[03 系统架构<br/>看 Mermaid 图]
    A03 --> A04[04 主程序与 GUI]
    A04 --> A05[05 检测模块]
    A05 --> A06[06 模型与推理]
    A06 --> A07[07 打包与部署]
    A07 --> A08[08 问题与改进]
    A08 --> A09[09 开发指南]

或按场景跳转: