毒蘑菇检测数据集 9200张 14类毒蘑菇 带标注 voc yolo

news2024/12/23 8:33:04

 

毒蘑菇检测数据集 9200张 14类毒蘑菇 带标注 voc yolo

分类名: (图片张数,标注个数)
Amanita citrina: (700, 816)
Gyromitra infula: (842, 1102)
Hygrophoropsis aurantiaca: (766, 1578)
Imleria badia: (794, 1027)
Lactarius turpis: (728, 891)
Boletus reticulatus: (677, 856)
672,lus s rte
Amanita pantherina: (907, 1017)
Coltricia perennis: (667, 986)
Amanita hemibapha: (354, 800)
Amanita javanica: (366, 1166)
Amanita princeps: (354, 443)
Russula emetica: (418, 949)
总数: (9266, 14129)
总类(nc): 14类

毒蘑菇检测数据集介绍

数据集名称

毒蘑菇检测数据集 (Poisonous Mushroom Detection Dataset)

数据集概述

该数据集是一个专门用于训练和评估毒蘑菇识别模型的数据集。数据集包含9200张图像,每张图像都带有详细的标注信息,标注格式包括VOC(Pascal VOC)和YOLO格式。这些图像涵盖了14种不同的毒蘑菇种类,适用于基于深度学习的目标检测任务。通过这个数据集,可以训练出能够准确识别和分类不同种类的毒蘑菇的模型,从而帮助进行野外安全、食品安全等应用。

数据集特点
  • 高质量图像:数据集中的图像具有高分辨率,能够提供丰富的细节信息,特别适合蘑菇种类的细微特征分析。
  • 带标注:每张图像都有详细的标注信息,包括蘑菇的位置和大小。
  • 多格式标注:标注信息同时以VOC和YOLO格式提供,方便不同框架的使用。
  • 实际应用场景:适用于需要精确识别毒蘑菇的场景,如野外探险、食品安全监测系统等。
数据集结构
poisonous_mushroom_detection_dataset/
├── images/                            # 图像文件
│   ├── 00001.jpg                      # 示例图像
│   ├── 00002.jpg
│   └── ...
├── annotations/                       # 标注文件
│   ├── VOC/                           # Pascal VOC格式标注
│   │   ├── 00001.xml                  # 示例VOC标注文件
│   │   ├── 00002.xml
│   │   └── ...
│   ├── YOLO/                          # YOLO格式标注
│   │   ├── 00001.txt                  # 示例YOLO标注文件
│   │   ├── 00002.txt
│   │   └── ...
├── data.yaml                          # 类别描述文件
├── README.md                          # 数据集说明
数据集内容
  1. images/

    • 功能:存放图像文件。
    • 内容
      • 00001.jpg:示例图像。
      • 00002.jpg:另一张图像。
      • ...
  2. annotations/

    • 功能:存放标注文件。
    • 内容
      • VOC/:存放Pascal VOC格式的标注文件。
        • 00001.xml:示例VOC标注文件。
        • 00002.xml:另一张图像的VOC标注文件。
        • ...
      • YOLO/:存放YOLO格式的标注文件。
        • 00001.txt:示例YOLO标注文件。
        • 00002.txt:另一张图像的YOLO标注文件。
        • ...
  3. data.yaml

    • 功能:定义数据集的类别和其他相关信息。
    • 内容
      train: poisonous_mushroom_detection_dataset/images
      val: poisonous_mushroom_detection_dataset/images
      nc: 14
      names: ['Amanita citrina', 'Gyromitra infula', 'Hygrophoropsis aurantiaca', 'Imleria badia', 'Lactarius turpis', 'Boletus reticulatus', 'Amanita pantherina', 'Coltricia perennis', 'Amanita hemibapha', 'Amanita javanica', 'Amanita princeps', 'Russula emetica']
  4. README.md

    • 功能:数据集的详细说明文档。
    • 内容
      • 数据集的来源和用途。
      • 数据集的结构和内容。
      • 如何使用数据集进行模型训练和评估。
      • 其他注意事项和建议。
数据集统计
  • 总图像数量:9200张
  • 总标注框数量:14129个
  • 类别:14类
  • 平均每张图像的标注框数量:约1.54个

