柑橘缺陷病害识别数据集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 ET

def 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').text
        bbox = 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 Path

def 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').text
            class_id = get_class_id(class_name)  # 假设有一个函数获取类别ID
            bbox = 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_width
            y_center = (ymin + ymax) / 2.0 / image_height
            width = (xmax - xmin) / image_width
            height = (ymax - ymin) / image_height

            f.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.size
        convert_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 np

class OrangeDefectDataset(Dataset):
    def __init__(self, image_dir, anno_dir, transform=None):
        self.image_dir = image_dir
        self.anno_dir = anno_dir
        self.transform = transform
        self.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.shape
        annotations = 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

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

相关推荐
智驱力人工智能2 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
工程师老罗2 小时前
YOLOv1 核心结构解析
yolo
Lun3866buzha3 小时前
YOLOv10-BiFPN融合:危险物体检测与识别的革新方案,从模型架构到实战部署全解析
yolo
Katecat996633 小时前
YOLOv8-MambaOut在电子元器件缺陷检测中的应用与实践_1
yolo
工程师老罗4 小时前
YOLOv1 核心知识点笔记
笔记·yolo
介一安全5 小时前
【Web安全】XML注入全手法拆解
xml·web安全·安全性测试
工程师老罗9 小时前
基于Pytorch的YOLOv1 的网络结构代码
人工智能·pytorch·yolo
学习3人组12 小时前
YOLO模型集成到Label Studio的MODEL服务
yolo
孤狼warrior13 小时前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
水中加点糖15 小时前
小白都能看懂的——车牌检测与识别(最新版YOLO26快速入门)
人工智能·yolo·目标检测·计算机视觉·ai·车牌识别·lprnet