07 / 2026 / 持续迭代
茶叶病害视觉识别与边缘端部署
将茶叶病害 CNN 训练、评估、Tkinter 识别界面与 RA6M5/Linux Flask 部署串成一条演进链。
系统结构图暂不可用
问题
如何把图像分类模型从实验训练推进到桌面验证、Web 服务和边缘设备部署,同时保留评估边界?
角色
个人开发与实验项目;负责 CNN 训练评估、桌面 GUI、Flask Web 服务及 Linux/RA6M5 部署链路。
方法
茶叶病害 CNN 分类 → 模型评估 → Tkinter GUI → Flask Web → Linux/RA6M5 边缘部署;支持图片分类、USB 摄像头流和可选农业知识问答。
结果
GitHub 记录 8 类分类、87 张评估图片、Top-1 准确率 79.31% 和 CPU 平均单图推理耗时 3.25 ms;这些是已有评估快照,不代表所有数据的重新评测。
Tea Leaf Disease Classification
基于 PyTorch 与卷积神经网络的茶叶病虫害识别项目,包含模型训练、性能评估、对比实验和 Tkinter 可视化界面。
PyTorch · CNN · Computer Vision · Tkinter · 8-class Classification
真实运行效果
使用项目现有 GUI、CNN1.pth 与测试集图片实跑:真实类别和预测类别均为“红叶斑点病”,置信度 99.9997%(界面显示 100.0%)。非设计稿或合成图。
项目简介
本项目面向茶叶叶片图像的健康状态与病害分类。图像经过统一缩放和归一化后输入卷积神经网络,程序输出预测类别与置信度,并可通过桌面界面完成单张图片识别。
项目包含:
- 自定义 CNN 的训练、保存与推理
- Tkinter 单图识别界面
- 测试集准确率与推理耗时评估
- VanillaNet、AlexNet 及不同训练配置的对比实验
- 8 类茶叶健康/病害图像分类
已记录的实验结果
仓库中的历史评估记录给出了以下结果:
| 指标 | 记录值 |
|---|---|
| 分类类别 | 8 类 |
| 评估图片 | 87 张 |
| Top-1 准确率 | 79.31% |
| CPU 平均单图推理耗时 | 3.25 ms |
这是项目已有的 87 张图片评估快照,并非当前
picture/test目录全部图片的重新评测结果。实际表现会随数据划分、权重和运行设备变化。
识别类别
| 类别 | 类别 | 类别 | 类别 |
|---|---|---|---|
| 健康茶叶 | 灰色光 | 炭疽病 | 白斑病 |
| 红叶斑点病 | 藻类叶片 | 褐枯病 | 鸟眼斑点 |
工作流程
flowchart LR
A[茶叶图片数据集] --> B[缩放与归一化]
B --> C{模型训练}
C --> D[自定义 CNN]
C --> E[VanillaNet / AlexNet]
D --> F[模型权重]
E --> F
F --> G[GUI 单图识别]
F --> H[测试集评估]
F --> I[模型对比实验]
快速开始
1. 创建环境
推荐使用 Python 3.9。项目界面已在 Python 3.9、PyTorch 2.8 CPU 环境中实际运行。
conda create -n tea-disease python=3.9 -y
conda activate tea-disease
pip install torch torchvision pillow matplotlib tqdm psutil
2. 准备数据
将数据集按类别放入以下目录:
picture/
├── train/
│ ├── 健康茶叶/
│ ├── 炭疽病/
│ └── ...
└── test/
├── 健康茶叶/
├── 炭疽病/
└── ...
数据集没有提交到仓库,请使用自己有权使用的数据进行训练和测试。
3. 训练模型
python train.py
训练脚本默认生成 CNN1.pth。可将准备在界面中使用的权重复制为 CNN.pth:
Copy-Item .\CNN1.pth .\CNN.pth
4. 启动识别界面
python GUI.py
点击“选择图片”载入茶叶叶片,再点击“开始识别”查看类别和置信度。GUI.py 会从项目根目录读取 class_indices.json 与 CNN.pth。
评估与实验
评估 CNN1.pth 并保存逐图结果:
python evaluate_model.py --save-details --output evaluation_details.json
运行预设的 VanillaNet / AlexNet 对比实验:
python run_all.py
项目结构
.
├── assets/
│ └── gui-real-run.png # 真实运行截图
├── GUI.py # Tkinter 识别界面
├── model.py # 自定义 CNN
├── train.py # 模型训练
├── evaluate_model.py # 单模型评估
├── evaluate_all.py # 多模型评估
├── experiment_models.py # 对比模型定义
├── run_experiments.py # 实验执行逻辑
├── run_all.py # 批量实验入口
└── class_indices.json # 类别索引
发布说明
- 数据集与模型权重未提交:它们体积较大,且公开前需确认数据和权重的授权范围。
- 部分 AlexNet 权重单文件超过 GitHub 的 100 MB 普通文件限制;如需分享,建议使用 GitHub Releases 或外部模型仓库。
- 本项目用于学习、研究和作品展示,识别结果不能替代专业农业病害诊断。
- 当前仓库未附开源许可证,默认不授予复制、修改或再发布权限。