植物叶片病害检测数据集 5100张 29类 带标注 voc yolo

 植物叶片病害检测数据集 5100张 29类 带标注 voc yolo

植物叶片病害检测数据集

名称

植物叶片病害检测数据集 (Plant Leaf Disease Detection Dataset)

规模

  • 图像数量:5154张图像。
  • 类别:29种病害类型。
  • 分类名: (图片张数,标注个数)
    Tomato leaf bacterial spot: (157. 424)
    Potato leaf early blight: (164. 477)
    Bell_ pepper leaf spot: (89. 362)
    Strawberry leaf: (132. 674)
    grape leaf black rot: (261. 467)
    grape leaf: (83, 277)
    Tomato leaf: (120, 600)
    Bell pepper leaf: (72. 409)
    Potato leaf: (4, 18)
    Peach leaf: (156, 899)
    Corn leaf blight: (284, 543)
    Apple rust leaf: (355, 721)
    Cherry leaf: (73. 298)
    Tomato Early blight leaf: (360, 862)
    Apple Scab Leaf: (371, 627)
    Tomato leaf yellow virus: (100, 1095)
    Corn Gray leaf spot :
    (259, 304)
    Corn rust leaf: (477. 516)
    Soyabean leaf: (80, 314)
    Raspberry leaf: (173, 811)
    Blueberry leaf: (153. 1106)
    Squash Powdery mi Idew leaf: (180, 338)
    Tomato mold leaf: (116, 386)
    Tomato leaf late blight: (462. 925)
    Tomato Septoria leaf spot :
    196, 549)
    Tomato leaf mosaic virus: (82, 382)
    Potato leaf late blight: (137. 324)
    Apple leaf: (117. 320)
    Tomato two spotted spider mites leaf: (9, 9)
    总数:
    (5154, 15037)
    总类(nc)
    29类
     
  • 标注个数:15037个标注。
数据划分

  • 训练集 (Train):通常占总数据的80%左右,约4123张图像。
  • 验证集 (Validation):通常占总数据的20%左右,约1031张图像。
类别和数量
  • Tomato leaf bacterial spot:157张图像,424个标注。
  • Potato leaf early blight:89张图像,362个标注。
  • Bell pepper leaf spot:164张图像,674个标注。
  • Grape leaf black rot:261张图像,467个标注。
  • Strawberry leaf:132张图像,649个标注。
  • ...:其他各类病害对应的图像数量和标注数量。
数据特点
  • 高质量与高分辨率:所有图像均为高分辨率,适合进行详细的目标检测任务。
  • 多样性和复杂性:图像覆盖了多种植物叶片病害类型,增加了模型的泛化能力。
  • 详尽标注:每个图像都附有准确的边界框标注信息,确保了训练数据的质量。
应用领域
  • 农业监测:帮助农民及时发现并治疗作物病害,减少农作物损失。
  • 智能农业:结合无人机或机器人技术实现自动化病害检测和防治。
  • 科研应用:为植物病理学和农业科学研究提供数据支持。
1. 安装依赖库

首先,确保安装了必要的依赖库。可以在项目目录中的requirements.txt文件中列出这些依赖库,然后运行以下命令进行安装:

pip install -r requirements.txt

requirements.txt 文件内容示例:

torch==1.10.0
torchvision==0.11.1
pandas==1.3.4
cv2
albumentations==1.1.0
2. 创建数据集

定义一个自定义的数据集类,并创建数据加载器。

