岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类

news2024/10/11 9:28:41

  

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类

岩石分类检测数据集 (Rock Classification and Detection Dataset)

描述: 本数据集旨在支持对不同类型的岩石进行自动分类和检测,特别适用于地质勘探、矿物识别、环境监测等领域。通过使用该数据集训练的模型可以帮助及时发现并分类各种岩石类型,提高地质研究的效率和准确性。

类别:

  • Igneous_Basalt (火成岩 - 玄武岩)
  • Igneous_Diorite (火成岩 - 闪长岩)
  • Igneous_Granite (火成岩 - 花岗岩)
  • Metamorphic_Marble (变质岩 - 大理岩)
  • Metamorphic_Quartzite (变质岩 - 石英岩)
  • Sedimentary_Chalk (沉积岩 - 白垩)
  • Sedimentary_Coal (沉积岩 - 煤)
  • Sedimentary_Limestone (沉积岩 - 石灰岩)
  • Sedimentary_Sandstone (沉积岩 - 砂岩)

数据量:

  • 总图片数: 4,778张
  • 总标注个数: 16,085个
  • 每类详细信息:
    • Igneous_Basalt: 154张图片,659个标注
    • Igneous_Diorite: 467张图片,673个标注
    • Igneous_Granite: 168张图片,486个标注
    • Metamorphic_Marble: 713张图片,2,002个标注
    • Metamorphic_Quartzite: 924张图片,2,029个标注
    • Sedimentary_Chalk: 409张图片,1,019个标注
    • Sedimentary_Coal: 629张图片,3,548个标注
    • Sedimentary_Limestone: 699张图片,3,542个标注
    • Sedimentary_Sandstone: 615张图片,2,127个标注

标注格式:

  • VOC格式 (XML)
  • YOLO格式 (TXT)

文件格式:

  • 图像采用常见的JPEG或PNG格式。
  • 标注文件有两种格式:
    • VOC格式 (XML): 保存在annotations文件夹中,每个图像对应一个XML文件。
    • YOLO格式 (TXT): 保存在labels文件夹中,每个图像对应一个文本文件,其中包含边界框坐标及类别标签。例如,对于Igneous_Basalt类别的标注,文本文件中的每一行将按照以下格式表示:<class_id> <x_center> <y_center> <width> <height>,其中<class_id>为0到8(代表不同的岩石类别),其余参数均为归一化后的浮点数值。

数据集结构

确保您的数据集目录结构如下所示(这只是一个示例结构,您可以根据实际情况调整):

rock_classification_dataset/
├── images/
│   ├── train/
│   │   ├── img1.jpg
│   │   ├── img2.jpg
│   │   └── ...
│   ├── val/
│   │   ├── img3000.jpg
│   │   ├── img3001.jpg
│   │   └── ...
├── labels/
│   ├── train/
│   │   ├── img1.txt
│   │   ├── img2.txt
│   │   └── ...
│   ├── val/
│   │   ├── img3000.txt
│   │   ├── img3001.txt
│   │   └── ...
├── annotations/
│   ├── train/
│   │   ├── img1.xml
│   │   ├── img2.xml
│   │   └── ...
│   ├── val/
│   │   ├── img3000.xml
│   │   ├── img3001.xml
│   │   └── ...
└── data.yaml

data.yaml 配置文件

创建一个名为 data.yaml 的配置文件,内容如下:

train: ./rock_classification_dataset/images/train
val: ./rock_classification_dataset/images/val

nc: 9  # 类别数量
names: ['Igneous_Basalt', 'Igneous_Diorite', 'Igneous_Granite', 'Metamorphic_Marble', 'Metamorphic_Quartzite', 'Sedimentary_Chalk', 'Sedimentary_Coal', 'Sedimentary_Limestone', 'Sedimentary_Sandstone']  # 类别名称

使用方法

1. 准备环境

确保安装了必要的Python库,如ultralytics(用于YOLOv8)和其他相关依赖:

pip install ultralytics
2. 修改配置文件

根据实际路径修改 data.yaml 文件中的路径。

3. 训练脚本

以下是一个使用YOLOv8进行训练的Python脚本示例:

from ultralytics import YOLO
import torch

# 设置设备
device = 'cuda' if torch.cuda.is_available() else 'cpu'

# 加载预训练模型或从头开始训练
model = YOLO('yolov8n.pt')  # 使用预训练的YOLOv8n模型
# model = YOLO()  # 从头开始训练

# 开始训练
results = model.train(
    data='path/to/data.yaml',  # 指定数据集配置文件路径
    epochs=100,  # 训练轮次
    batch=16,  # 批处理大小
    imgsz=640,  # 输入图像尺寸
    workers=8,  # 数据加载线程数
    device=device,  # 使用GPU设备编号,默认为0
    project='rock_classification',  # 保存结果的项目名称
    name='exp',  # 实验名称
    exist_ok=True  # 如果存在相同实验名,覆盖旧的结果
)

# 可视化训练结果
results.plot()

# 保存模型
model.save('rock_classification_model.pt')

训练结果

模型: YOLOv8

