首页 > 分享 > 如何yolov8训练手段标注的灯诱杀虫灯害虫数据集

如何yolov8训练手段标注的灯诱杀虫灯害虫数据集

使用YOLOv8训练农业害虫数据集,并创建一个可视化的界面来展示模型的性能和结果,经过以下几个步骤。从准备数据集、训练模型到集成可视化界面的全过程。

文章目录 1. 数据集准备2. 安装依赖库3. 训练模型训练脚本 4. 模型优化5. 可视化界面GUI设计 6. 训练流程总结

以下文字及代码仅供参考
灯诱杀虫灯害虫数据集,常见农业害虫数据集。
在这里插入图片描述

数据集25378张jpeg图像,训练集12701、验证集5077 、测试集7600,手动标注,可用于害虫识别检测任务。
在这里插入图片描述

24类常见农业害虫:{ “0”: “棉铃虫”, “1”: “草地螟”, “2”: “东亚蟋蟀”, “3”: “三轮褐拟步甲”, “4”: “线虫沟”, “5”: “苔螟蛾”, “6”: “小壁虎”, “7”: “三叶草夜蛾”, “8”: “棉蚜虫”, “9”: “甘蓝夜蛾”, “10”: “大黑瓢虫”, “11”: “甜菜夜蛾”, “12”: “小菜蛾”, “13”: “平行隐翅虫”, “14”: “稻计划蝉”, “15”: “地虎”, “16”: “黄虎”, “17”: “八字虎”, “18”: “黑隐翅虫”, “19”: “稻纵卷叶螟”, “20”: “条纹稻螟”, “21”: “斜纹夜蛾”, “22”: “稻叶卷蛾”, “23”: “梅蛾” }
voc、yolo、coco格式,在这里插入图片描述
使用YOLOv8训练农业害虫数据集,并创建一个可视化的界面来展示模型的性能和结果,经过以下几个步骤。从准备数据集、训练模型到集成可视化界面的全过程。

1. 数据集准备

假设您的数据集已经按照YOLO格式标注好,结构如下:

pest_detection/ ├── images/ │ ├── train/ │ │ ├── img1.jpg │ │ └── ... │ ├── val/ │ │ ├── img1.jpg │ │ └── ... │ └── test/ │ ├── img1.jpg │ └── ... └── labels/ ├── train/ │ ├── img1.txt │ └── ... ├── val/ │ ├── img1.txt │ └── ... └── test/ ├── img1.txt └── ... data_pest.yaml 12345678910111213141516171819202122

data_pest.yaml 文件内容示例:

train: ./pest_detection/images/train/ val: ./pest_detection/images/val/ nc: 24 # 类别数量:棉铃虫, 草地螟, 东亚蟋蟀, ..., 梅蛾 names: ['棉铃虫', '草地螟', '东亚蟋蟀', '三轮褐拟步甲', '线虫沟', '苔螟蛾', '小壁虎', '三叶草夜蛾', '棉蚜虫', '甘蓝夜蛾', '大黑瓢虫', '甜菜夜蛾', '小菜蛾', '平行隐翅虫', '稻计划蝉', '地虎', '黄虎', '八字虎', '黑隐翅虫', '稻纵卷叶螟', '条纹稻螟', '斜纹夜蛾', '稻叶卷蛾', '梅蛾'] 12345 2. 安装依赖库

确保安装了必要的库:

pip install ultralytics opencv-python-headless PyQt5 tensorboard 1 3. 训练模型

使用YOLOv8进行训练。

训练脚本

from ultralytics import YOLO def main_train(): # 加载预训练的YOLOv8n模型或从头开始定义模型 model = YOLO('yolov8n.yaml') # 或者直接加载预训练权重,如 'yolov8n.pt' results = model.train( data='./data_pest.yaml', epochs=100, # 根据需要调整 imgsz=640, batch=16, project='./runs/detect', name='pest_detection', optimizer='SGD', device='0', # 使用GPU编号 save=True, cache=True, verbose=True, patience=10, # 提前停止的耐心值 lr0=0.01, # 初始学习率 lrf=0.1, # 最终学习率(相对于lr0的比例) ) if __name__ == '__main__': main_train() 12345678910111213141516171819202122232425 4. 模型优化

在训练过程中,可以通过以下几种方式进行模型优化:

学习率调整:通过设置lr0和lrf参数调整初始和最终的学习率。提前停止:设置patience参数,当验证损失不再降低时提前停止训练。数据增强:利用augment参数增加训练数据的多样性。超参数调优:调整批次大小、优化器类型等超参数以提高模型性能。 5. 可视化界面

