当前位置: 首页 > news >正文

yolov11小麦病害检测数据集 基于YOLOv11+pyqt5的小麦病害检测系统 小麦叶锈病 小麦健康识别 小麦散黑穗病 黄锈病、秆锈病

yolov11模型训练小麦病害检测数据集 建立基于YOLOv11+pyqt5的小麦病害检测系统 推理识别检测叶锈病、健康、散黑穗病、黄锈病、秆锈病

文章目录

  • yolov11模型训练小麦病害检测数据集 建立基于YOLOv11+pyqt5的小麦病害检测系统 推理识别检测叶锈病、健康、散黑穗病、黄锈病、秆锈病
      • 使用 torchvision.transforms 进行数据增强
      • 在 YOLO 训练流程中应用数据增强
      • 将自定义变换应用于 YOLO 数据加载
    • ✅ 系统架构概览
  • 🧱 第一步:准备环境与数据
      • 1. 安装依赖库
      • 2. 数据集结构
  • 🚀 第二步:训练 YOLOv11 模型
  • 💻 第三步:开发 PyQt5 可视化界面
    • 1. 创建主窗口 UI
    • 2. 启动应用
  • ✅ 结语

以下文字及代码仅供参考学习。

基于YOLOv11+pyqt5的小麦病害检测系统

小麦病虫害数据集 yolo格式,数据集划分好训练集(1164张图片)验证集(218张图片)测试集(165张图片),分为5个类别:叶锈病、健康、散黑穗病、黄锈病、秆锈病。

实现对图像进行随机角度旋转的数据增强,可以使用torchvision.transforms或者imgaug等库。这里我将提供一个基于torchvision.transforms的简单示例,它适合在 PyTorch 数据加载管道中集成。

使用 torchvision.transforms 进行数据增强

首先,确保你的环境中已经安装了torchvision

pipinstalltorchvision

然后,创建一个自定义的变换组合,其中包括随机旋转操作。以下是如何将其集成到你的数据加载管道中的示例:

importtorchfromtorchvisionimporttransforms,datasetsfromtorch.utils.dataimportDataLoaderimportos# 定义图像变换,包括随机旋转data_transforms={'train':transforms.Compose([transforms.RandomRotation(degrees=(-30,30)),# 随机旋转-30到30度transforms.Resize((224,224)),# 调整大小transforms.ToTensor(),transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])# 标准化]),'val':transforms.Compose([transforms.Resize((224,224)),transforms.ToTensor(),transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])]),}# 假设你的数据集路径如下组织:data_dir='wheat_disease_dataset'image_datasets={x:datasets.ImageFolder(os.path.join(data_dir,x),data_transforms[x])forxin['train','val']}dataloaders={x:DataLoader(image_datasets[x],batch_size=32,shuffle=True,num_workers=4)forxin['train','val']}dataset_sizes={x:len(image_datasets[x])forxin['train','val']}class_names=image_datasets['train'].classes# 打印类别名称和数据集大小以确认设置正确print(class_names)print(dataset_sizes)

在 YOLO 训练流程中应用数据增强

YOLO 的训练过程中使用这些增强方法,YOLO 框架本身提供了非常灵活的数据增强选项。你可以在配置文件或者命令行参数中指定增强策略。对于 Ultralytics YOLO 版本,可以通过修改或添加数据增强参数来达到目的。

在训练时加入额外的数据增强选项:

yolo trainmodel=yolov11s.ptdata=data.yamlepochs=100imgsz=640batch=16augment=True

这里的augment=True开启了 YOLO 自带的一系列数据增强技术,包括但不限于随机裁剪、翻转、颜色抖动等,但不直接支持特定的角度旋转。如果需要更细致的控制(比如指定旋转角度),则需要通过自定义数据加载器的方式实现,如上面提供的torchvision.transforms示例所示。

将自定义变换应用于 YOLO 数据加载

为了让 YOLO 接受自定义的图像变换,你需要修改数据加载部分的代码,使其包含上述的自定义变换。这通常涉及到修改 YOLO 源码中的数据加载函数,这是一个高级操作,可能需要一定的 Python 和深度学习框架的知识。

