目录
前言
设计思路
一、课题背景与意义
二、算法理论原理
三、脐橙病虫害检测的实现
3.1 数据集
3.2 实验环境搭建
3.2 实验及结果分析
实现效果图样例
最后
大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
对毕设有任何疑问都可以问学长哦!
选题指导:
最新最全计算机专业毕设选题精选推荐汇总
赣南脐橙是赣南地区名优水果,享誉全国,种植面积和产量与日俱增。然而,与之伴随的虫害问题也随之而来,寻找一个简单、有效的害虫检测技术实现脐橙虫害检测以确保虫害早发现、早防治,对提高脐橙虫害防治效率,降低防治成本具有重大意义。
在YOLO网络模型提出以前,目标检测的研究方向通常是以Faster-RCNN为代表的两阶段算法。YOLO系列网络模型是单阶段算法最具代表性的算法,YOLOv5网络模型是YOLO系列模型第五个版本。YOLOv5模型分为YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x四个类型,选用参数量最小的YOLOv5s模型。
本研究提出的网络结构是一种单阶段深度卷积神经网络YOLOv5,该网络结构由主干网络(Backbone)、颈部(Neck)和头部(Head)三个组成部分组成。YOLOv5网络在FPN中增加了PAN结构,引入了自底向上的信息流,完成了上下层信息流的结合。最后,在Head输出端应用CIOU_Loss损失函数,用于评估预测框与真实框的重合度,为边界框提供优化移动方向。
脐橙虫害图片通过手机在各个果园使用高像素手机拍摄和通过网络爬虫技术收集整理得到。依据领域专家的专业知识,将收集的脐橙虫害图片分成9种虫害图像,其中包含星天牛、茶翅蝽、粉蚧、地中海实蝇、绿椿象、凤蝶、蜡蝉、木虱和红蜘蛛。为保证虫害类别数量分布均衡,经筛选处理后得到每类虫害包含200张原始图片的脐橙虫害数据集,并使用labelimg标注工具标注虫害目标框。
使用的数据集包含9类脐橙常见虫害,首先将所有图片以jpg格式保存,然后使用OpenCV将图片尺寸统一调整为640*640大小。
训练不足,很容易出现过拟合。为保证模型训练效果,采用增加噪声、旋转、镜像翻转、亮度变换、Cutout等数据增强技术将数据集扩增9倍。
根据自建数据集进行训练,选取了3个有影响力的经典卷积神经网络进行对比实验,它们分别是SSD、YOLOv3、YOLOv5s。模型采用SGD优化函数开展训练。将每类200张原始图片按0.8:0.2的比例划分为训练集与验证集,训练集与验证集图片严格区分独立,保证验证集测试精度真实可靠、鲁棒性强。其中训练集和验证集分别扩增9倍。经处理后,训练集为14,400张图片,验证集为3,600张图片。
在目标检测中,均值平均精度(mAP)是评价模型性能和可靠性的重要指标。选用均值平均精度评价指标值评估模型的性能。正类正样本(TP)、正类负样本(TN)、负类正样本(FP)和负类负样本(FN)用于计算平均精度,其中TP是正样本判定为正样本,FP是负样本判定为正样本,FN是正样本判定为负样本,TN是负样本判定为负样本。
均值平均精度(mAP)是对所有类别的AP值相加再取均值,其中k是类别的总数。在本次实验中,YOLOv5s所有类别的mAP值达到81.46%,对比实验结果如下所示。
部分代码如下:
def preprocess_image(image):
image = image.convert('RGB')
image = torch.from_numpy(np.array(image)).float()
image /= 255.0
image = image.permute(2, 0, 1)
return image.unsqueeze(0).to(device)
# 进行交脐橙病虫害检测
def detect_citrus_pests(image):
image = preprocess_image(image)
# 使用YOLOv5进行目标检测
results = model(image)
# 获取检测结果
detections = results.pandas().xyxy[0]
# 提取病虫害类别和置信度
pests = detections[detections['class'].isin(labels)]
pest_labels = pests['class'].tolist()
pest_confidences = pests['confidence'].tolist()
# 可根据需要对检测结果进行进一步处理或输出
return pest_labels, pest_confidences
# 加载并预处理待检测的交脐橙图像
image_path = 'citrus_image.jpg'
image = Image.open(image_path)
# 进行交脐橙病虫害检测
pest_labels, pest_confidences = detect_citrus_pests(image)
# 输出检测结果
for label, confidence in zip(pest_labels, pest_confidences):
print(f"病虫害类型: {label}, 置信度: {confidence:.2f}")
创作不易,欢迎点赞、关注、收藏。
毕设帮助,疑难解答,欢迎打扰!