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

server/2024/10/18 12:33:53/

  

岩石分类检测数据集 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/valnc: 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设备编号,默认为0project='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_pathimage_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 = photodef detect_objects():if image_path:# 读取图像image = cv2.imread(image_path)results = model(image)# 绘制检测结果for result in results:boxes = result.boxesfor 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.ppmy.cn/server/132757.html

相关文章

spark:数据的关联与合并、缓存和checkpoint

文章目录 1. 数据的关联与合并1.1 join关联1.1.1 内关联1.1.2 左关联1.1.3 右关联 1.2 Union合并 2. 缓存和checkpoint 1. 数据的关联与合并 1.1 join关联 students表数据&#xff1a; 1.1.1 内关联 内关联只返回两个 DataFrame 中在连接键上匹配的行。 # join 关联 from…

JavaWeb技术支持的Spring Boot在线考试系统详解

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

探索 ffmpeg-python:Python 中的多媒体处理神器

&#x1f3ac; 探索 ffmpeg-python&#xff1a;Python 中的多媒体处理神器 一、背景介绍 在多媒体处理领域&#xff0c;尤其是视频和音频处理&#xff0c;Python 社区一直缺乏一个强大且易用的库。幸运的是&#xff0c;ffmpeg-python 库的出现填补了这一空白。它是一个 Python…

分享一个IDEA里面的Debug调试设置

1.问题来源 其实我们在这个IDEA里面的这个进行调试的时候&#xff0c;这个是只有步入&#xff0c;出去的选项的&#xff1b; 之前学习这个sort的底层源码的时候&#xff0c;进不去&#xff0c;我们是设置了一个取消java*什么的选项&#xff0c;然后使用这个step into就可以进…

掌握 C# 设计模式:从基础到依赖注入

设计模式是一种可以在开发中重复使用的解决方案&#xff0c;能够提高代码的可维护性、扩展性和复用性。C# 中常见的设计模式包括单例模式、工厂模式、观察者模式、策略模式等。本文将介绍这些常见的设计模式&#xff0c;并探讨 SOLID 原则和依赖注入&#xff08;Dependency Inj…

[实时计算flink]日志实时入仓快速入门

Flink全托管产品提供丰富强大的日志数据实时入仓能力。本文为您介绍如何在Flink全托管控制台上快速构建一个从Kafka到Hologres的数据同步作业。 背景信息 假设消息队列Kafka实例中有一个名称为users的Topic&#xff0c;其中有100条JSON数据&#xff0c;代表通过日志文件采集工…

艾体宝干货丨网络安全指南:如何使用Profishark和IOTA检测Blast-RADIUS

随着网络安全威胁的不断增加&#xff0c;了解并预防可能的攻击变得至关重要。Blast-RADIUS 是一种严重影响 RADIUS 协议的安全漏洞&#xff0c;能够让攻击者绕过身份验证获取未经授权的访问权限。本篇文章将深入探讨该漏洞的工作原理、检测方法及应对措施&#xff0c;帮助您有效…

SQL Server LocalDB 表数据中文乱码问题

--查看数据库设置 SELECT name, collation_name FROM sys.databases;--出现了The database could not be exclusively locked to perform the operation这个错误&#xff0c; --无法修改字符集为Chinese_PRC_CI_AS&#xff1b;所以需要先设置为单用户模式 ALTER DATABASE MySma…