具体类别及其统计如下:

  • Amanita citrina:(700张图像, 816个标注)
  • Gyromitra infula:(842张图像, 1102个标注)
  • Hygrophoropsis aurantiaca:(766张图像, 1578个标注)
  • Imleria badia:(794张图像, 1027个标注)
  • Lactarius turpis:(728张图像, 891个标注)
  • Boletus reticulatus:(677张图像, 856个标注)
  • Amanita pantherina:(907张图像, 1017个标注)
  • Coltricia perennis:(667张图像, 986个标注)
  • Amanita hemibapha:(354张图像, 800个标注)
  • Amanita javanica:(366张图像, 1166个标注)
  • Amanita princeps:(354张图像, 443个标注)
  • Russula emetica:(418张图像, 949个标注)
使用说明
  • 环境准备:确保安装了常用的深度学习库,例如torchtorchvisionnumpy等。
  • 数据集路径设置:将数据集解压到项目目录下,并确保路径正确。
  • 训练模型:可以使用预训练的目标检测模型(如Faster R-CNN、YOLOv5等),并对其进行微调以适应当前数据集。
  • 数据增强:可以通过随机翻转、旋转等方法增加数据多样性,提高模型鲁棒性。
  • 超参数调整:根据实际情况调整学习率、批大小等超参数,以获得最佳训练效果。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 类别平衡:虽然数据集中各类别的样本数量相对均衡,但在实际应用中可能需要进一步检查并处理类别不平衡问题,例如通过过采样或欠采样方法。

关键训练代码

以下是一个使用PyTorch和torchvision库进行毒蘑菇检测的示例代码。我们将使用预训练的Faster R-CNN模型,并对其进行微调以适应我们的数据集。

import torch
import torchvision
from torchvision.models.detection.faster_rcnn import FastRCNNPredictor
from torchvision.transforms import functional as F
from torch.utils.data import DataLoader, Dataset
from PIL import Image
import os
import xml.etree.ElementTree as ET

# 自定义数据集类
class PoisonousMushroomDetectionDataset(Dataset):
    def __init__(self, root, transforms=None):
        self.root = root
        self.transforms = transforms
        self.imgs = list(sorted(os.listdir(os.path.join(root, "images"))))
        self.annotations = list(sorted(os.listdir(os.path.join(root, "annotations", "VOC"))))

    def __getitem__(self, idx):
        img_path = os.path.join(self.root, "images", self.imgs[idx])
        annotation_path = os.path.join(self.root, "annotations", "VOC", self.annotations[idx])

        img = Image.open(img_path).convert("RGB")
        annotation_root = ET.parse(annotation_path).getroot()

        boxes = []
        labels = []
        for obj in annotation_root.findall('object'):
            xmin, ymin, xmax, ymax = [int(obj.find('bndbox').find(tag).text) for tag in ('xmin', 'ymin', 'xmax', 'ymax')]
            label = obj.find('name').text
            label_id = ['Amanita citrina', 'Gyromitra infula', 'Hygrophoropsis aurantiaca', 'Imleria badia', 'Lactarius turpis', 'Boletus reticulatus', 'Amanita pantherina', 'Coltricia perennis', 'Amanita hemibapha', 'Amanita javanica', 'Amanita princeps', 'Russula emetica'].index(label) + 1
            boxes.append([xmin, ymin, xmax, ymax])
            labels.append(label_id)

        boxes = torch.as_tensor(boxes, dtype=torch.float32)
        labels = torch.as_tensor(labels, dtype=torch.int64)

        target = {}
        target["boxes"] = boxes
        target["labels"] = labels
        target["image_id"] = torch.tensor([idx])

        if self.transforms is not None:
            img, target = self.transforms(img, target)

        return F.to_tensor(img), target

    def __len__(self):
        return len(self.imgs)

# 数据预处理
def get_transform(train):
    transforms = []
    if train:
        transforms.append(torchvision.transforms.RandomHorizontalFlip(0.5))
    return torchvision.transforms.Compose(transforms)

# 加载数据集
dataset = PoisonousMushroomDetectionDataset(root='poisonous_mushroom_detection_dataset', transforms=get_transform(train=True))
dataset_test = PoisonousMushroomDetectionDataset(root='poisonous_mushroom_detection_dataset', transforms=get_transform(train=False))

indices = torch.randperm(len(dataset)).tolist()
dataset = torch.utils.data.Subset(dataset, indices[:-920])
dataset_test = torch.utils.data.Subset(dataset_test, indices[-920:])

data_loader = DataLoader(dataset, batch_size=2, shuffle=True, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))
data_loader_test = DataLoader(dataset_test, batch_size=1, shuffle=False, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))

