基于 Django 与深度学习的马铃薯病害识别系统
项目简介本项目是一个基于深度学习的马铃薯叶片病害智能识别系统专门用于识别马铃薯早疫病、马铃薯晚疫病和健康叶片三类状态。系统采用 Django 作为 Web 端入口为用户提供直观易用的交互界面。用户在首页上传叶片图片后后台调用 PyTorch 训练好的分类模型进行实时推理并在页面中展示预测类别、置信度和候选类别概率。相比传统的模板页面本项目首页已改造成更贴近农业病害检测场景的专业工作台样式包含以下核心模块图片上传预览区支持拖拽上传和预览模型选择面板支持多种预训练模型切换诊断结果展示区显示主预测结果和置信度Top3 候选概率条可视化展示各候选类别的置信度病害说明模块提供病害特征和防治建议数据集概览面板展示数据集统计信息本系统旨在为农业技术人员和种植户提供快速、准确的病害诊断工具助力马铃薯产业的健康发展。## ️ 技术栈后端框架Django提供稳定的 Web 服务接口和用户界面深度学习框架PyTorch主流的深度学习框架提供灵活的模型构建和训练接口torchvision提供图像预处理、数据增强和预训练模型模型架构Vision Transformer (ViT)基于注意力机制的视觉 Transformer 模型ResNet 系列深度残差网络包括 ResNet18、ResNet34、ResNet50MobileNet 系列轻量级卷积网络适合移动端部署其他模型AlexNet、VGG、DenseNet、Swin Transformer 等分类模型脚本数据处理与增强ImageFolder按目录结构自动加载数据集数据预处理Resize、CenterCrop、Normalize数据增强随机裁剪、水平翻转、颜色抖动等结果记录与分析pandas读取/写入训练指标 Excel 文件matplotlib生成类别分布图和训练曲线图scikit-learn计算 precision、recall、f1-score 等评估指标前端技术HTML/CSS/JavaScript构建响应式用户界面Bootstrap提供现代化的 UI 组件和布局## ️ 系统首页展示下图展示了系统首页的工作台界面该截图基于项目本地首页模板和数据集样例图片生成。图中的预测值为页面展示用样例主要用于说明系统前端布局和识别结果展示方式。界面布局说明左侧功能区图片上传区域支持拖拽或点击上传模型选择下拉框支持切换不同预训练模型识别按钮触发病害识别流程中间预览区实时显示上传的叶片图片支持图片缩放和旋转查看右侧结果区主预测结果显示最高置信度的病害类别置信度进度条直观展示模型置信度Top3 候选结果展示其他可能的病害类别及概率病害说明提供病害特征和防治建议底部数据集概览显示当前数据集统计信息各类别样本数量分布## 数据集介绍数据集结构项目数据集位于djangoProject/data_set/potato目录下采用标准的Train/Test目录结构组织。当前本地数据统计如下类别训练集数量测试集数量合计马铃薯早疫病300 张100 张400 张马铃薯晚疫病300 张100 张400 张健康叶片300 张100 张400 张总计900 张300 张1200 张类别说明Potato___Early_blight马铃薯早疫病特征叶片出现褐色斑点边缘有黄色晕圈发病部位主要在中下部叶片危害程度中等影响光合作用Potato___Late_blight马铃薯晚疫病特征叶片出现水渍状暗绿色病斑边缘有白色霉层发病部位全株叶片均可发生危害程度严重可导致整株死亡Potato___healthy健康叶片特征叶片颜色鲜绿无病斑生长状态正常生长数据预处理所有图像在训练前会进行以下预处理尺寸统一调整为 224×224 像素数据增强仅训练集随机水平翻转随机旋转±15°颜色抖动随机裁剪归一化使用 ImageNet 的均值和标准差进行归一化数据集示例## 系统功能1. 叶片图片上传支持格式JPG、PNG、JPEG 等常见图片格式上传方式支持拖拽上传和文件选择器上传大小限制最大支持 10MB 的图片文件格式验证自动检测图片格式和完整性2. 图片预览与处理实时预览前端在用户选择图片后立即展示待识别叶片图片调整支持缩放、旋转等基本操作格式转换自动将图片转换为模型输入格式质量检查验证图片是否包含有效叶片区域3. 模型选择与切换多模型支持Vision Transformer、ResNet、MobileNet 等权重管理自动加载对应模型的预训练权重性能对比支持不同模型在相同图片上的识别结果对比默认模型系统默认使用 Vision Transformer 模型4. 病害识别与推理实时推理后台调用 PyTorch 模型进行快速预测类别映射读取类别映射文件将数字标签转换为可读名称置信度计算输出预测类别及对应的置信度分数Top3 结果展示前三个最可能的病害类别及概率5. 结果可视化展示主预测结果突出显示最高置信度的病害类别置信度进度条直观展示模型对预测结果的把握程度候选结果列表展示其他可能的病害类别及概率病害说明卡片提供病害特征、防治方法和注意事项6. 数据集适配性目录结构兼容自动识别Train/Test或train/val等常见目录命名类别自动检测根据目录名称自动生成类别索引数据统计实时显示数据集各类别样本数量格式验证检查数据集结构的完整性和正确性## 模型与核心流程说明训练阶段首先通过ImageFolder按目录读取叶片图片并根据目录名称自动生成类别索引。训练集使用随机裁剪、水平翻转等增强方式提高泛化能力验证或测试阶段使用固定尺寸缩放与归一化保证输入格式稳定。模型部分保留了多个经典网络和 Transformer 网络的训练脚本例如 AlexNet、VGG、ResNet、MobileNet、DenseNet、Swin Transformer 和 Vision Transformer。当前系统默认训练入口为python main_train.py --model vit --data_set potato训练后会保存weights/best_model.pth作为页面推理权重。预测阶段会读取上传图片完成 Resize、CenterCrop、ToTensor 和 Normalize 处理然后加载对应模型权重进行前向推理最后将 softmax 概率最大的类别作为主要识别结果返回给前端。训练与运行流程准备数据集将马铃薯叶片数据按Train/Test/类别名放入data_set/potato。启动训练执行python main_train.py --model vit --data_set potato --epoch 10。查看结果训练过程会输出 loss、accuracy、precision、recall、f1 等指标并保存 Excel 结果文件。启动 Web安装 Django 等依赖后执行python manage.py runserver。页面识别打开首页上传叶片图片查看预测类别和置信度。效果展示与分析下图从项目已有的部分*_results.xlsx文件中抽取前若干轮训练记录生成用于展示训练记录可视化方式。由于本报告是快速生成版如果后续重新训练马铃薯数据集可以直接替换为新的训练日志和曲线。从展示曲线可以看出训练结果文件能够记录每轮验证准确率变化便于对不同模型的收敛速度和稳定性进行比较。实际项目中可以进一步补充混淆矩阵、错误样本可视化和单类别召回率分析用来判断早疫病与晚疫病之间是否存在误判。项目总结与优化方向本项目完成了从数据集加载、模型训练、预测推理到 Django 前端展示的完整流程适合作为农作物病害识别类项目的基础版本。页面部分已经从通用模板改造成马铃薯病害识别场景报告中的首页图、数据集样例和可视化图均来自本地项目内容。后续可以继续优化的方向包括增加真实训练后的最佳权重文件、加入混淆矩阵分析、扩展更多病害类别、增加历史识别记录、支持批量检测以及在移动端进一步优化拍照上传体验。