Deep-Learning-System-for-Coffee-Leaf-Disease-Detection
GitHub ↗该项目是一个基于 Flask 框架 构建的综合性 智慧农业平台,其核心功能是利用 深度学习技术 识别咖啡叶片的健康状况及特定病害。系统集成了以 ResNet50 为代表的多类卷积神经网络模型,通过 迁移学习 和大规模 数据增强 手段,实现了高达 99.25% 的检测准确率。除了病害识别,平台还提供 智慧控制台、实时气象监测、农场地图管理(支持面积计算与路线规划)以及集成多种大模型 API 的 农业 AI 助手。这种模块化设计将尖端的 计算机视觉 与日常农场管理工具相结合,旨在为咖啡种植者提供从精准诊断到决策支持的一站式 数字化解决方案。
技术栈
智慧农业平台 - 咖啡叶病害检测与农场管理系统
基于深度学习的综合性智慧农业平台,集咖啡叶病害检测、气象监测、农业AI助手、农场地图管理等功能于一体。
目录
系统概述
本项目是一个面向咖啡种植的智慧农业综合管理平台,主要功能包括:
- 咖啡叶病害检测:基于深度学习的ResNet50模型,识别健康、叶锈病、黑斑病三类,准确率达99.25%
- 智慧控制台:展示天气信息、农事任务管理、备忘录编辑
- 气象中心:支持地址输入,获取中国境内真实天气数据
- 农业助手:支持文字提问和图片上传,集成多种大模型API
- 农场地图:支持标记添加、路线规划、范围绘制、面积计算
- 用户系统:登录认证、个人信息管理、农场信息设置
- 设置中心:账号管理、AI API配置、农场信息配置
功能特性
病害检测核心功能
- 高准确率:99.25%的咖啡叶病害识别准确率
- 多模型支持:支持6种深度学习模型(ResNet50、MobileNetV2等)
- 批量检测:支持多图片同时上传和识别
- 模型信息:展示模型架构、可识别类别等详细信息
- 检测历史:保存用户检测记录
智慧农业管理
- 用户系统:登录认证、个人信息管理、密码修改
- 智慧控制台:天气展示、农事任务管理、备忘录编辑
- 气象中心:地址输入、真实天气数据获取
- 农业助手:文字聊天、图片分析、多AI模型支持
- 农场地图:高德地图、标记管理、路线规划、范围绘制、面积计算
AI集成能力
- 多供应商支持:超算互联网、通义千问、火山引擎、阿里百炼
- 灵活配置:用户可在设置中配置API Key和模型选择
- 农场上下文:自动将农场信息提供给AI作为对话上下文
地图功能特色
- 国内稳定访问:高德地图瓦片服务,无需VPN
- 搜索功能:经纬度定位、城市名搜索、国外地址搜索(需VPN)
- 标记管理:多种标记类型、自定义标记、批量删除
- 路线规划:两点连线、路径可视化
- 范围绘制:多边形绘制、实时预览、面积计算(Haversine公式)
数据管理
- SQLite数据库:7张数据表,完整的数据管理
- 农事任务:创建、编辑、删除、状态管理
- 备忘录:重要标记、日期管理
- 农场信息:农场名称、面积、品种、土壤、灌溉等配置
技术架构
整体架构
┌─────────────────────────────────────────────────────────────────┐
│ 用户界面层 (UI) │
├─────────────────────────────────────────────────────────────────┤
│ 登录页面 │ 智慧控制台 │ 病害识别 │ 气象中心 │ 农业助手 │ 农场地图 │ 设置页面 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Web 应用层 (Flask) │
├─────────────────────────────────────────────────────────────────┤
│ 路由管理 │ 请求处理 │ Session管理 │ API接口 │ 静态文件服务 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 业务逻辑层 │
├─────────────────────────────────────────────────────────────────┤
│ 用户认证 │ 病害检测 │ 天气服务 │ AI客户端 │ 数据库管理 │ 地图服务 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 数据层 │
├─────────────────────────────────────────────────────────────────┤
│ SQLite数据库 │ 模型文件 │ 上传文件 │ 天气API │ AI API │ 高德地图 │
└─────────────────────────────────────────────────────────────────┘
技术栈
| 层级 | 技术选型 | 说明 |
|---|---|---|
| 前端 | HTML5 + CSS3 + JavaScript | 现代化响应式界面 |
| 地图库 | Leaflet + 高德地图 | 国内稳定访问 |
| Web框架 | Flask | 轻量级Python Web框架 |
| 深度学习 | PyTorch + ResNet50 | 预训练模型迁移学习 |
| 图像处理 | OpenCV + PIL + Albumentations | 图像预处理与增强 |
| 数据库 | SQLite | 轻量级关系型数据库 |
| 会话管理 | Flask-Session | 用户登录状态管理 |
| AI集成 | 超算互联网/通义千问/火山引擎/阿里百炼 | 多平台大模型支持 |
| 天气服务 | 中国天气数据 | 国内真实天气API |
项目结构
coffee_leaf_disease_detection/
├── data/ # 数据集目录
│ ├── train/ # 原始数据集
│ │ ├── healthy/ # 健康叶片图像
│ │ ├── leaf_rust/ # 叶锈病图像
│ │ └── phoma/ # 黑斑病图像
│ └── processed/ # 预处理后的数据集
├── models/ # 模型文件目录
│ └── best_model.pth # ResNet50模型权重
├── results/ # 实验结果目录(包含模型训练图片)
├── src/ # 源代码目录
│ ├── data_preprocessing.py # 数据预处理模块
│ ├── model.py # 模型定义模块
│ ├── train_model.py # 模型训练模块
│ ├── evaluate_model.py # 模型评估模块
│ ├── predict.py # 预测模块
│ ├── app.py # Web应用主入口
│ ├── database.py # 数据库操作模块
│ └── weather_service.py # 天气服务模块
├── templates/ # Web应用模板
│ ├── login.html # 登录页面
│ ├── dashboard.html # 智慧控制台
│ ├── detect.html # 病害识别
│ ├── weather.html # 气象中心
│ ├── assistant.html # 农业助手
│ ├── map.html # 农场地图
│ └── settings.html # 设置页面
├── static/ # 静态资源
│ ├── css/ # 样式文件
│ ├── js/ # JavaScript文件
│ └── uploads/ # 用户上传目录
├── 界面/ # 系统界面截图
│ ├── 界面/ # 页面截图
│ └── 交互/ # 交互流程截图
├── requirements.txt # 项目依赖
├── README.md # 项目说明文档
├── CODE_SUMMARY.md # 代码总结文档
└── coffee_farm.db # SQLite数据库(自动生成)
系统界面
1. 登录页面
用户登录界面,支持账号密码登录和记住登录状态。