# 定义模型
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
num_classes = 15  # 14类目标 + 背景
in_features = model.roi_heads.box_predictor.cls_score.in_features
model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)

# 设置设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)

# 定义优化器
params = [p for p in model.parameters() if p.requires_grad]
optimizer = torch.optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005)

# 训练模型
num_epochs = 10
for epoch in range(num_epochs):
    model.train()
    for images, targets in data_loader:
        images = list(image.to(device) for image in images)
        targets = [{k: v.to(device) for k, v in t.items()} for t in targets]

        loss_dict = model(images, targets)
        losses = sum(loss for loss in loss_dict.values())

        optimizer.zero_grad()
        losses.backward()
        optimizer.step()

    print(f'Epoch {epoch+1}/{num_epochs}, Loss: {losses.item()}')

    # 验证模型
    model.eval()
    with torch.no_grad():
        for images, targets in data_loader_test:
            images = list(image.to(device) for image in images)
            targets = [{k: v.to(device) for k, v in t.items()} for t in targets]
            outputs = model(images)

# 保存模型
torch.save(model.state_dict(), 'poisonous_mushroom_detection_model.pth')

注意事项

  • 数据格式:确保输入的数据格式正确,特别是图像文件和标注文件的格式。
  • 超参数调整:根据实际情况调整学习率、批大小等超参数,以获得最佳训练效果。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 数据增强:可以通过数据增强技术(如随机翻转、旋转等)来增加模型的鲁棒性。
  • 模型选择:除了Faster R-CNN,还可以尝试其他目标检测模型,如YOLOv5、SSD等,以找到最适合当前任务的模型。
  • 类别平衡:虽然数据集中各类别的样本数量相对均衡,但在实际应用中可能需要进一步检查并处理类别不平衡问题,例如通过过采样或欠采样方法。

通过上述步骤,你可以成功地使用这个高质量的毒蘑菇检测数据集进行模型训练和评估。该数据集不仅适用于学术研究,还可以应用于实际的野外探险、食品安全监测系统等领域,帮助提升对毒蘑菇的识别准确性和效率。希望这个数据集能帮助你更好地理解和应用最新的深度学习技术。

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

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

相关文章

微信小程序开发-配置文件详解

文章目录 一,小程序创建的配置文件介绍二,配置文件-全局配置-pages 配置作用:注意事项:示例: 三,配置文件-全局配置-window 配置示例: 四,配置文件-全局配置-tabbar 配置核心作用&am…

日期类(Date)的实现 (C++版)

​ 🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:C入门 目录 前言 一、Date的头文件,包含函数声明 二、 Date.cpp 2.1 int GetMonthDay(int year, int month) 2.2 bool Check() 2.3 Date& …

基于YOLOv8-deepsort算法的智能车辆目标检测车辆跟踪和车辆计数

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 社区特色…

