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 或外部模型仓库。
  • 本项目用于学习、研究和作品展示,识别结果不能替代专业农业病害诊断。
  • 当前仓库未附开源许可证,默认不授予复制、修改或再发布权限。