2. 智慧控制台
展示今日天气、农事任务列表和备忘录编辑区域。

3. 病害识别
支持多图片上传和拖拽,实时检测咖啡叶病害。

识别流程
上传图片:

点击识别:

识别结果:

4. 气象中心
支持地址输入,获取中国境内真实天气数据。

气象交互

5. 农业助手
支持文字聊天和图片上传,集成多种大模型API。

农业助手流程
配置API:

交互结果:

6. 农场地图
基于高德地图的农场地图管理功能。

地图功能
整体结果:

添加标记:

添加路径:

添加范围:

7. 设置页面
包含账号管理、AI API配置、农场信息设置等。

模型训练
数据集信息
原始数据集
- 总图像数: 3,322张
- 类别数量: 3类
- 类别分布:
- 健康(healthy): 1,179张(35.5%)
- 叶锈病(leaf_rust): 1,033张(31.1%)
- 黑斑病(phoma): 1,110张(33.4%)
类别分布

样本可视化

模型对比实验
本项目对6种不同的深度学习模型进行了系统性的性能评估。
实验配置
- 数据集: 咖啡叶病害数据集(3类:健康healthy、叶锈病leaf_rust、黑斑病phoma)
- 数据划分: 训练集70%、验证集15%、测试集15%
- 图像尺寸: 224×224像素
- 训练轮数: 50轮(动态早停)
- 批次大小: 32
- 优化器: AdamW
- 学习率: 1e-4
- 早停耐心值: 10个epoch
模型性能对比
| 排名 | 模型名称 | 参数量 | 测试准确率 | 精确率 | 召回率 | F1分数 | 训练状态 |
|---|---|---|---|---|---|---|---|
| 1 | ResNet50 | 23,506,048 | 99.25% | 0.9925 | 0.9925 | 0.9925 | 基准模型 |
| 2 | MobileNetV2 | 2,227,715 | 95.97% | 0.9624 | 0.9597 | 0.9595 | 新训练 |
| 3 | ResNet18 | 11,178,051 | 95.35% | 0.9569 | 0.9535 | 0.9534 | 新训练 |
| 4 | ResNet34 | 21,286,211 | 92.71% | 0.9265 | 0.9271 | 0.9266 | 新训练 |
| 5 | DenseNet121 | 6,956,931 | 91.16% | 0.9171 | 0.9116 | 0.9110 | 新训练 |
| 6 | VGG16 | 134,272,835 | 49.77% | 0.5468 | 0.4977 | 0.4351 | 新训练 |
模型对比图表

参数对比

ResNet50模型详情
混淆矩阵

所有模型混淆矩阵

ROC曲线

分类报告

预测可视化

