番茄叶片病害识别-从训练到应用-Python

在农业生产中,及时准确地识别作物病害对于保障粮食安全和提高农民收入至关重要。本文将介绍一个基于深度学习的番茄叶片病害识别系统,涵盖模型训练、验证评估和图形用户界面应用的完整流程。

系统概述

该系统能够识别10种不同的番茄叶片状态,包括9种病害和1种健康状态:

  1. 番茄细菌性斑点病 (Tomato_Bacterial_spot)
  2. 番茄早疫病 (Tomato_Early_blight)
  3. 番茄晚疫病 (Tomato_Late_blight)
  4. 番茄叶霉病 (Tomato_Leaf_Mold)
  5. 番茄斑枯病 (Tomato_Septoria_leaf_spot)
  6. 番茄红蜘蛛危害 (Tomato_Spider_mites_Two_spotted_spider_mite)
  7. 番茄靶斑病 (Tomato__Target_Spot)
  8. 番茄黄化曲叶病毒病 (Tomato__Tomato_YellowLeaf__Curl_Virus)
  9. 番茄花叶病毒病 (Tomato__Tomato_mosaic_virus)
  10. 健康番茄叶片 (Tomato_healthy)

模型训练

关键技术点

  1. 模型架构:使用ResNet18作为基础模型,替换最后的全连接层以适应我们的10分类任务。

  2. 数据预处理

    transform = transforms.Compose([
        transforms.Resize((224, 224)),
        transforms.ToTensor(),
    ])
    
  3. 训练配置

    • 优化器:Adam,学习率0.001
    • 损失函数:交叉熵损失
    • 训练轮数:3个epoch(实际应用中可增加)
    • 批量大小:32
  4. 训练过程监控

    • 使用tqdm实现进度条
    • 实时显示训练损失和准确率
    • 每个epoch后计算验证集准确率

在这里插入图片描述

模型验证与评估

1. 混淆矩阵

可视化模型在各个类别上的预测情况,直观显示哪些类别容易混淆。

在这里插入图片描述

2. 分类指标报告

提供精确率(precision)、召回率(recall)和F1-score等详细指标

3. 分类指标柱状图

将各个类别的性能指标可视化,便于比较:

在这里插入图片描述

4. ROC曲线与AUC值

评估模型在不同阈值下的表现,计算每个类别的AUC值:

for i in range(num_classes):
    fpr[i], tpr[i], _ = roc_curve(y_true_bin[:, i], y_probs[:, i])
    roc_auc[i] = auc(fpr[i], tpr[i])

在这里插入图片描述

使用建议

  1. 重点关注F1-score,它是精确率和召回率的调和平均
  2. 对于不平衡数据集,可查看每个类别的表现而非仅关注总体准确率
  3. AUC值接近1表示模型在该类别上表现优异

图形用户界面

主要功能

  1. 图像选择:支持多选图片文件(JPG/JPEG/PNG)
  2. 实时预测:显示预测结果和置信度
  3. 结果展示:以图文结合的方式展示预测结果
  4. 界面清理:一键清除所有结果显示

在这里插入图片描述

在这里插入图片描述

源码获取👇

https://www.liyansheng.top/project/%E7%95%AA%E8%8C%84%E5%8F%B6%E7%89%87%E7%97%85%E5%AE%B3%E8%AF%86%E5%88%AB.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子空间Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值