import os
import pandas as pd
import cv2
from torch.utils.data import Dataset, DataLoader
from torchvision.transforms import Compose, ToTensor, Normalize, Resize
from albumentations import HorizontalFlip, RandomBrightnessContrast, ShiftScaleRotate, BboxFromMasks, BBoxFormatPASCAL
from albumentations.pytorch import ToTensorV2# 自定义数据集类
class PlantDiseaseDataset(Dataset):def __init__(self, data_root, annotations_file, transforms=None):self.data_root = data_rootself.annotations = pd.read_csv(annotations_file)self.transforms = transformsdef __len__(self):return len(self.annotations)def __getitem__(1, idx):img_path = os.path.join(self.data_root, self.annotations.iloc[idx, 0])image = cv2.imread(img_path)bboxes = self.annotations.iloc[idx, 1:].values.reshape(-1, 4)  # bounding box coordinateslabels = self.annotations.columns[1:]if self.transforms:augmented = self.transforms(image=image, bboxes=bboxes)image = augmented['image']bboxes = augmented['bboxes']return image, bboxes, labels# 图像预处理
def get_transforms():"""构建预处理函数"""_transform = [Resize(height=416, width=416, interpolation=cv2.INTER_LINEAR),HorizontalFlip(p=0.5),RandomBrightnessContrast(p=0.2),ShiftScaleRotate(p=0.5, shift_limit=0.0625, scale_limit=0.2, rotate_limit=15),Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),ToTensorV2(),BboxFromMasks(format=BBoxFormatPASCAL)]return Compose(_transform)# 创建数据加载器
train_dataset = PlantDiseaseDataset(data_root='path_to_your_data_directory',annotations_file='path_to_your_annotations.csv',transforms=get_transforms()
)
val_dataset = PlantDiseaseDataset(data_root='path_to_your_data_directory',annotations_file='path_to_your_annotations.csv',transforms=get_transforms()
)train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True, num_workers=4)
val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False, num_workers=4)
3. 训练YOLOv5模型

使用YOLOv5进行训练。

!git clone https://github.com/ultralytics/yolov5  # 下载YOLOv5代码仓库
cd yolov5# 使用YOLOv5训练模型
python train.py --weights yolov5s.pt --data path_to_your_data.yaml --name plant_disease_detection --img 416 --batch 16 --epochs 100 --device 0
  • 数据配置文件:创建一个名为data.yaml的数据配置文件,其中包含训练和验证数据集的信息。
train: path_to_your_train_images
val: path_to_your_val_images
nc: 29  # 类别数量
names: [Tomato leaf bacterial spot, Potato leaf early blight, Bell pepper leaf spot, Grape leaf black rot, Strawberry leaf, ...]
4. 调整模型
  • 超参数调整:根据实际情况调整模型的超参数,例如学习率、批大小等。
  • 数据增强:增加数据增强策略,如旋转、缩放

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1552747.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【CSS3】css开篇基础(1)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

通信工程学习:什么是DQDB分布式队列双总线

DQDB:分布式队列双总线 DQDB(Distributed Queue Dual Bus),即分布式队列双总线,是美国电气电子工程师学会(IEEE)802.6标准中定义的一种城域网(MAN)数据链路层通信协议。该协议主要用于城域网的数据、语音和视频传输&am…

前端工程化17-邂逅原生的ajax、跨域、JSONP

5、邂逅原生的ajax 5.1、什么是ajax AJAX 全称为Asynchronous Javascript And XML,就是异步的 JS 和 XML。通过AJAX可以在浏览器中向服务器发送异步请求,最大的优势:页面无刷新获取数据。AJAX 不是新的编程语言,而是一种将现有的…

DC00025【含论文】基于协同过滤推荐算法springboot视频推荐管理系统

1、项目功能演示 DC00025【含文档】基于springboot短视频推荐管理系统协同过滤算法视频推荐系统javaweb开发程序设计vue 2、项目功能描述 短视频推荐系统分为用户和系统管理员两个角色 2.1 用户角色 1、用户登录、用户注册 2、视频中心:信息查看、视频收藏、点赞、…

分支和循环(1)

目录 前言 1.什么是语句? 2.分支语句(选择语句) 2.1 if 语句 2.2if书写格式形式的对比 2.3 if 练习 2.4 switch 语句 2.5 switch 练习 总结 前言 分支合循环首先就是要有良好的代码风格,缩进得当,要不然真的很…

横排文字、图层蒙版-1(2024年09月30日)

2024年09月30日 记录_导读 2024年09月30日 10:13 关键词 优惠券 设计 图层 背景 元素 调整 画笔工具 颜色 大小 位置 复制 移动 添加涂层 多选 显示 PS 元素文件 隐藏 使用规则 Logo 全文摘要 通过在Photoshop中精心操作图层,包括复制、移动和调整设置&#xf…

结构型模式-适配器-桥接-外观-代理