数据增强
通过albumentations库实现的数据增强技术,在训练过程中动态生成图像变体。
增强技术:
- 水平翻转 (p=0.5)
- 垂直翻转 (p=0.3)
- 随机旋转90° (p=0.5)
- 亮度对比度调整 (p=0.3)
- 色调饱和度调整 (p=0.3)
- 高斯噪声 (p=0.2)
- 模糊处理 (p=0.1)
扩充效果:
- 理论上每个epoch可生成约2-3倍的图像变体
- 50轮训练中,每个原始图像可生成约50个不同的变体
- 有效缓解类别不平衡问题,提升模型泛化能力
实验结果总结
| 指标 | 数值 |
|---|---|
| 最佳模型 | ResNet50 |
| 最高准确率 | 99.25% |
| 参数量范围 | 222万 ~ 1.34亿 |
| 训练轮数 | 50轮(动态早停) |
| 数据增强提升 | 50倍 |
安装部署
环境要求
- Python 3.8+
- PyTorch 1.9+
- CUDA 11.0+ (可选,用于GPU加速)
安装步骤
- 克隆仓库
git clone https://github.com/G-YOUNG01/Deep-Learning-System-for-Coffee-Leaf-Disease-Detection.git
cd Deep-Learning-System-for-Coffee-Leaf-Disease-Detection
- 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
- 安装依赖
pip install -r requirements.txt
- 下载模型权重
将训练好的模型权重文件 best_model.pth 放置到 models/ 目录下。
- 启动应用
python src/app.py
- 访问系统
打开浏览器访问:http://localhost:5000
默认账号
- 用户名:
admin - 密码:
admin123
使用说明
病害识别
- 登录系统后进入"病害识别"页面
- 点击或拖拽上传咖啡叶图片(支持多图)
- 系统自动进行病害检测
- 查看识别结果和置信度
农业助手配置
- 进入"设置"页面
- 选择AI服务提供商(超算互联网/通义千问/火山引擎/阿里百炼)
- 填写API Key和模型名称
- 对于超算互联网,还需要填写Base URL
- 点击"保存配置"
- 点击"测试连接"验证配置
农场地图使用
- 进入"农场地图"页面
- 使用搜索框或下拉菜单定位到目标位置
- 点击"添加标记"按钮,在地图上点击添加标记
- 点击"添加路线"按钮,依次点击两点连线
- 点击"添加范围"按钮,依次点击多个点绘制多边形
- 点击"完成绘制"确认范围,系统自动计算面积
系统架构详解
数据库设计
系统使用SQLite数据库,包含7张数据表:
| 表名 | 功能 | 主要字段 |
|---|---|---|
| users | 用户表 | id, username, password_hash, nickname, created_at |
| farm_tasks | 农事任务表 | id, user_id, title, description, task_date, priority, status, created_at |
| memos | 备忘录表 | id, user_id, content, memo_date, is_important, created_at |
| weather_settings | 天气设置表 | id, user_id, city, updated_at |
| detection_history | 检测历史表 | id, user_id, image_path, result, confidence, created_at |
| ai_api_settings | AI API配置表 | id, user_id, provider, api_key, model_name, base_url, updated_at |
| farm_info | 农场信息表 | id, user_id, farm_name, farm_area, coffee_variety, planting_year, soil_type, irrigation_method, updated_at |
API接口
认证相关
POST /api/login- 用户登录POST /api/logout- 用户登出GET /api/user- 获取当前用户信息PUT /api/user- 更新用户信息
天气相关
GET /api/weather- 获取天气信息POST /api/weather_setting- 更新天气设置
农事任务
GET /api/farm_tasks- 获取农事任务列表POST /api/farm_tasks- 添加农事任务PUT /api/farm_tasks/<id>- 更新农事任务DELETE /api/farm_tasks/<id>- 删除农事任务
备忘录
GET /api/memos- 获取备忘录列表POST /api/memos- 添加备忘录PUT /api/memos/<id>- 更新备忘录DELETE /api/memos/<id>- 删除备忘录
AI相关
GET /api/ai_settings- 获取AI API配置POST /api/ai_settings- 更新AI API配置POST /api/test_ai_connection- 测试AI连接POST /api/chat- AI聊天接口
农场信息
GET /api/farm_info- 获取农场信息POST /api/farm_info- 更新农场信息
病害检测
POST /upload- 图像上传和检测POST /api/predict- API预测接口GET /api/detection_history- 获取检测历史
更新日志
v2.0.0 (2024-03-31)
- ✨ 新增:智慧农业平台完整功能
- ✨ 新增:用户登录认证系统
- ✨ 新增:智慧控制台(天气、农事、备忘录)
- ✨ 新增:气象中心(真实天气数据)
- ✨ 新增:农业助手(AI聊天、图片分析)
- ✨ 新增:农场地图(高德地图、标记、路线、范围)
- ✨ 新增:设置中心(账号、AI配置、农场信息)
- 🎨 优化:界面美化和交互体验
- 🐛 修复:模型加载错误处理
- 🐛 修复:地图国内访问问题
v1.0.0 (2024-01-01)
- 🎉 初始版本发布
- ✨ 咖啡叶病害检测功能
- ✨ ResNet50模型实现
- ✨ 基础Web界面
许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request!
联系方式
如有问题或建议,请提交 Issue。
本系统可为咖啡种植业提供有力的病害识别技术支持,具有重要的实际应用价值。