性能指标:

  • 准确率 (Accuracy): [根据实际结果填写]
  • 精确度 (Precision): [根据实际结果填写]
  • 召回率 (Recall): [根据实际结果填写]
  • F1分数 (F1 Score): [根据实际结果填写]
  • 平均精度均值 (mAP@0.5:0.95): [根据实际结果填写]

模型文件:

  • 提供了YOLOv8的预训练模型文件,可以直接用于推理或进一步微调。

总结

这个岩石分类检测数据集提供了4,778张高质量的真实场景图片,并且已经使用VOC和YOLO两种格式进行了标注。数据集涵盖了九种不同的岩石类别,包括火成岩、变质岩和沉积岩等常见类型。通过使用YOLOv8框架,可以有效地识别和分类这些岩石。提供的预训练模型可以在实际应用中提供可靠的检测结果。

特点

  1. 多样性:

    • 包含多种不同类型的岩石,覆盖了常见的地质样本。
    • 图像采集自真实场景,具有较高的多样性和实用性。
  2. 标注质量:

    • 图像采用高质量的标注,包括边界框和类别标签。
    • 提供VOC和YOLO两种格式的标注文件,方便在不同的深度学习框架中使用。
  3. 规模适中:

    • 4,778张图像的数据集规模适中,既足够训练模型,又不会导致过长的训练时间。
  4. 可扩展性:

    • 数据集可以进行扩充,以增加更多图像数据,提高模型的泛化能力。

示例UI界面设计

如果您需要开发一个上位机软件来进行实时的岩石分类检测,可以参考以下简单的Tkinter GUI示例:

import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
import cv2
import torch
from ultralytics import YOLO

# 加载预训练模型
model = YOLO('rock_classification_model.pt')

def load_image():
    global image_path
    image_path = filedialog.askopenfilename()
    if image_path:
        image = Image.open(image_path)
        image = image.resize((640, 480))
        photo = ImageTk.PhotoImage(image)
        image_label.config(image=photo)
        image_label.image = photo

