【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:与农业合作社合作,部署到田间信息服务站 选修
联系Tom老师
扫码添加老师微信
微信1二维码 微信2二维码
QQ:
1445154666
邮箱:
1445154666@qq.com