使用PyQt5设计用户界面,以便于测试和展示模型效果。

GUI设计

import sys import cv2 from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QVBoxLayout, QWidget, QFileDialog, QTextEdit from PyQt5.QtGui import QPixmap from ultralytics import YOLO class PestDetectionApp(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("害虫检测系统") self.setGeometry(100, 100, 800, 600) self.initUI() def initUI(self): self.image_label = QLabel(self) self.image_label.setGeometry(50, 50, 600, 400) self.result_text = QTextEdit(self) self.result_text.setGeometry(700, 50, 300, 400) self.result_text.setReadOnly(True) self.open_button = QPushButton('打开图片', self) self.open_button.setGeometry(700, 500, 100, 30) self.open_button.clicked.connect(self.open_image) self.detect_button = QPushButton('检测', self) self.detect_button.setGeometry(810, 500, 100, 30) self.detect_button.clicked.connect(self.detect_objects) self.save_button = QPushButton('保存', self) self.save_button.setGeometry(920, 500, 100, 30) self.save_button.clicked.connect(self.save_results) def open_image(self): options = QFileDialog.Options() file_name, _ = QFileDialog.getOpenFileName(self, "选择图片", "", "Image Files (*.png *.jpg *.jpeg)", options=options) if file_name: self.image_path = file_name self.load_image(file_name) def load_image(self, file_name): img = cv2.imread(file_name) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) h, w, ch = img.shape bytes_per_line = ch * w q_img = QImage(img.data, w, h, bytes_per_line, QImage.Format_RGB888) pixmap = QPixmap.fromImage(q_img) self.image_label.setPixmap(pixmap) def detect_objects(self): model = YOLO('./runs/detect/pest_detection/weights/best.pt') results = model.predict(source=self.image_path) img = cv2.imread(self.image_path) for result in results: boxes = result.boxes.numpy() for box in boxes: r = box.xyxy x1, y1, x2, y2 = int(r[0]), int(r[1]), int(r[2]), int(r[3]) label_id = int(box.cls) label = result.names[label_id] confidence = box.conf if confidence > 0.5: # 设置置信度阈值 cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2) # 绘制矩形框 cv2.putText(img, f'{label} {confidence:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) self.result_text.append(f"{label}: {confidence:.2f}, ({x1}, {y1}), ({x2}, {y2})") img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) h, w, ch = img.shape bytes_per_line = ch * w q_img = QImage(img.data, w, h, bytes_per_line, QImage.Format_RGB888) pixmap = QPixmap.fromImage(q_img) self.image_label.setPixmap(pixmap) def save_results(self): options = QFileDialog.Options() file_name, _ = QFileDialog.getSaveFileName(self, "保存结果", "", "Text Files (*.txt)", options=options) if file_name: with open(file_name, 'w') as f: f.write(self.result_text.toPlainText()) if __name__ == '__main__': app = QApplication(sys.argv) ex = PestDetectionApp() ex.show() sys.exit(app.exec_()) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 6. 训练流程总结 数据集准备:确认数据集已按要求组织好,并创建data_pest.yaml。安装依赖:通过提供的命令安装所需的Python库。训练模型:运行训练脚本开始训练过程,并根据实际情况进行模型优化。GUI设计:使用上述代码设计用户界面,用于展示模型的预测结果。集成模型:将训练好的模型集成到GUI中,实现图像上传、目标检测和结果保存功能。

构建一个完整的基于YOLOv8的害虫检测系统,包括模型训练、优化以及可视化界面的开发

相关知识

yolov8训练使用柑橘叶片病虫害数据集
基于深度学习的农作物害虫检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
使用YOLOv8来训练一个包含5588张图像柑橘叶片病害检测数据集。数据集包含5个类别,已标注为YOLO格式,可以直接用于模型训练 柑橘数据集
甘孜太阳能杀虫灯,太阳能自动杀虫灯,物理灭虫
风吸式杀虫灯:有效地降低害虫密度
风吸式杀虫灯:突破常规杀虫能力的创新设备
基于YOLOv8深度学习的水稻害虫检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
杀虫灯防治蔬菜害虫种类
基于YOLOv8深度学习的智能玉米害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
如何使用yolov8训练使用——马铃薯病害检测数据集,共8000张,voc或yolo格式标注 土豆数据集病害检测

网址: 如何yolov8训练手段标注的灯诱杀虫灯害虫数据集 https://m.huajiangbk.com/newsview1755105.html

所属分类:花卉
上一篇: 玉米虫害高清图谱
下一篇: 玉米新害虫——双斑萤叶甲识别与防