深度学习框架目标检测算法中如何使用YOLOv8训练苹果叶片病害检测数据集,识别苹果叶片出现的链格孢病’, ‘健康叶片’, ‘早期褐斑病’, ‘晚期褐斑病’, '白粉病’等
文章目录
- 1. 安装依赖
- 2. 准备数据集
- 3. 配置YOLOv8
- 3.1 加载预训练模型或自定义模型
- 4. 训练模型
- 5. 评估模型
- 6. 构建GUI应用程序(可选)
- 运行代码
以下文字及代码仅供参考。
病虫害检测 苹果叶片病害检测数据集 2100张 苹果叶片图片 带标注voc yolo
1
| 分类名 | 图片张数 | 标注个数 |
|---|---|---|
| leaf_ unhealthy | 1343 | 1445 |
| disease-rust | 749 | 2979 |
| disease-apple scab | 354 | 1064 |
| disease-Marssonina blotch | 429 | 2229 |
| leaf_ healthy | 710 | 1307 |
| unknown | 348 | 376 |
| disease-black rot | 141 | 281 |
| disease- Alternaria leaf spot | 111 | 238 |
| 总数 | 2115 | 9919 |
| 总类(nc) | 8 类 |
1
使用YOLOv8训练苹果叶片病害检测数据集,我们将经历以下步骤:安装依赖、准备数据集、配置YOLOv8、模型训练和评估、GUI应用程序来展示检测结果。
1. 安装依赖
首先确保你的环境中已经安装了必要的库。这里我们主要需要PyTorch和Ultralytics的YOLOv8实现。
pipinstalltorch torchvision torchaudio# 根据需要选择适合的版本pipinstallultralytics opencv-python2. 准备数据集
假设你已经下载并解压了苹果叶片病害检测数据集,并且它包含了YOLO格式的标注文件。确保数据集结构如下:
apple_leaf_disease/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── train/ ├── val/ └── test/创建一个data.yaml文件来定义数据集路径和类别信息。根据提供的信息,这个数据集似乎没有明确提到具体的类别名称,自行确定或从数据集中提取类别名称。假设这里有3种病害类别:
备注:8类如此一样。
train:./apple_leaf_disease/images/train/val:./apple_leaf_disease/images/val/nc:3# 类别数量names:['disease1','disease2','disease3']# 替换为实际的病害名称3. 配置YOLOv8
3.1 加载预训练模型或自定义模型
你可以选择加载YOLOv8的预训练模型开始训练,或者根据自己的需求定义模型架构。
fromultralyticsimportYOLO# 加载预训练的YOLOv8n模型model=YOLO('yolov8n.yaml')# 或者 'yolov8n.pt' 如果你想从预训练权重开始4. 训练模型
接下来,使用定义好的data.yaml文件开始训练。
# 开始训练results=model.train(data='path/to/data.yaml',epochs=100,imgsz=640,batch=16)epochs: 设置训练轮数。imgsz: 输入图像的尺寸。batch: 每批次图像的数量。
5. 评估模型
训练完成后,可以在验证集上评估模型性能。
# 在验证集上评估模型性能metrics=model.val()print(f"Validation mAP:{metrics.box.map}")6. 构建GUI应用程序(可选)![]()
提供一个简单的PyQt5 GUI示例,用于展示YOLOv8的检测结果。
首先,确保安装了PyQt5。
pipinstallPyQt5然后,编写以下代码来构建GUI。
importsysfromPyQt5.QtWidgetsimportQApplication,QLabel,QVBoxLayout,QWidget,QPushButton,QFileDialogfromPyQt5.QtGuiimportQPixmap,QImageimportcv2importnumpyasnpfromultralyticsimportYOLOclassAppDemo(QWidget):def__init__(self):super().__init__()self.setWindowTitle('YOLOv8 Apple Leaf Disease Detection')self.setGeometry(100,100,800,600)self.image_label=QLabel(self)self.button=QPushButton("Load Image",self)self.button.clicked.connect(self.load_image)vbox=QVBoxLayout()vbox.addWidget(self.image_label)vbox.addWidget(self.button)self.setLayout(vbox)self.model=YOLO('path/to/your/best.pt')# 使用训练好的模型defload_image(self):fname,_=QFileDialog.getOpenFileName(self,'Open file','c:\\',"Image files (*.jpg *.png)")iffname:self.show_image(fname)defshow_image(self,image_path):results=self.model.predict(source=image_path)img=cv2.imread(image_path)forrinresults:forboxinr.boxes.xyxy:x1,y1,x2,y2=map(int,box)cv2.rectangle(img,(x1,y1),(x2,y2),(0,255,0),2)height,width,channel=img.shape bytes_per_line=3*width q_img=QImage(img.data,width,height,bytes_per_line,QImage.Format_RGB888).rgbSwapped()pixmap=QPixmap.fromImage(q_img)self.image_label.setPixmap(pixmap)if__name__=='__main__':app=QApplication(sys.argv)demo=AppDemo()demo.show()sys.exit(app.exec_())运行代码
确保所有路径都是正确的,并根据需要调整参数。以下是完整的运行步骤:
安装依赖:
pipinstalltorch torchvision torchaudio pipinstallultralytics opencv-python pipinstallPyQt5准备数据集:
- 确保数据集结构正确。
- 创建
data.yaml文件。
配置YOLOv8:
fromultralyticsimportYOLO model=YOLO('yolov8n.yaml')# 或者 'yolov8n.pt'训练模型:
results=model.train(data='path/to/data.yaml',epochs=100,imgsz=640,batch=16)评估模型:
metrics=model.val()print(f"Validation mAP:{metrics.box.map}")构建GUI应用程序:
# 上述提供的GUI代码
具体的数据集类别名称需要根据实际情况替换到data.yaml文件中。