毕业设计-基于深度学习玉米叶病虫害识别系统 YOLO python 机器学习 目标检测 人工智能 算法
目录
前言
设计思路
一、课题背景与意义
二、算法理论原理
2.1 卷积神经网络
2.2 YOLOv5算法
三、检测的实现
3.1 数据集
3.2 实验环境搭建
3.3 实验及结果分析
实现效果图样例
最后
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导:
最新最全计算机专业毕设选题精选推荐汇总
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯基于深度学习玉米叶病虫害识别系统
设计思路
一、课题背景与意义
抑制玉米病害泛滥是解决中国粮食安全问题的重要途径之一。在计算机技术支持下,人工智能识别病害的方法成为一大创新点并且迅速发展起来。这种技术可以解放劳动力,准确识别病害,为农业病虫害治理提供了有效且迅捷的帮助。
二、算法理论原理
2.1 卷积神经网络
YOLOv5的neck网络层目前使用的是PANet,只有自上而下的单向信息流。BiFPN加权双向(自顶向下+自底向上)特征金字塔网络,拥有更加不错的性能。其主要思想是添加了跨尺度连接,以便在不增加太多计算成本的前提下融合更多的特征。功能网络设计变化上,BiFPN P7部分设计了一条自顶向下的通路,传递的是高层特征的语义信息,又从P3开始设计自底向上的通路,传递的是低层特征的位置信息;加入BiFPN并添加小目标检测层后,虽然会带来少许计算量的增加,但是改进的网络在目标密集、特征简单的数据集上能够取得良好的效果。
注意力机制作用是让训练网络了解并关注到重要部分,实现重要特征突出表现的同时抑制不那么明显的特征。CA模块做到了避免维度缩减,并有效捕获了跨通道交互。在不降低维度的情况下进行逐通道全局平均池化,再通过考虑每个通道及其近邻来捕获本地跨通道交互。
2.2 YOLOv5算法
将YOLOv5算法进行改进,在主干网络中添加CA注意力机制,改善目标漏检问题,帮助模型更加精准地定位和识别;在颈部使用BiFPN替代原有的PANet,通过双向的特征融合提升多尺度语义特征的利用,加强对图像特征的提取融合,并添加小型目标检测层。
相关代码:
# 调整图像大小 image = cv2.resize(image, (224, 224)) # 将图像转换为灰度图 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 提取图像的局部二值模式特征 radius = 3 n_points = 8 * radius lbp_image = local_binary_pattern(gray_image, n_points, radius, method='uniform') # 将图像转换为浮点类型 lbp_image = lbp_image.astype(np.float32) # 归一化图像 lbp_image /= np.max(lbp_image) # 使用卷积操作增强图像特征 kernel = np.array([[-1, -1, -1], [-1, 9, -1], [-1, -1, -1]]) enhanced_image = cv2.filter2D(lbp_image, -1, kernel) # 将增强后的图像与原始图像融合 fusion_image = cv2.addWeighted(image, 0.7, enhanced_image, 0.3, 0)
三、检测的实现
3.1 数据集
实验数据来源于PlantVillage数据集中的玉米病害图,加以筛选以及图像增强,最终使用其中的3221张进行训练,以9∶1比例随机划分训练集和测试集,其中训练集2898张,测试集323张。借助Lableimg软件对转换的数据集进行标注,手动设置类别为灰斑病(CercosporaGrayspot)、锈病(Commonrust)、南方斑病(SouthernBlight)和健康(Healthy)四类。
3.2 实验环境搭建
实验环境搭建在个人主机上,硬件配置为:Intel i7-10700 CPU,NVIDIA RTX 2070s显卡,32 GB内存,1 TB固态硬盘,CUDA 11.3版本,深度学习框架平台为Pytorch 1.11.0版本。
3.3 实验及结果分析
为了更好地验证算法的有效性,进行了消融实验,一共验证5组网络。同样使用上述的数据集进行测试,其中epoch设为200,实验模型客观评价对比结果如表2所示。
为了进行更加充分的评估,对四种算法进行了对比,并选取平均精度均值(mAP@0.5)和检测速度(FPS)作为评估指标,实验对象为传统YOLOv5s、Faster R-CNN、YOLOv4以及改进的YOLOv5算法。
四种算法实验结果对比:相关代码如下:
# 定义玉米叶病虫害识别模型 class CornDiseaseClassifier(nn.Module): def __init__(self, num_classes): super(CornDiseaseClassifier, self).__init__() self.backbone = models.resnet50(pretrained=True) self.num_classes = num_classes # 添加自定义的分类头 self.classification_head = nn.Sequential( nn.Linear(2048, 512), nn.ReLU(), nn.Linear(512, self.num_classes) ) def forward(self, x): features = self.backbone(x) features = features.view(features.size(0), -1) classification_output = self.classification_head(features) return classification_output
实现效果图样例
基于YOLOv5提出了一种改进的目标检测算法:改进PANet为BiFPN网络,并且添加一层小目标监测层,能够增强不同网络层之间特征信息的传递,明显提升算法检测精度;添加CA注意力机制更有助于目标的定位,保证参数量的情况下提升精度;引入边长损失,采用Focal-EIOU Loss提升BBox的回归精度并解决样本不平衡问题。实验结果表明,本系统算法的检测速度、检测精确率均优于传统的YOLOv5s算法。
创作不易,欢迎点赞、关注、收藏。
毕设帮助,疑难解答,欢迎打扰!