HTB:Funnel[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are open? 2.What is the name of the directory that is available on the FTP server? 3.What is the default account password that every new member on the "Funnel" team should change as soon a…

cudnn8编译caffe过程(保姆级图文全过程,涵盖各种报错及解决办法)

众所周知,caffe是个较老的框架,而且只支持到cudnn7,但是笔者在复现ds-slam过程中又必须编译caffe,我的cuda版本是11.4,最低只支持到8.2.4,故没办法,只能编译了 在此记录过程、报错及解决办法如下; 首先安装依赖: sudo apt-get install git sudo apt-get install lib…

李宏毅 X 苹果书 自注意力机制 学习笔记下

b1 ,b2...不是依序产生,而是同时被计算好的 从矩阵乘法角度看待self-attention运作过程 矩阵运算表示每一个a都要产生 a k v的操作如下: 矩阵运算表示的计算如下: A‘是A的normalization ,用softmax 矩阵运算表示b计…

Ubuntu有关redis的命令

防火墙: systemctl status firewalld systemctl stop firewalld systemctl disable firewalld.service ifconfig查看ip地址 redis.conf在/etc/redis下,但是得sudo -i进入root模式 进入/etc/redis下开启redis-server服务 查看6379端口是否可以访问 net…

vue3- antd design vue 引入iconfont

文章目录 前言一、新建iconfont项目 前言 vue3项目中,如何引入第三方的iconfont的图标 一、新建iconfont项目 搜索需要的图标,加入购物车,购物车中图片加入项目 下载项目文件,打开压缩包后,将iconfont.js 文件拷贝到…

基于vue框架的大学生心理健康服务平台mwavu(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:学生,心理专家,心理咨询,健康文章,咨询回复,心理案例,监测预警,解压游戏,放松音乐 开题报告内容 基于Vue框架的大学生心理健康服务平台开题报告 一、研究背景与意义 随着社会的快速发展和教育竞争的日益激烈,大学生面临着…

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz 简介适用场景Quartz核心概念Quartz 存储方式Quartz 版本类型引入相关依赖方式一:内存方式(MEMORY)存储实现定时任务1. 定义任务类2. 定义任务描述及创建任务触发器3. Quartz的…

VirtualBox Ubuntu22.04 NOI linux2.0 Terminal无法打开 终端打不开 两步解决法儿

新安装的虚拟机无法打开Terminal,从应用列表中单击Terminal,左上角任务栏会出现Terminal,并且鼠标转圈,但是过一会左上角Terminal消失,就像一切都没有来过。 解决办法: CTRL ALT F3 进入命令行模式&…

【自然语言处理】补充:基于向量空间的分类器

【自然语言处理】补充:基于向量空间的分类器 文章目录 【自然语言处理】补充:基于向量空间的分类器1. 特征选择2. 基于向量空间的分类方法3. Rocchio4. KNN5. 线性分类器1. 特征选择 特征选择 文本分类中,通常要将文本表示在一个高维空间下,每一维对应一个词项许多维上对应…

如何基于vite实现清除特定环境下的console和debugger

一、解决方法 方法一:使用esbuild 直接在vite.config.ts文件中写,无需下载插件 export default defineConfig(({ mode }) > {// 环境变量const env loadEnv(mode, root, "");return {base: env.VITE_PUBLIC_PATH,plugins: [vue(),...],…

中国书法-孙溟㠭浅析碑帖《九成宫醴泉铭》

中国书法孙溟㠭浅析碑帖《九成宫醴泉铭》 《九成宫醴泉铭》是由魏征撰文、欧阳询书丹,唐贞观六年(公元632年)立碑,篆书体题碑额。内容记载了唐太宗李世民在九成宫避暑山庄发现涌泉的事。 书法法度森严,腴润中见峭劲&…

图文并茂解释水平分表,垂直分表,水平分库,垂直分库

文章目录 1.垂直角度(表结构不一样)垂直分表:垂直分库: 2.水平角度(表结构一样)水平分库:水平分表: 1.垂直角度(表结构不一样) 垂直分表: 将一个表字段拆分成多个表,每个表存储部分字段。好处是避免IO时锁表的次数,分…

数据结构——遍历二叉树

目录 什么是遍历二叉树 根据遍历序列确定二叉树 例题(根据先序中序以及后序中序求二叉树) 遍历的算法实现 先序遍历 中序遍历 后序遍历 遍历算法的分析 二叉树的层次遍历 二叉树遍历算法的应用 二叉树的建立 复制二叉树 计算二叉树深度 计算二…

java发起POST方法请求第三方接口(编码处理)

文章目录 引言I 案例查询船舶轨迹配置JVM编码参数请求提供方常见问题II 工具类III 知识扩展:程序运行源代码各个阶段对编码的处理Java源码--->字节码Java字节码--->虚拟机--->操作系统操作系统-->显示设备引言 使用场景: 调用第三方平台接口 I 案例 查询船舶…

【MySQL】--数据类型

文章目录 1. 选择数据库1.1 语法 2. 查询当前选中的数据库2.1 语法 3. 常见数据类型分类4. 数据值类型4.1 类型列表4.2 数据类型取值范围 5. 字符串类型5.1 类型列表5.2 关于排序5.3 CHAR和VARCHAR的区别5.4 如何选择CHAR和VARCHAR5.5 VARCHAR与TEXT的区别 6. 日期类型6.1 类型…

基于SSM的仿win10界面的酒店管理系统

基于SSM的仿win10界面的酒店管理系统 运行环境: jdk1.8 eclipse tomcat7 mysql5.7 项目技术: jspssm(springspringmvcmybatis)mysql 项目功能模块:基础功能、房间类型、楼层信息、附属功能

重学SpringBoot3-集成Redis(六)之消息队列

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(六)之消息队列 1. 什么是发布/订阅(Pub/Sub)?2. 场景应用3. Spring Boot 3 整合 R…