柑橘缺陷病害识别数据集YOLO 1290张,xml和txt标签都有;5类别:yolov5-v10通用 包含数据集➕模型➕可视化界面

YOLO柑橘缺陷病害识别数据集
✓图片数量1290,xml和txt标签都有; 5类 类别:Orange-Black-Spot,Orange-Canker ,Orange-Greening,Orange-Healthy,Orange-Melanose; 数据集

YOLO柑橘缺陷病害识别数据集


✓图片数量1290,xml和txt标签都有; 5类 类别:Orange-Black-Spot,Orange-Canker ,Orange-Greening,Orange-Healthy,Orange-Melanose; 数据集

YOLO柑橘缺陷病害识别数据集

数据集➕模型➕可视化界面

用于yolo,Python,目标检测,机器学习,人工智能,深度学习,柑橘缺陷检测,柑橘病害识别
图片数量:1290张
标注格式:XML (PASCAL VOC 格式) 和 TXT (YOLO 格式)
类别

  • Orange-Black-Spot(柑橘黑斑病)
  • Orange-Canker(柑橘溃疡病)
  • Orange-Greening(柑橘黄龙病)
  • Orange-Healthy(健康柑橘)
  • Orange-Melanose(柑橘黑腐病)

用途:用于柑橘病害的检测和分类任务,适用于农业领域的病害监控、质量控制和病害管理等。该数据集特别适合基于深度学习的目标检测模型,如YOLO。

数据集特点

  • 规模:包含1290张高分辨率图像,每张图像都带有详细的像素级或边界框标注。
  • 多样性:图像涵盖了不同的光照条件、背景环境以及多种类型的柑橘病害,以确保模型能够适应多样的实际场景。
  • 标注质量:每张已标注的图像都有精确的手动标注,确保了高质量的训练数据。
  • 标注格式
    • PASCAL VOC 格式 (XML):每个目标用一个 <object> 标签表示,包含类别名、边界框坐标等信息。
    • YOLO 格式 (TXT):每个目标用一行文本表示,包含类别ID、中心点坐标、宽度和高度等信息。
标注信息
  • PASCAL VOC 格式

    <annotation><folder>images</folder><filename>image_0001.jpg</filename><size><width>800</width><height>600</height><depth>3</depth></size><object><name>Orange-Black-Spot</name><bndbox><xmin>250</xmin><ymin>100</ymin><xmax>400</xmax><ymax>300</ymax></bndbox></object><object><name>Orange-Healthy</name><bndbox><xmin>500</xmin><ymin>200</ymin><xmax>600</xmax><ymax>400</ymax></bndbox></object><!-- 更多对象 -->
    </annotation>

    解释:<name> 表示病害的类别名,<bndbox> 包含边界框的坐标信息。

  • YOLO 格式

     txt 

    深色版本

    0 0.375 0.25 0.25 0.333333
    3 0.625 0.333333 0.25 0.333333

    解释:每一行表示一个目标,格式为 class_id x_center y_center width height,其中 x_center, y_center, width, height 是归一化后的值(范围在0到1之间)。

应用领域
  • 病害监控:自动检测并报告柑橘中的各种病害,提高农业生产的病害监控水平。
  • 质量控制:及时发现潜在的安全隐患,辅助进行质量控制和病害管理。
  • 智能监控:结合无人机或地面机器人,实现自动化监控,减少人工成本。
  • 数据分析:通过数据分析,提供关于病害分布和类型的统计报告,优化农业生产流程。
获取方式

通常情况下,研究人员可以通过官方提供的链接或相关机构网站下载该数据集。请注意,使用时应遵循相应的许可协议和引用要求。

关键代码示例
1. 下载数据集

假设我们已经有了数据集的下载链接,可以使用 Python 的 requests 库来下载数据集:

import requests
import os# 定义下载链接和保存路径
url = 'http://example.com/path/to/orange_defect_dataset.zip'  # 替换为实际的下载链接
save_path = './orange_defect_dataset.zip'# 检查是否已经下载过
if not os.path.exists(save_path):print("Downloading dataset...")response = requests.get(url, stream=True)with open(save_path, 'wb') as f:for chunk in response.iter_content(chunk_size=8192):if chunk:f.write(chunk)print("Download complete.")
else:print("Dataset already exists.")# 解压数据集
import zipfile
with zipfile.ZipFile(save_path, 'r') as zip_ref:zip_ref.extractall('./orange_defect_dataset')
2. 解析 XML 格式的标注文件

