深度学习框架基于YOLOv8➕pyqt5的水稻害虫检测系统,YOLOV8模型如何训练水稻害虫检测数据集
基于YOLOv8➕pyqt5的水稻害虫检测系统内含5229张水稻害虫数据集包括[‘褐飞虱’, ‘绿叶蝉’, ‘稻纵卷叶螟’, ‘稻蝽’, ‘螟虫’, ‘稻蓟马’]6类也可自行替换模型使用该界面做其他检测 基于 YOLOv8 PyQt5 的水稻害虫检测系统 —— 简易构建指南一、项目核心信息总览表属性维度详细描述项目名称水稻害虫智能检测系统YOLOv8 PyQt5核心技术YOLOv8 (Ultralytics) PyQt5 图形界面数据集规模5,229张高清标注图像检测类别6类:褐飞虱,绿叶蝉,稻纵卷叶螟,稻蝽,螟虫,稻蓟马开发语言Python 3.9关键依赖ultralytics,PyQt5,opencv-python,torch,numpy模型性能实时检测0.1s/图支持置信度/IOU阈值调节结果可视化与导出界面功能图片/视频/摄像头输入、批量处理、参数设置、结果表格化、模型切换、保存退出截图说明左图成功检测“绿叶蝉”置信度86.14%坐标[111,124,314,316]右图程序运行中显示卡通害虫形象占位符可替换为实际检测结果二、6类水稻害虫类别定义表类别ID中文名称英文名标签危害特征简述0褐飞虱brown_planthopper吸食稻株汁液导致“冒穿”倒伏传播病毒病1绿叶蝉green_leafhopper传播水稻黄矮病、条纹叶枯病刺吸叶片致白化2稻纵卷叶螟rice_leaf_folder幼虫吐丝缀叶成苞啃食叶肉影响光合作用3稻蝽rice_bug成虫若虫刺吸穗部汁液造成空秕粒、米质下降4螟虫stem_borer钻蛀茎秆形成“枯心苗”或“白穗”减产严重5稻蓟马rice_thrips锉吸嫩叶组织致叶片卷曲、发黄幼苗期危害大✅训练建议数据增强重点旋转、亮度调整、模糊模拟田间光照变化。小目标优化对“稻蓟马”、“褐飞虱”等小型害虫增加采样权重或使用高分辨率输入。三、系统功能矩阵表功能模块子功能实现方式输入源支持单图检测QFileDialog.getOpenFileName()→cv2.imread()→model.predict()批量检测遍历文件夹内所有图片循环调用检测函数视频检测cv2.VideoCapture()逐帧读取并推理摄像头检测cv2.VideoCapture(0)实时流处理模型与参数模型切换QComboBox选择不同.pt文件动态加载YOLO(model_path)置信度调节QDoubleSpinBox设置conf参数过滤低分预测IOU阈值调节QDoubleSpinBox设置iou控制NMS合并程度结果展示实时标注results[0].plot()自动绘制框标签置信度统计面板显示用时、目标数、当前类型、最高置信度、坐标范围结果表格QTableWidget列出每张图片的序号、路径、类别、置信度、坐标输出与保存保存结果图cv2.imwrite()保存标注后图像到指定目录导出数据可选导出CSV/JSON格式检测结果四、简易核心代码框架 (MainProgram.py)以下是一个精简但完整可用的主程序骨架可直接运行并扩展# MainProgram.pyimportsysfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QVBoxLayout,QWidget,QFileDialog,QTableWidget,QTableWidgetItem,QCheckBox,QComboBox,QDoubleSpinBox,QMessageBoxfromPyQt5.QtGuiimportQImage,QPixmapfromultralyticsimportYOLOimportcv2importnumpyasnpclassRicePestDetector(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle( 基于深度学习的水稻害虫检测系统)self.setGeometry(100,100,1200,800)# 初始化UIcentral_widgetQWidget()self.setCentralWidget(central_widget)layoutQVBoxLayout(central_widget)# 图像显示区域self.image_labelQLabel()self.image_label.setFixedSize(800,600)self.image_label.setStyleSheet(border: 1px solid gray;)layout.addWidget(self.image_label)# 控制面板control_frameQWidget()control_layoutQVBoxLayout(control_frame)# 模型选择self.model_comboQComboBox()self.model_combo.addItems([best.pt,yolov8s.pt,yolov8m.pt])self.model_combo.currentTextChanged.connect(self.change_model)control_layout.addWidget(QLabel(选择模型:))control_layout.addWidget(self.model_combo)# 参数设置self.conf_spinQDoubleSpinBox()self.conf_spin.setRange(0.01,1.0)self.conf_spin.setValue(0.25)self.conf_spin.setPrefix(置信度阈值: )control_layout.addWidget(self.conf_spin)self.iou_spinQDoubleSpinBox()self.iou_spin.setRange(0.01,1.0)self.iou_spin.setValue(0.45)self.iou_spin.setPrefix(IOU阈值: )control_layout.addWidget(self.iou_spin)# 操作按钮btn_layoutQVBoxLayout()self.btn_load_imgQPushButton( 打开图片)self.btn_load_img.clicked.connect(self.load_image)btn_layout.addWidget(self.btn_load_img)self.btn_saveQPushButton( 保存结果)self.btn_save.clicked.connect(self.save_result)btn_layout.addWidget(self.btn_save)self.btn_exitQPushButton(❌ 退出)self.btn_exit.clicked.connect(self.close)btn_layout.addWidget(self.btn_exit)control_layout.addLayout(btn_layout)layout.addWidget(control_frame)# 结果表格self.result_tableQTableWidget()self.result_table.setColumnCount(5)self.result_table.setHorizontalHeaderLabels([序号,文件路径,类别,置信度,坐标位置])layout.addWidget(self.result_table)# 加载默认模型self.modelYOLO(models/best.pt)# 替换为你的模型路径self.class_names[褐飞虱,绿叶蝉,稻纵卷叶螟,稻蝽,螟虫,稻蓟马]self.current_image_pathNoneself.annotated_imgNonedefload_image(self):file_path,_QFileDialog.getOpenFileName(self,选择图片,,Images (*.png *.jpg *.bmp))ifnotfile_path:returnself.current_image_pathfile_path imgcv2.imread(file_path)ifimgisNone:QMessageBox.warning(self,错误,无法读取图片)return# 执行检测resultsself.model(img,confself.conf_spin.value(),iouself.iou_spin.value())self.annotated_imgresults[0].plot()# 带标注的图像# 显示图像h,w,chself.annotated_img.shape bytes_per_linech*w qt_imgQImage(self.annotated_img.data,w,h,bytes_per_line,QImage.Format_BGR888)self.image_label.setPixmap(QPixmap.fromImage(qt_img).scaled(800,600))# 填充表格boxesresults[0].boxes self.result_table.setRowCount(len(boxes))fori,boxinenumerate(boxes):cls_idint(box.cls[0])conffloat(box.conf[0])xyxybox.xyxy[0].tolist()self.result_table.setItem(i,0,QTableWidgetItem(str(i1)))self.result_table.setItem(i,1,QTableWidgetItem(file_path))self.result_table.setItem(i,2,QTableWidgetItem(self.class_names[cls_id]))self.result_table.setItem(i,3,QTableWidgetItem(f{conf:.3f}))self.result_table.setItem(i,4,QTableWidgetItem(f[{xyxy[0]:.0f},{xyxy[1]:.0f},{xyxy[2]:.0f},{xyxy[3]:.0f}]))defchange_model(self,model_name):try:self.modelYOLO(fmodels/{model_name})QMessageBox.information(self,提示,f已切换至模型:{model_name})exceptExceptionase:QMessageBox.critical(self,错误,f加载模型失败:{str(e)})defsave_result(self):ifself.annotated_imgisNone:QMessageBox.warning(self,警告,请先检测一张图片)returnsave_path,_QFileDialog.getSaveFileName(self,保存结果图,,Images (*.png *.jpg))ifsave_path:cv2.imwrite(save_path,self.annotated_img)QMessageBox.information(self,成功,结果图已保存)if__name____main__:appQApplication(sys.argv)windowRicePestDetector()window.show()sys.exit(app.exec_())五、快速运行步骤准备环境conda create-nrice_pestpython3.9conda activate rice_pest pipinstallultralytics opencv-python PyQt5 torch torchvision放置文件将上述代码保存为MainProgram.py创建models/文件夹放入训练好的best.pt或其他.pt模型可选准备测试图片放在任意目录运行程序python MainProgram.py使用流程点击“打开图片” → 选择水稻害虫图像 → 自动检测并显示结果调整置信度/IOU阈值 → 重新检测观察效果变化点击“保存结果” → 保存标注后的图片切换模型 → 尝试不同精度/速度的模型对比六、关键词标签云 (Keywords Tags)# 核心技术 YOLOv8, PyQt5, 水稻害虫, 目标检测, 深度学习, 计算机视觉, Ultralytics, OpenCV # 应用场景 智慧农业, 病虫害预警, 无人机巡检, 农场自动化, 植保决策支持, 教育演示 # 数据集特征 5229张, 6类害虫, 高清标注, YOLO格式, 田间实拍, 多尺度目标 # 系统功能 图形界面, 实时检测, 参数调节, 结果导出, 模型切换, 批量处理, 摄像头支持 # 学术价值 毕业设计, 课程项目, 科研原型, 农业AI, 轻量级部署, 可解释性分析
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2451660.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!