不过,考虑到灵活性和易用性,推荐先尝试使用 YOLO 内置的数据增强功能,并评估其效果。如果内置选项无法满足需求,再考虑深入定制数据加载过程。

训练集:1164
验证集:218
测试集:165

也可自行替换模型,使用该界面做其他,实现检测目标自定义

Python + PyQt5可视化界面

可对图片/视频/摄像头进行识别

结构清晰、标注完整的小麦病虫害数据集,包含 5 类小麦病害(叶锈病、健康、散黑穗病、黄锈病、秆锈病),采用 YOLO 格式标注。目标是训练YOLOv11 模型并开发一个基于 PyQt5 的可视化检测系统,支持图片、视频和摄像头实时识别。


✅ 系统架构概览

组件技术
模型YOLOv11(假设为 Ultralytics YOLO 官方版本)
数据格式YOLO 标注格式(txt + jpg)
推理引擎PyTorch / ONNXRuntime
可视化界面PyQt5
支持输入类型图片、视频、摄像头

🧱 第一步:准备环境与数据

1. 安装依赖库

pipinstallultralytics pyqt5 opencv-python numpy onnxruntime

如果使用 GPU:

pipinstalltorch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118

2. 数据集结构

确保你的数据集目录结构如下:

wheat_disease_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yaml

data.yaml内容示例:

train:./images/trainval:./images/valtest:./images/testnc:5names:['healthy','leaf_rust','smut','yellow_rust','stem_rust']

🚀 第二步:训练 YOLOv11 模型

使用 Ultralytics 提供的yolo命令行工具进行训练:

yolo trainmodel=yolov11s.ptdata=data.yamlepochs=100imgsz=640batch=16
  • model=yolov11s.pt: 使用官方预训练模型(假设存在)
  • data=data.yaml: 配置文件路径
  • epochs=100: 训练轮数
  • imgsz=640: 输入图像尺寸
  • batch=16: 批量大小(根据显存调整)

训练完成后,会在runs/detect/train/weights/目录下生成best.ptlast.pt模型文件。


💻 第三步:开发 PyQt5 可视化界面

构建一个 GUI 应用程序,可以加载图片、视频或摄像头画面,并显示检测结果。

1. 创建主窗口 UI

importsysfromPyQt5.QtWidgetsimportQApplication,QWidget,QLabel,QPushButton,QFileDialog,QVBoxLayoutfromPyQt5.QtGuiimportQPixmap,QImagefromPyQt5.QtCoreimportQt,QTimerimportcv2importnumpyasnpfromultralyticsimportYOLOclassWheatDiseaseDetector(QWidget):def__init__(self):super().__init__()self.setWindowTitle("小麦病害检测系统")self.setGeometry(100,100,800,600)self.label=QLabel(self)self.label.setAlignment(Qt.AlignCenter)self.btn_img=QPushButton("选择图片",self)self.btn_video=QPushButton("选择视频",self)self.btn_camera=QPushButton("打开摄像头",self)layout=QVBoxLayout()layout.addWidget(self.label)layout.addWidget(self.btn_img)layout.addWidget(self.btn_video)layout.addWidget(self.btn_camera)self.setLayout(layout)# 加载模型self.model=YOLO('runs/detect/train/weights/best.pt')# 连接按钮事件self.btn_img.clicked.connect(self.load_image)self.btn_video.clicked.connect(self.load_video)self.btn_camera.clicked.connect(self.open_camera)self.cap=Noneself.timer=QTimer()self.timer.timeout.connect(self.update_frame)defload_image(self):path,_=QFileDialog.getOpenFileName(self,"选择图片","","Image Files (*.png *.jpg *.jpeg)")ifpath:results=self.model(path)result_img=results[0].plot()self.display_image(result_img)defload_video(self):path,_=QFileDialog.getOpenFileName(self,"选择视频","","Video Files (*.mp4 *.avi)")ifpath:self.cap=cv2.VideoCapture(path)self.timer.start(30)defopen_camera(self):self.cap=cv2.VideoCapture(0)self.timer.start(30)defupdate_frame(self):ret,frame=self.cap.read()ifret:results=self.model(frame)result_img=results[0].plot()self.display_image(result_img)defdisplay_image(self,img):rgb_image=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)h,w,ch=rgb_image.shape bytes_per_line=ch*w qt_image=QImage(rgb_image.data,w,h,bytes_per_line,QImage.Format_RGB888)pixmap=QPixmap.fromImage(qt_image).scaled(self.label.width(),self.label.height(),Qt.KeepAspectRatio)self.label.setPixmap(pixmap)