以下是一个解析 PASCAL VOC 格式标注文件的函数:

import xml.etree.ElementTree as ETdef parse_voc_annotation(anno_file):annotations = []tree = ET.parse(anno_file)root = tree.getroot()for obj in root.findall('object'):class_name = obj.find('name').textbbox = obj.find('bndbox')xmin = int(bbox.find('xmin').text)ymin = int(bbox.find('ymin').text)xmax = int(bbox.find('xmax').text)ymax = int(bbox.find('ymax').text)annotations.append({'class_name': class_name,'bbox': [xmin, ymin, xmax, ymax]})return annotations
3. 将 XML 标注转换为 YOLO 格式

以下是一个将 PASCAL VOC 格式转换为 YOLO 格式的脚本:

import os
import xml.etree.ElementTree as ET
from pathlib import Pathdef convert_voc_to_yolo(voc_file, yolo_file, image_width, image_height):tree = ET.parse(voc_file)root = tree.getroot()with open(yolo_file, 'w') as f:for obj in root.findall('object'):class_name = obj.find('name').textclass_id = get_class_id(class_name)  # 假设有一个函数获取类别IDbbox = obj.find('bndbox')xmin = float(bbox.find('xmin').text)ymin = float(bbox.find('ymin').text)xmax = float(bbox.find('xmax').text)ymax = float(bbox.find('ymax').text)x_center = (xmin + xmax) / 2.0 / image_widthy_center = (ymin + ymax) / 2.0 / image_heightwidth = (xmax - xmin) / image_widthheight = (ymax - ymin) / image_heightf.write(f"{class_id} {x_center} {y_center} {width} {height}\n")def get_class_id(class_name):class_map = {'Orange-Black-Spot': 0,'Orange-Canker': 1,'Orange-Greening': 2,'Orange-Healthy': 3,'Orange-Melanose': 4}return class_map[class_name]# 转换整个数据集
voc_anno_dir = './orange_defect_dataset/annotations'
yolo_anno_dir = './orange_defect_dataset/yolo_annotations'
image_dir = './orange_defect_dataset/images'os.makedirs(yolo_anno_dir, exist_ok=True)for filename in os.listdir(voc_anno_dir):if filename.endswith('.xml'):voc_file = os.path.join(voc_anno_dir, filename)yolo_file = os.path.join(yolo_anno_dir, filename.replace('.xml', '.txt'))image_file = os.path.join(image_dir, filename.replace('.xml', '.jpg'))image = Image.open(image_file)image_width, image_height = image.sizeconvert_voc_to_yolo(voc_file, yolo_file, image_width, image_height)
4. 使用数据集进行训练

如果您打算使用这个数据集进行深度学习模型的训练,可以使用 PyTorch 或 TensorFlow 等框架。以下是一个简单的 PyTorch DataLoader 示例:

import torch
from torch.utils.data import Dataset, DataLoader
from PIL import Image
import numpy as npclass OrangeDefectDataset(Dataset):def __init__(self, image_dir, anno_dir, transform=None):self.image_dir = image_dirself.anno_dir = anno_dirself.transform = transformself.images = os.listdir(image_dir)def __len__(self):return len(self.images)def __getitem__(self, idx):img_name = self.images[idx]image = Image.open(os.path.join(self.image_dir, img_name)).convert("RGB")anno_name = img_name.replace('.jpg', '.txt')anno_path = os.path.join(self.anno_dir, anno_name)image_np = np.array(image)image_height, image_width, _ = image_np.shapeannotations = parse_yolo_annotation(anno_path, image_width, image_height)if self.transform:image = self.transform(image)return image, annotations# 创建 DataLoader
dataset = OrangeDefectDataset(image_dir='./orange_defect_dataset/images',anno_dir='./orange_defect_dataset/yolo_annotations'
)
dataloader = DataLoader(dataset, batch_size=4, shuffle=True, num_workers=2)# 遍历数据
for images, annotations in dataloader:# 在这里进行模型训练pass
5. 目标检测模型训练