def detect_objects():
    if image_path:
        # 读取图像
        image = cv2.imread(image_path)
        results = model(image)

        # 绘制检测结果
        for result in results:
            boxes = result.boxes
            for box in boxes:
                x1, y1, x2, y2 = map(int, box.xyxy[0])
                label = model.names[int(box.cls)]
                confidence = float(box.conf)
                color = (0, 255, 0)  # 绿色
                cv2.rectangle(image, (x1, y1), (x2, y2), color, 2)
                cv2.putText(image, f'{label} {confidence:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2)

        # 显示检测结果
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        image = Image.fromarray(image)
        image = image.resize((640, 480))
        photo = ImageTk.PhotoImage(image)
        image_label.config(image=photo)
        image_label.image = photo

# 创建主窗口
root = tk.Tk()
root.title("Rock Classification and Detection")

# 图像显示区域
image_label = tk.Label(root)
image_label.pack(pady=20)

# 按钮
load_button = tk.Button(root, text="Load Image", command=load_image)
load_button.pack(side=tk.LEFT, padx=10)

detect_button = tk.Button(root, text="Detect Objects", command=detect_objects)
detect_button.pack(side=tk.RIGHT, padx=10)

# 运行主循环
root.mainloop()

这个示例展示了如何使用Tkinter构建一个简单的GUI,允许用户加载图像并进行岩石分类检测。您可以根据需要进一步扩展和完善这个界面,添加更多的功能和优化用户体验。

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

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

相关文章

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

SpringBoot教程&#xff08;二十四&#xff09; | SpringBoot实现分布式定时任务之Quartz&#xff08;基础&#xff09; 简介适用场景Quartz核心概念Quartz 存储方式Quartz 版本类型引入相关依赖开始集成方式一&#xff1a;内存方式(MEMORY)存储实现定时任务1. 定义任务类2. 定…

高亚科技助力优巨新材,打造高效数字化研发项目管理平台

近日&#xff0c;中国企业管理软件资深服务商高亚科技与广东优巨先进新材料股份有限公司&#xff08;以下简称“优巨新材”&#xff09;正式签署合作协议&#xff0c;共同推进产品研发管理数字化升级。此次合作的主要目标是通过8Manage PM项目管理系统&#xff0c;提升优巨新材…

使用IDEA启动项目build时,解决Java编译时内存溢出问题:OutOfMemoryError深入解析

文章目录 简介问题描述解决方案常见解决方案示例代码示例1&#xff1a;增加JVM堆内存代码示例2&#xff1a;检查并修复内存泄漏代码示例3&#xff1a;分批编译代码示例4&#xff1a;使用编译器参数减少内存使用代码示例5&#xff1a;升级编译器和库 结论进一步的资源 简介 在J…

【Vue】Vue扫盲(三)计算属性和监听器

【Vue】Vue扫盲&#xff08;一&#xff09;事件标签、事件修饰符&#xff1a;click.prevent click.stop click.stop.prevent、按键修饰符、及常用指令 【Vue】Vue扫盲&#xff08;二&#xff09;指令&#xff1a;v-for 、v-if、v-else-if、v-else、v-show 文章目录 1、 计算属…

史上最全C语言static与extern指南

一、引言 在C语言中&#xff0c;static和extern关键字是非常重要的&#xff0c;它们分别用于控制变量的作用域和生命周期&#xff0c;以及变量和函数的定义和声明。理解这些关键字如何工作对于编写清晰、高效的代码至关重要。 二、static关键字 static关键字用于声明变量或函…

背靠背 丢包问题分析

存在一个设计需求&#xff0c;原始数据不足满字节有效的&#xff0c;要将数据整体右移对齐后输出。 整体移位后&#xff0c;存在eop 前移一拍情况。 实际分析时&#xff0c;因为是做数据裁剪&#xff0c;不会出现带宽膨胀问题&#xff08;1拍需要多拍出&#xff09;。 最…

关于摩托车一键启动无钥匙进入、智能科技创新

摩托车一键启动无钥匙进入功能 一、工作原理 摩托车的一键启动无钥匙进入功能采用了世界最先进的RFID无线射频技术和最先进的车辆身份编码识别系统&#xff0c;率先应用小型化、小功率射频天线的开发方案&#xff0c;并成功融合了遥控系统和无钥匙系统&#xff0c;沿用了传统…

基于Springboot+Vue的线上一流课程教学辅助系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 在系统…

01 为什么要学习数据结构与算法

为什么要学习数据结构与算法 一、问题提出 ​ 最早计算机的设计初衷主要用于军事上枪炮的弹道计算和火力表的测试&#xff0c;后来更多的用于科学计算&#xff0c;即数值类的计算&#xff0c;而现在&#xff0c;计算机深入到日常生活的各个方面&#xff0c;其计算的数据早已从…

【论文阅读】Cross Attention Network for Few-shot Classification

用于小样本分类的交叉注意力网络 引用&#xff1a;Hou, Ruibing, et al. “Cross attention network for few-shot classification.” Advances in neural information processing systems 32 (2019). 论文地址&#xff1a;下载地址 论文代码&#xff1a;https://github.com/bl…

畅阅读微信小程序+ssm论文源码调试讲解

2 系统开发环境 2.1微信开发者工具 微信开发者工具现在已经被小程序开发团队开发运行&#xff0c;目前微信开发者工具任然在不断的完善中&#xff0c;在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具&#xff0c;开发者工具将使用这个微信帐号的信息进行小程…

【含文档】基于Springboot+Vue的母婴全程服务管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

CSS @规则(At-rules)系列详解___@charset规则使用方法

CSS 规则(At-rules)系列详解 ___charset规则使用方法 本篇目录&#xff1a; 零、时光宝盒 一、charset规则定义和用法 二、CSS charset语法 三、charset 使用方法例子 1、正确使用方法 2、无效的&#xff0c;错误的使用方法 零、时光宝盒 &#xff08;https://blog.csd…

解决 IntelliJ IDEA 运行时 “Command line is too long“ 问题

文章目录 文章标题&#xff1a;解决 IntelliJ IDEA 运行时 "Command line is too long" 问题简介问题描述解决方案代码示例代码示例1&#xff1a;使用JAR Manifest代码示例2&#xff1a;使用Classpath File代码示例3&#xff1a;优化项目依赖 结论进一步的资源 文章标…

【算法】滑动窗口(续)

一、将x减到0的最小操作数 1658. 将 x 减到 0 的最小操作数 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums 和一个整数 x 。每一次操作时&#xff0c;你应当移除数组 nums 最左边或最右边的元素&#xff0c;然后从 x 中减去该元素的值。请注意&#xff0c;需要…

如何使用 Hailuo AI 生成视频

在这个科技飞速发展的时代&#xff0c;人工智能已经成为创意领域的重要工具。Hailuo AI 是一个强大的平台&#xff0c;可以帮助你将文字描述转化为高质量的视频。以下是详细的步骤&#xff0c;教你如何使用 Hailuo AI 生成视频。 第一步&#xff1a;访问 Hailuo AI 网站 首先…

第十四章 Java多线程--阻塞队列--SynchronousQueue

目录 一、SynchronousQueue基础概念 主要特点 使用场景 示例代码 二、SynchronousQueue深入了解 1 SynchronousQueue介绍 2 SynchronousQueue核心属性 3 SynchronousQueue的TransferQueue源码 3.1 QNode源码信息 3.2 transfer方法实现 3.3 tansfer方法流程图 一、Sy…

【C++堆(优先队列)】1834. 单线程 CPU|1797

本文涉及知识点 C堆(优先队列) LeetCode1834. 单线程 CPU 给你一个二维数组 tasks &#xff0c;用于表示 n​​​​​​ 项从 0 到 n - 1 编号的任务。其中 tasks[i] [enqueueTimei, processingTimei] 意味着第 i​​​​​​​​​​ 项任务将会于 enqueueTimei 时进入任务…

QStandardItemModel的role

QStandardItemModel定义了一些标准的角色&#xff0c;而QAbstractItemModel允许自定义角色。以下是一些常见的数据角色&#xff1a;1. **Qt::DisplayRole**&#xff1a;这是最基本的角色&#xff0c;用于显示在视图中的文本。当一个单元格被绘制时&#xff0c;通常会查询这个角…

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

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