适配器模式 是什么 将一个类的接口转换成客户希望的另外一个接口 解决接口不兼容问题,复用之前的代码 实例 public class PoliceCarAdapter extends CarController { private PoliceSound sound;//定义适配者PoliceSound对象 private PoliceLamp lamp;//定义适配者Polic…

虚拟机U盘启动

二、注意事项 1、正确顺序是先插入U盘启动盘,再打开虚拟机,否则虚拟机无法检测到U盘; 2、如果已经打开虚拟机,则需关闭,插入U盘后重新开启。 3、设置好后如果换另一个U盘进行U盘启动,以下步骤要重新再设置&…

Python核心知识:pip使用方法大全

什么是 pip? pip 是 Python 的包管理工具,允许用户安装、升级和管理 Python 的第三方库和依赖。它极大地简化了开发过程,使开发者可以轻松地获取并安装所需的软件包。pip 已成为 Python 项目中最常见的包管理工具,并且自 Python …

windows C++-UWP 应用中使用 HttpRequest 类

在 UWP 应用中使用 HttpRequest 类 本节演示在 UWP 应用中如何使用 HttpRequest 类。 应用程序会提供一个输入框,该输入框定义了一个 URL 资源、用于执行 GET 和 POST 操作的按钮命令和用于取消当前操作的按钮命令。 使用 HttpRequest 类 1. 在 MainPage.xaml 中…

8639 折半插入排序

### 思路 折半插入排序是一种改进的插入排序算法,通过二分查找来确定插入位置,从而减少比较次数。每次插入时,先用二分查找找到插入位置,然后将元素插入到正确的位置。 ### 伪代码 1. 读取输入的待排序关键字个数n。 2. 读取n个待…

class 030 异或运算的骚操作

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. https://space.bilibili.com/8888480?spm_id_f…

【CKA】五、网络策略–NetworkPolicy

5、配置网络策略–NetworkPolicy 1. 考题内容: 2. 答题思路: 1、根据题目分析要创建怎样的网络策略 2、按题目要求查看ns corp-net的label 3、编写yaml,其中注意 namespace、label、port 3. 官网地址: https://kubernetes.io/…

解决connect因父类不明确而报错的问题

如图所示&#xff0c;connect函数报错&#xff0c;原因是connect的检查是在编译期完成的&#xff0c;而传入父类则是在运行时&#xff0c;从而引起connect不知道parent是谁而报错。只需加入类型转换即可。 connect(qobject_cast<TableWidget*>(parent), &TableWidg…

STM32F1+HAL库+FreeTOTS学习15——互斥信号量

STM32F1HAL库FreeTOTS学习15——互斥信号量 1. 优先级翻转2. 互斥信号量3. 相关API函数&#xff1b;3.1 互斥信号量创建3.2 获取信号量3.3 释放信号量3.4 删除信号量 4. 操作实验1. 实验内容2. 代码实现3. 运行结果 上期我们介绍了数值信号量。这一期我们来介绍互斥信号量 1. 优…

【计算机毕业设计】springboot企业客户信息反馈平台

摘 要 网络的广泛应用给生活带来了十分的便利。所以把企业客户信息反馈管理与现在网络相结合&#xff0c;利用java技术建设企业客户信息反馈平台&#xff0c;实现企业客户信息反馈的信息化。则对于进一步提高企业客户信息反馈管理发展&#xff0c;丰富企业客户信息反馈管理经验…

官网:视觉是第一记忆,没有记忆点的官网设计是失败的。

官方网站虽然不像之前那么火爆了&#xff0c;但是依然是企业展示品牌形象和吸引用户的重要渠道。仅仅拥有一个官方网站并不足以吸引用户&#xff0c;更重要的是网站的设计是否能够给用户留下深刻的记忆。 当前&#xff0c;用户对于网站的要求也越来越高&#xff0c;他们不仅仅希…

Arduino UNO R3自学笔记16 之 Arduino的定时器介绍及应用

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;学习定时器的功能。 1.定时器介绍 定时器也是一种中断&#xff0c;属于软件中断。 它就像一个时钟&#xff0c;可以测量事件的时间间隔。 比如早…

重置linux后vscode无法再次使用ssh连接

如果你使用过vscode ssh远程连接了一个Linux系统&#xff0c;但该系统被重置了&#xff0c;并且关键配置没有改变。再次使用vscode连接时&#xff0c;vscode可能无法连接。 原因&#xff1a;vscode远程连接后会在C:\Users{{你的用户名}}.ssh下的known_hosts和known_hosts.old。…

停止模式下USART为什么可以唤醒MCU?

在MCU的停止模式下&#xff0c;USART之类的外设时钟是关闭的&#xff0c;但是USART章节有描述到在停止模式下可以用USART来对MCU进行唤醒&#xff1a; 大家是否会好奇在外设的时钟被关闭的情况下&#xff0c;USART怎么能通过接收中断或者唤醒事件对MCU进行唤醒的呢&#xff1…