为了使用深度学习模型进行柑橘病害检测,您可以选择一些常用的目标检测架构,例如 YOLOv5、Faster R-CNN 或 SSD。以下是使用 PyTorch 和 YOLOv5 进行训练的一个简单示例:

  1. 安装 YOLOv5

    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
  2. 准备数据集配置文件: 将数据集转换为YOLO所需的格式,并创建配置文件(例如 data.yaml):

    train: ./orange_defect_dataset/train/images
    val: ./orange_defect_dataset/val/images
    test: ./orange_defect_dataset/test/images
    nc: 5  # 类别数
    names: ['Orange-Black-Spot', 'Orange-Canker', 'Orange-Greening', 'Orange-Healthy', 'Orange-Melanose']  # 类别名称
  3. 训练模型: 使用YOLOv5进行训练:

    python train.py --img 640 --batch 16 --epochs 50 --data data.yaml --weights yolov5s.pt
  4. 评估模型: 训练完成后,可以使用验证集进行评估:

    python val.py --data data.yaml --weights runs/train/exp/weights/best.pt
  5. 推理测试: 使用训练好的模型进行推理测试:

    python detect.py --source ./orange_defect_dataset/test/images --weights runs/train/exp/weights/best.pt --conf 0.4

通过上述步骤,您将拥有一个完整的柑橘病害检测系统,包括数据集、预训练模型和相关的训练流程。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信支付商家转账到零钱审核不通过解决方法

商家转账到零钱功能通常指的是微信支付提供的一项服务&#xff0c;允许商家将资金转账至用户的微信零钱账户。以下是商家转账到零钱的最优申请方案总结&#xff1a; 一、申请条件确认 1. 主体资格&#xff1a; a.申请主体必须为公司性质&#xff08;有限公司类型&#xff09;…

Apache Doris介绍

Apache Doris 的发展 Apache Doris 是一款基于 MPP 架构的高性能、实时的分析型数据库&#xff0c;以高效、简单、统一的特点被人们所熟知&#xff0c;仅需亚秒级响应时间即可返回海量数据下的查询结果&#xff0c;不仅可以支持高并发的点查询场景&#xff0c;也能支持高吞吐的…

【LeetCode每日一题】——724.寻找数组的中心下标

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目注意】六【题目示例】七【题目提示】八【解题思路】九【时间频度】十【代码实现】十一【提交结果】 一【题目类别】 前缀和 二【题目难度】 简单 三【题目编号】 724.寻找数组的中心下标 四【…

挖掘空间数据要素典型领域应用场景

空间数据要素作为数字经济的基石&#xff0c;正在多个领域发挥着重要作用。随着技术的发展&#xff0c;空间数据的应用场景不断拓展&#xff0c;为各行各业带来了深刻的变革。以下是几个典型的空间数据要素应用领域&#xff1a; 1. 城市规划与管理 空间数据在城市规划和管理中…

opencv学习:人脸识别器特征提取BPHFaceRecognizer_create算法的使用

BPHFaceRecognizer_create算法 在OpenCV中&#xff0c;cv2.face.LBPHFaceRecognizer_create()函数用于创建一个局部二值模式直方图&#xff08;Local Binary Patterns Histograms&#xff0c;简称LBPH&#xff09;人脸识别器。LBPH是一种用于人脸识别的特征提取方法&#xff0…

Python 入门(二、什么是 Python 的虚拟环境)

Python 入门第二课 &#xff0c;Python 的虚拟环境...... by 矜辰所致前言 本来以为环境搭建好了&#xff0c;就直接开始敲代码了&#xff0c;但是一直看到一个专业词汇&#xff1a;虚拟环境。 对于习惯了嵌入式 C 语言开发博主来说&#xff0c;一开始确实有点不明白&#xf…

k8s杂记

在node节点内部使用kubectl&#xff1a; rootmultinode-demo-m02:/# ps aux | grep kubelet root 218 3.1 1.6 2066316 62516 ? Ssl 07:35 0:29 /var/lib/minikube/binaries/v1.30.0/kubelet --bootstrap-kubeconfig/etc/kubernetes/bootstrap-kubelet.con…

PL/SQL Developer如何连接Oracle数据库(汉化)

简介 PL/SQL Developer是一种用于Oracle数据库开发的集成开发环境&#xff08;IDE&#xff09;。它提供了一个可视化的界面&#xff0c;使开发人员能够方便地编写、调试和执行PL/SQL代码。PL/SQL Developer还具有其他功能&#xff0c;如数据库对象浏览器、SQL编辑器、数据导入…

