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

📅 2026/8/2 16:25:29
yolov11小麦病害检测数据集 基于YOLOv11+pyqt5的小麦病害检测系统 小麦叶锈病 小麦健康识别 小麦散黑穗病 黄锈病、秆锈病
yolov11模型训练小麦病害检测数据集 建立基于YOLOv11pyqt5的小麦病害检测系统 推理识别检测叶锈病、健康、散黑穗病、黄锈病、秆锈病文章目录yolov11模型训练小麦病害检测数据集 建立基于YOLOv11pyqt5的小麦病害检测系统 推理识别检测叶锈病、健康、散黑穗病、黄锈病、秆锈病使用 torchvision.transforms 进行数据增强在 YOLO 训练流程中应用数据增强将自定义变换应用于 YOLO 数据加载✅ 系统架构概览 第一步准备环境与数据1. 安装依赖库2. 数据集结构 第二步训练 YOLOv11 模型 第三步开发 PyQt5 可视化界面1. 创建主窗口 UI2. 启动应用✅ 结语以下文字及代码仅供参考学习。基于YOLOv11pyqt5的小麦病害检测系统小麦病虫害数据集 yolo格式数据集划分好训练集1164张图片验证集218张图片测试集165张图片分为5个类别叶锈病、健康、散黑穗病、黄锈病、秆锈病。实现对图像进行随机角度旋转的数据增强可以使用torchvision.transforms或者imgaug等库。这里我将提供一个基于torchvision.transforms的简单示例它适合在 PyTorch 数据加载管道中集成。使用 torchvision.transforms 进行数据增强首先确保你的环境中已经安装了torchvisionpipinstalltorchvision然后创建一个自定义的变换组合其中包括随机旋转操作。以下是如何将其集成到你的数据加载管道中的示例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_dirwheat_disease_datasetimage_datasets{x:datasets.ImageFolder(os.path.join(data_dir,x),data_transforms[x])forxin[train,val]}dataloaders{x:DataLoader(image_datasets[x],batch_size32,shuffleTrue,num_workers4)forxin[train,val]}dataset_sizes{x:len(image_datasets[x])forxin[train,val]}class_namesimage_datasets[train].classes# 打印类别名称和数据集大小以确认设置正确print(class_names)print(dataset_sizes)在 YOLO 训练流程中应用数据增强YOLO 的训练过程中使用这些增强方法YOLO 框架本身提供了非常灵活的数据增强选项。你可以在配置文件或者命令行参数中指定增强策略。对于 Ultralytics YOLO 版本可以通过修改或添加数据增强参数来达到目的。在训练时加入额外的数据增强选项yolo trainmodelyolov11s.ptdatadata.yamlepochs100imgsz640batch16augmentTrue这里的augmentTrue开启了 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如果使用 GPUpipinstalltorch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu1182. 数据集结构确保你的数据集目录结构如下wheat_disease_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yamldata.yaml内容示例train:./images/trainval:./images/valtest:./images/testnc:5names:[healthy,leaf_rust,smut,yellow_rust,stem_rust] 第二步训练 YOLOv11 模型使用 Ultralytics 提供的yolo命令行工具进行训练yolo trainmodelyolov11s.ptdatadata.yamlepochs100imgsz640batch16modelyolov11s.pt: 使用官方预训练模型假设存在datadata.yaml: 配置文件路径epochs100: 训练轮数imgsz640: 输入图像尺寸batch16: 批量大小根据显存调整训练完成后会在runs/detect/train/weights/目录下生成best.pt和last.pt模型文件。 第三步开发 PyQt5 可视化界面构建一个 GUI 应用程序可以加载图片、视频或摄像头画面并显示检测结果。1. 创建主窗口 UIimportsysfromPyQt5.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.labelQLabel(self)self.label.setAlignment(Qt.AlignCenter)self.btn_imgQPushButton(选择图片,self)self.btn_videoQPushButton(选择视频,self)self.btn_cameraQPushButton(打开摄像头,self)layoutQVBoxLayout()layout.addWidget(self.label)layout.addWidget(self.btn_img)layout.addWidget(self.btn_video)layout.addWidget(self.btn_camera)self.setLayout(layout)# 加载模型self.modelYOLO(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.capNoneself.timerQTimer()self.timer.timeout.connect(self.update_frame)defload_image(self):path,_QFileDialog.getOpenFileName(self,选择图片,,Image Files (*.png *.jpg *.jpeg))ifpath:resultsself.model(path)result_imgresults[0].plot()self.display_image(result_img)defload_video(self):path,_QFileDialog.getOpenFileName(self,选择视频,,Video Files (*.mp4 *.avi))ifpath:self.capcv2.VideoCapture(path)self.timer.start(30)defopen_camera(self):self.capcv2.VideoCapture(0)self.timer.start(30)defupdate_frame(self):ret,frameself.cap.read()ifret:resultsself.model(frame)result_imgresults[0].plot()self.display_image(result_img)defdisplay_image(self,img):rgb_imagecv2.cvtColor(img,cv2.COLOR_BGR2RGB)h,w,chrgb_image.shape bytes_per_linech*w qt_imageQImage(rgb_image.data,w,h,bytes_per_line,QImage.Format_RGB888)pixmapQPixmap.fromImage(qt_image).scaled(self.label.width(),self.label.height(),Qt.KeepAspectRatio)self.label.setPixmap(pixmap)2. 启动应用if__name____main__:appQApplication(sys.argv)windowWheatDiseaseDetector()window.show()sys.exit(app.exec_())–✅ 结语基于 YOLOv11 PyQt5 的小麦病害检测系统可以用于农业科研、病害防治等实际场景中。如需添加更多功能如导出检测结果、数据库记录、多语言支持等也可以继续拓展。