人工智能期末作业
专 业:
设计题目:**
班 级:
学生姓名:
学 号:
数据科学与人工智能学院
2025年5月
目录
目录
人工智能
本研究旨在开发一个基于深度学习的苹果病害诊断系统,通过计算机视觉技术实现对苹果叶片病害的自动识别和分类。系统能够识别9种不同的苹果叶片状态,包括健康叶片和8种常见病害,为果农提供及时的病害诊断和防治建议。
传统人工诊断需要专业知识和经验
系统可以在几秒钟内完成诊断
减少人工诊断的时间和成本
提高诊断的准确性和一致性
非专业人士也能准确识别苹果病害
减少对专业农技人员的依赖
提高病害识别的普及性
帮助果农及时发现病害
快速诊断帮助果农及时采取防治措施
减少病害造成的经济损失
提高苹果产量和品质
降低农药使用量
推动人工智能技术在农业领域的应用
促进农业现代化发展
为其他作物病害诊断提供参考
推动智慧农业发展
深度学习是机器学习的一个重要分支,通过多层神经网络模拟人脑的学习过程。在本系统中,我们主要使用PyTrch深度学习框架,它提供了灵活的神经网络构建和训练工具。
深度学习的主要特点:
自动特征提取:无需人工设计特征
强大的表达能力:可以学习复杂的非线性关系
端到端学习:直接从原始数据学习到最终结果
可迁移性:预训练模型可以迁移到新任务
示例代码:
imprt trch
imprt trch.nn as nn
class SimpleCNN(nn.Mdule):
def __init__(self, num_classes=9):
super(SimpleCNN, self).__init__()
self.features = nn.Sequential(
nn.Cnv2d(3, 64, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.MaxPl2d(kernel_size=2, stride=2),
)
self.classifier = nn.Sequential(
nn.Linear(64 * 28 * 28, 512),
nn.ReLU(inplace=True),
nn.Linear(512, num_classes)
)
卷积神经网络(CNN)是处理图像数据的首选深度学习模型,具有以下特点:
每个神经元只与输入的一个局部区域相连
减少参数数量,降低过拟合风险
保持空间局部性
同一卷积核在不同位置共享参数
提高训练效率
增强模型泛化能力
逐层提取特征
从低级特征到高级特征
实现端到端学习
本系统采用以下图像处理技术:
调整大小:统一图像尺寸为224×224
标准化:使用ImageNet预训练模型的均值和标准差
数据增强:提高模型泛化能力
随机裁剪:增加数据多样性
水平翻转:扩充训练样本
随机旋转:提高模型鲁棒性
CNN自动提取特征
多层特征融合
注意力机制
Sftmax分类器
多类别概率输出
置信度评估
示例代码:
transfrm = transfrms.Cmpse([
transfrms.Resize((224, 224)),
transfrms.RandmHrizntalFlip(),
transfrms.RandmRtatin(10),
transfrms.TTensr(),
transfrms.Nrmalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
数据预处理包括以下步骤:
目标尺寸:224×224
保持宽高比
双线性插值
随机裁剪:224×224
水平翻转:概率0.5
随机旋转:±10度
亮度调整:±0.2
使用ImageNet预训练模型的均值和标准差
均值:[0.485, 0.456, 0.406]
标准差:[0.229, 0.224, 0.225]
训练集:70%
验证集:30%
随机划分
保持类别平衡
采用SimpleCNN模型结构:
尺寸:224×224×3
RGB三通道
标准化输入
多个卷积块
3×3卷积核
ReLU激活函数
批归一化
最大池化
2×2池化窗口
步长为2
特征映射到9个类别
Drput防止过拟合
ReLU激活函数
Sftmax分类
9个类别概率
置信度输出
示例代码:
def train_mdel(mdel, train_lader, criterin, ptimizer, num_epchs=25):
frepch in range(num_epchs):
mdel.train()
running_lss = 0.0
grinputs, labels in train_lader:
ptimizer.zer_grad()
utputs = mdel(inputs)
lss = criterin(utputs, labels)
lss.backward()
ptimizer.step()
running_lss += lss.item()
训练过程采用以下策略:
Adam优化器
学习率:0.001
权重衰减:0.0001
动量:0.9
交叉熵损失
类别权重平衡
标签平滑
训练轮数:25个epch
批次大小:32
学习率调整:每5个epch衰减0.1
验证集性能监控
耐心值:5
最小改善阈值:0.001
编程语言:Pythn 3.11
深度学习框架:PyTrch 2.3.0
Web框架:Flask 3.0.3
图像处理:Pillw 10.3.0
操作系统:Windws 10
开发工具:VS Cde
版本控制:Git
支持批量加载
自动数据增强
标准化处理
内存优化
自动检测类别数
检查点保存
训练过程可视化
早停机制
单张图片预测
置信度计算
防治建议生成
结果格式化
测试内容包括:
准确率测试
召回率测试
F1分数测试
混淆矩阵分析
单张图片测试
批量测试
边界情况测试
异常处理测试
界面响应测试
用户交互测试
结果展示测试
错误处理测试
单张图片处理时间
批量处理时间
并发处理能力
系统负载测试
5.1模型性能分析
模型性能分析
5.1.1 整体性能
模型整体准确率达到93.58%
平均推理时间为0.67秒/张
宏平均F1分数为90.21%
加权平均F1分数为93.47%
5.1.2 各类别性能
1.
类别0(健康苹果)
2.
准确率:82.79%
召回率:80.16%
F1分数:81.45%
3.
类别1(黑星病)
4.
准确率:94.62%
召回率:99.19%
F1分数:96.85%
5.
类别2(黑腐病)
6.
准确率:96.14%
召回率:96.54%
F1分数:96.34%
7.
类别3(灰霉病)
8.
准确率:94.19%
召回率:79.41%
F1分数:86.17%
9.
类别4(锈病)
10.
准确率:88.64%
召回率:75.48%
F1分数:81.53%
11.
类别5(白粉病)
12.
准确率:96.15%
召回率:89.29%
F1分数:92.59%
13.
类别6(褐斑病)
14.
准确率:96.27%
召回率:79.78%
F1分数:87.25%
15.
类别7(炭疽病)
16.
准确率:94.82%
召回率:95.28%
F1分数:95.05%
17.
类别8(轮纹病)
18.
准确率:91.99%
召回率:97.54%
F1分数:94.68%
图5-1 模型混淆矩阵
图5-2 各类别ROC曲线
图5-3 预测置信度分布图
图5-4 各类别准确率柱状图
结果分析
5.2.1 优势
1.
整体性能优秀
2.
93.58%的整体准确率表明模型具有很高的识别能力
大多数类别的F1分数超过90%,说明模型在精确率和召回率之间取得了很好的平衡
3.
特定病害识别能力强
4.
黑星病(类别1)的识别效果最好,F1分数达到96.85%
黑腐病(类别2)和炭疽病(类别7)的识别效果也很突出
5.
实时性能好
6.
平均推理时间0.67秒/张,满足实际应用需求
5.2.2 存在的问题
1.
类别不平衡
2.
数据集样本分布不均,如轮纹病(1624张)和灰霉病(102张)的样本数量差异较大
部分类别的召回率较低,如锈病(75.48%)和灰霉病(79.41%)
3.
混淆现象
4.
健康苹果(类别0)与炭疽病(类别7)存在一定程度的混淆
褐斑病(类别6)与轮纹病(类别8)之间存在部分误判
优化建议
5.3.1 数据层面
1.
扩充样本
2.
增加灰霉病、锈病等样本量较少的类别
收集更多不同角度、光照条件下的图片
3.
数据增强
4.
对样本量少的类别进行更多的数据增强
考虑添加噪声、模糊等真实场景的干扰
5.3.2 模型层面
1.
改进模型结构
2.
考虑使用更深的网络结构
添加注意力机制,提高特征提取能力
3.
优化训练策略
4.
使用类别权重平衡不同类别的损失
采用学习率衰减策略提高模型稳定性
5.3.3 应用层面
1.
提高实时性
2.
考虑模型量化或剪枝
优化推理过程,减少计算开销
3.
增强鲁棒性
4.
添加预处理步骤,提高图片质量
考虑多模型集成,提高识别准确率
本文作者:ChiMing
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 © 2024 [ChiMing的Blog]. 保留所有权利 许可协议。转载请注明出处!