JavaScript | 定时器(setInterval和clearInterval)的使用

效果图如下&#xff1a; 当用户第一次看到这个页面时&#xff0c;按钮是不可点击的&#xff0c;并显示一个5秒的倒计时。倒计时结束后&#xff0c;按钮变为可点击状态&#xff0c;并显示“同意协议”。这样做的目的是确保用户有足够的时间阅读用户协议。 <!DOCTYPE html>…

AI核身-金融场景凭证篡改检测YOLO原理

引言 YOLO (You Only Look Once) 模型是一种先进的实时目标检测算法&#xff0c;它在计算机视觉领域具有重要的地位。YOLO以其速度和准确性而闻名&#xff0c;能够快速识别图像和视频中的各种物体。这使得它在自动驾驶、安全监控、机器人技术、医学影像分析等众多领域都有着广…

HTML+CSS总结【量大管饱】

文章目录 前言HTML总结语义化标签常用标签H5新的语义元素H5的媒体标签\<embed> 元素&#xff08;少用&#xff09;\<object>元素&#xff08;少用&#xff09;\<audio>\<video> 元素包含关系iframe元素嵌入flash内容常用表单inputselect CSS总结权重样…

【JAVA毕业设计】基于Vue和SpringBoot的渔具租赁系统

本文项目编号 T 005 &#xff0c;文末自助获取源码 \color{red}{T005&#xff0c;文末自助获取源码} T005&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 渔…

Go 语言应用开发:从入门到实战

Go 语言应用开发&#xff1a;从入门到实战 引言 Go&#xff08;Golang&#xff09;是由 Google 开发的一种开源编程语言&#xff0c;设计初衷是提高编程效率&#xff0c;尤其是在高并发场景下表现出色。Go 语言以其简洁、易学、高效并发的特性&#xff0c;逐渐成为开发者的首…

如何将mov格式的视频转换mp4?5种解决方法任你选!

MOV即QuickTime影片格式&#xff0c;它是Apple公司开发的一种音频、视频文件格式&#xff0c;用于存储常用数字媒体类型。然而&#xff0c;它的兼容性主要局限于苹果生态系统。有时&#xff0c;我们需要IOS和Mac设备的视频图片保存到安卓手机或Windows系统中&#xff0c;却发现…

在线matlab环境

登陆https://ww2.mathworks.cn/ 在线文档https://ww2.mathworks.cn/help/index.html 在线环境[需要先登陆]

Java - WebSocket

一、WebSocket 1.1、WebSocket概念 WebSocket是一种协议&#xff0c;用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接&#xff0c;这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发&#xff0c;并于2…

虚拟机VMware Workstation下CentOS7与主机Windows系统的文件夹共享

虚拟机设置&#xff1a; Linux中安装&#xff1a; yum install open-vm-tools# 判断是否共享&#xff0c;显示共享文件夹则为成功&#xff1a; vmware-hgfsclient# 挂载&#xff1a; vmhgfs-fuse .host:/ /mnt/hgfs/

ubuntu24 finalshell 无法连接ubuntu服务器, 客户端无法连接ubuntu, 无法远程连接ubuntu。

场景&#xff1a; 虚拟机新创建一个最小化的ubuntu服务器&#xff0c;使用finalshell连接服务&#xff0c;发现连接不上。 1. 查看防火墙ufw 是否开启&#xff0c;22端口是否放行 2. 查看是否安装openssh server, 并配置 我的问题是安装了openssh server 但是没有配置root可…

数据挖掘学习笔记:朴素贝叶斯 | Python复现

数据挖掘学习笔记&#xff1a;朴素贝叶斯 机器学习系列&#xff08;四&#xff09;&#xff1a;朴素贝叶斯&#xff08;华强买瓜版&#xff09; - yyxy的文章 - 知乎 十分钟&#xff0c;让你再也忘不掉贝叶斯分类 - VoidHaruhi的文章 - 知乎 《机器学习》&#xff08;西瓜书&am…

Web自动化Demo-Kotlin+Selenium

1.新建工程 打开Aqua&#xff0c;点击New Project选中Kotlin&#xff0c;配置如下&#xff1a; 然后在build.gradle.kts文件中添加依赖 plugins {kotlin("jvm") version "1.9.23" }group "org.example" version "1.0-SNAPSHOT"rep…