2. 启动应用

if__name__=='__main__':app=QApplication(sys.argv)window=WheatDiseaseDetector()window.show()sys.exit(app.exec_())

✅ 结语

基于 YOLOv11 + PyQt5 的小麦病害检测系统,可以用于农业科研、病害防治等实际场景中。如需添加更多功能(如导出检测结果、数据库记录、多语言支持等),也可以继续拓展。

http://www.jsqmd.com/news/1314522/

相关文章:

  • 构建可审计医学AI模型:从概念瓶颈到临床部署的完整指南
  • Reddit CEO怒怼谷歌AI搜索:6000万“卖身契“换不来一滴流量,内容创作者集体觉醒
  • 2026墙面发霉反复复发?多半是外墙/卫生间暗漏在作祟,长春业主必看 - 筑宅安
  • FGO-py:解放双手的Fate/Grand Order全自动助手终极指南
  • 每日安全情报报告 · 2026-08-02
  • Mac上如何通过Android手机实现USB网络共享?HoRNDIS驱动终极指南
  • 终极免费视频查重工具:Czkawka如何帮你找回100GB硬盘空间
  • 魔兽争霸3终极性能优化指南:告别卡顿,畅享300FPS流畅体验
  • 【单片机课设毕设项目】基于液位传感器输液监测的单片机病床呼叫平台搭建 主从机无线通信医护语音对讲呼叫系统工程设计(020301)
  • 保定保温管道厂家哪家好,A型刚性防水套管厂家推荐怎么选不踩坑?2026避坑指南+厂家推荐 - geo88
  • 单片机毕业设计-基于单片机与 LCD1602 的医护无线呼叫报警系统设计 基于 51/STM32 的主从机分离式病房无线呼叫终端研发(020201)
  • Open PS2 Loader嵌入式系统架构设计与多协议存储技术实现
  • 如何实现块状效果
  • ZenithVM (zVM) 系统设计规范
  • HMC5883L三轴指南针模块:从I2C通信到航向解算的Arduino实战指南
  • 扣子 (Coze) 工作流深度解析:分支逻辑、子工作流与 API 调用最佳实践
  • Steam成就管理器终极指南:如何完全掌控你的Steam游戏成就
  • 2026 江苏新房装修后空气治理怎么选?从检测、报价到售后一次讲清 - 康一科技
  • 5分钟免费解锁WeMod专业版:终极开源增强工具完整指南
  • 基于Jetson Orin NX与reBot Arm B601的视觉抓取系统实战指南
  • 2026年年月温江装修公司深度解析:业主选择装修公司的六大标准 - 甄选测评馆
  • 单片机毕设项目:可自定义报警阈值的单片机红外测距硬件设计 基于 STM32/51 单片机的红外测距传感检测终端实现(020101)
  • SpringBoot3+Vue3+MySQL相亲系统源码 前后端分离实战项目
  • 今天黄金回收价多少一克?2026 宁波黄金回收优质商家红榜,首选易奢福 - 肉松卷
  • 单片机毕业设计-基于单片机的带时钟播报病床优先级呼叫设备设计与实现 基于无线通信的医护语音对讲病房监测系统设计(020301)
  • 5分钟掌握Kronos金融预测模型:用AI读懂K线语言的完整指南
  • 生成式AI重塑知识生产:从信息处理到人机协同创新
  • NLopt非线性优化库:从算法原理到工程实战
  • 抖音批量下载工具:5分钟掌握高效视频收集技巧
  • AI重构循证医学:从知识图谱到临床决策支持的智能闭环