手机端
手机扫描二维码
|
登录
注册
课程
题库
OJ算法平台
一对一指导
辅导报名
辅导花絮
首页
>
课程中心
>
科创综评
>
科创综评
>
【AI for Science】基于计算机视觉的植物病害检测小程序
【AI for Science】基于计算机视觉的植物病害检测小程序
登录学习
简单注册,零基础一对一指导
课程介绍
项目功能
课程章节
合规声明
1. AI+农业:科技助农背景
选修
1.1. 全球粮食安全挑战与植物病害的经济损失
选修
1.2. 传统病害识别方法(人工经验、实验室检测)的局限性
选修
1.3. 项目分层目标(初中:使用预训练模型推理 / 高中:迁移学习训练 / 大学:模型量化+部署)
选修
1.4. 项目最终演示:手机拍摄病叶照片,App显示病害名称、置信度、防治方案
选修
1.5. 开发环境搭建(Python + TensorFlow/Keras + OpenCV + Streamlit)
选修
1.6. 硬件准备:普通电脑(训练)+ 手机(拍照测试)
选修
2. Python基础衔接:图像处理基础
选修
2.1. OpenCV入门:读取、显示、保存图像(cv2.imread, imshow, imwrite)
选修
2.2. 图像缩放与裁剪:cv2.resize, 数组切片
选修
2.3. 颜色空间转换:BGR ↔ RGB ↔ HSV
选修
2.4. 数据增强:旋转、翻转、亮度调整(使用ImageDataGenerator)
选修
2.5. 实战:编写一个函数,读入一张叶子图片,随机旋转30度并水平翻转
选修
2.6. 批量处理:遍历文件夹,对所有图片进行增强并保存
选修
3. 数据集探索与预处理
选修
3.1. PlantVillage数据集介绍:包含健康及病害图片约5万张,38个类别
选修
3.2. 下载数据集(Kaggle/公开源):或提供精简版(10类,每类500张)用于快速教学
选修
3.3. 数据集结构分析:每个类别文件夹,图片格式为.jpg
选修
3.4. 数据不平衡检查:统计每类图片数量,可视化条形图
选修
3.5. 划分训练集/验证集/测试集:80% / 10% / 10%,确保分层采样
选修
3.6. 使用Keras的flow_from_directory:自动加载图片并生成批次
选修
4. 卷积神经网络(CNN)基础
选修
4.1. 什么是卷积?——边缘检测、特征提取的直观理解
选修
4.2. 池化层作用:降维、平移不变性
选修
4.3. 全连接层:将特征图映射到类别概率
选修
4.4. 激活函数:ReLU(引入非线性)、Softmax(多分类输出)
选修
4.5. 损失函数:分类交叉熵(Categorical Crossentropy)
选修
4.6. 实战:从头搭建一个简单的CNN(3个卷积层+2个全连接层),在PlantVillage上训练
选修
5. 迁移学习:使用MobileNetV3
选修
5.1. 为什么需要迁移学习?——从头训练需要大量数据和时间
选修
5.2. MobileNetV3架构特点:轻量级、适合移动端、深度可分离卷积
选修
5.3. 加载预训练权重(ImageNet):Keras.applications.MobileNetV3Small
选修
5.4. 冻结基础层:base_model.trainable = False
选修
5.5. 添加自定义分类头:全局平均池化 → Dropout → Dense(128) → Dense(num_classes)
选修
5.6. 编译模型:使用Adam优化器,学习率0.001
选修
6. 模型训练与调优
选修
6.1. 设置回调函数:ModelCheckpoint(保存最佳模型)、EarlyStopping(防止过拟合)
选修
6.2. 数据增强:训练时实时进行(rotation_range, width_shift_range, horizontal_flip)
选修
6.3. 训练模型:model.fit,记录历史loss和accuracy
选修
6.4. 可视化训练曲线:绘制训练/验证的loss和accuracy随epoch变化图
选修
6.5. 超参数调优:尝试不同学习率、dropout比例、batch size
选修
6.6. 分层适配:初中使用已训练好的模型 / 高中自己训练10个epoch / 大学完整调优
选修
7. 模型评估与混淆矩阵
选修
7.1. 在测试集上评估:model.evaluate,得到loss和accuracy
选修
7.2. 预测测试集:model.predict,得到每个样本的预测类别
选修
7.3. 混淆矩阵:使用sklearn.metrics.confusion_matrix,可视化热力图
选修
7.4. 找出易混淆的病害对:例如“苹果黑腐病”常被误认为“苹果锈病”
选修
7.5. 计算精确率、召回率、F1-score:classification_report
选修
7.6. 实战:针对10类病害,生成完整的评估报告
选修
8. 模型量化与转换(TFLite)
选修
8.1. 为什么需要量化?——减小模型体积、加速推理、降低功耗
选修
8.2. 训练后动态范围量化:将Float32权重转为Int8
选修
8.3. 使用TensorFlow Lite Converter:tf.lite.TFLiteConverter.from_keras_model
选修
8.4. 设置优化:converter.optimizations = [tf.lite.Optimize.DEFAULT]
选修
8.5. 转换并保存模型:.tflite文件,对比原始.h5文件大小(通常缩小4倍)
选修
8.6. 测试TFLite模型:使用Interpreter接口加载,在单张图片上推理,对比精度损失
选修
9. 防治方案数据库设计
选修
9.1. 需求:识别出病害后,需给出具体的农药和使用方法
选修
9.2. 设计SQLite数据库表:disease(病害名、学名、症状)、treatment(病害ID、药剂名、稀释比例、使用方法、注意事项)
选修
9.3. 插入示例数据:为10类病害添加防治方案(从农业网站整理)
选修
9.4. Python连接SQLite:sqlite3库,执行SELECT查询
选修
9.5. 实现查询函数:给定病害名,返回防治方案字符串
选修
9.6. 实战:查询“苹果黑腐病”的防治方案,输出“喷洒50%多菌灵可湿性粉剂500倍液”
选修
10. 后端API开发(FastAPI)
选修
10.1. FastAPI入门:比Flask更快、自动生成API文档
选修
10.2. 定义请求体:ImageData(base64编码的图片字符串)
选修
10.3. 图片解码:base64.b64decode转为bytes,再用PIL打开
选修
10.4. 预处理:缩放至模型输入尺寸(224x224),归一化,增加batch维度
选修
10.5. 加载TFLite模型进行推理:获取输出概率,取argmax得到类别索引
选修
10.6. 返回JSON:{"disease": "苹果黑腐病", "confidence": 0.96, "treatment": "..."}
选修
10.7. 自动生成API文档:访问/docs查看交互式文档
选修
11. 前端拍照界面(Streamlit)
选修
11.1. Streamlit移动端适配:使用st.camera_input组件调用手机摄像头
选修
11.2. 拍照后立即显示图片缩略图
选修
11.3. 添加“识别”按钮:将图片转为base64,发送到FastAPI后端
选修
11.4. 展示识别结果:病害名称、置信度进度条、防治方案
选修
11.5. 添加“语音播报”功能:使用浏览器SpeechSynthesis API朗读病害名
选修
11.6. 历史记录:将最近10次识别结果保存到浏览器localStorage
选修
11.7. 部署到云服务器:使用Streamlit Sharing或阿里云ECS,生成公网链接
选修
12. 项目集成与端到端测试
选修
12.1. 启动后端:uvicorn main:app --host 0.0.0.0 --port 8000
选修
12.2. 启动前端:streamlit run app.py
选修
12.3. 端到端测试:用手机拍照(或上传示例病叶图片),验证完整流程
选修
12.4. 性能测试:测量从拍照到显示结果的总耗时(目标<2秒)
选修
12.5. 错误处理:上传非叶子图片时提示“请上传清晰的叶子照片”
选修
12.6. 离线模式(可选):将TFLite模型和数据库打包进前端,完全本地运行
选修
13. 项目优化与扩展
选修
13.1. 提高准确率:使用更大的模型(EfficientNet)或集成多个模型
选修
13.2. 支持更多作物:下载PlantVillage全量38类,或自定义收集本地作物数据
选修
13.3. 连续识别模式:每0.5秒自动识别一帧,适用于视频流
选修
13.4. 严重程度分级:识别病害后进一步评估感染面积比例(图像分割)
选修
13.5. 用户反馈机制:用户可纠正识别结果,用于持续改进模型
选修
13.6. 分层适配:初中实现基本识别 / 高中实现连续识别 / 大学实现严重程度分级
选修
14. 项目展示与社会价值
选修
14.1. 演示准备:一盆真实病叶(如白粉病的月季)+ 手机拍照识别
选修
14.2. 录制视频:展示从拍照到显示防治方案的完整过程
选修
14.3. 答辩PPT结构:问题背景→数据→模型→移动端部署→社会价值
选修
14.4. 社会价值阐述:帮助农民减少30%农药滥用,助力乡村振兴
选修
14.5. 可能的提问:模型在野外光照下的鲁棒性?如何处理未知病害?
选修
14.6. 拓展方向1:开发微信小程序(使用微信云开发+TensorFlow.js)
选修
14.7. 拓展方向2:接入无人机遥感图像,实现大田病害监测
选修
14.8. 拓展方向3:与农业合作社合作,部署到田间信息服务站
选修
相关资讯
更多>>
《数学大师 PRO》-锻炼心算能力,边玩边学
[11-24]
《猜地名挑战》-考地理、练手速,边玩边学
[11-24]
《像素小英雄大冒险》——边玩边学
[11-24]
《单词城堡》保卫城堡+记单词,打字速度和词汇量双重提升
[11-17]
《星际守护者》刺激的太空射击小游戏,先玩再学
[11-15]
《数字拼图》游戏在线玩——从玩家到开发者
[11-15]
《贪吃蛇》游戏在线玩——从玩家到开发者,编程的奇幻冒险
[11-11]
2025-2028学年教育部“白名单”赛事全解析来了!这39项+新变化
[09-11]
Matplotlib作业:生成不同类型的图表
[08-30]
Pandas超市营业额分析
[08-30]
联系Tom老师
扫码添加老师微信
QQ:
1445154666
邮箱:
1445154666@qq.com
淘宝店:
跟Tom学编程-淘宝网
一对一指导报名申请