岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类
岩石分类检测数据集 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(代表不同的岩石类别),其余参数均为归一化后的浮点数值。
- VOC格式 (XML): 保存在
数据集结构
确保您的数据集目录结构如下所示(这只是一个示例结构,您可以根据实际情况调整):
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框架,可以有效地识别和分类这些岩石。提供的预训练模型可以在实际应用中提供可靠的检测结果。
特点
-
多样性:
- 包含多种不同类型的岩石,覆盖了常见的地质样本。
- 图像采集自真实场景,具有较高的多样性和实用性。
-
标注质量:
- 图像采用高质量的标注,包括边界框和类别标签。
- 提供VOC和YOLO两种格式的标注文件,方便在不同的深度学习框架中使用。
-
规模适中:
- 4,778张图像的数据集规模适中,既足够训练模型,又不会导致过长的训练时间。
-
可扩展性:
- 数据集可以进行扩充,以增加更多图像数据,提高模型的泛化能力。
示例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,允许用户加载图像并进行岩石分类检测。您可以根据需要进一步扩展和完善这个界面,添加更多的功能和优化用户体验。
相关文章:

岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类
岩石分类检测数据集 4700张 岩石检测 带标注 voc yolo 9类 岩石分类检测数据集 (Rock Classification and Detection Dataset) 描述: 本数据集旨在支持对不同类型的岩石进行自动分类和检测,特别适用于地质勘探、矿物识别、环境监测等领域。通过使用该数据集训练的模…...

电脑基础知识:mfc110.dll丢失的解决方法
1.mfc110.dll 丢失常见原因 mfc110.dll 文件的丢失或损坏是Windows系统中常见的问题,它可能由多种原因引起,以下是一些主要的因素: 不完全的软件卸载 在卸载程序时,如果相关的 DLL 文件没有被正确移除,可能会导致文件…...
Lua 协同程序(coroutine)
Lua 协同程序(coroutine) 概述 Lua 语言以其轻量级和易于嵌入的特点,在游戏开发、脚本编写等领域广受欢迎。Lua 中的协同程序(coroutine)是其并发编程的核心特性之一。协同程序提供了一种不同于多线程的并发执行方式,它允许多个代码段交替执行,而不是同时执行。这种机制…...

NASA:ARCTAS 区域的二级 FIRSTLOOK 气溶胶产品子集。 它包含气溶胶光学深度和粒子类型,以及相关的大气数据
目录 简介 信息 代码 引用 网址推荐 知识星球 机器学习 MISR L2 FIRSTLOOK Aerosol Product subset for the ARCTAS region V001 简介 这是 ARCTAS 区域的二级 FIRSTLOOK 气溶胶产品子集。 它包含气溶胶光学深度和粒子类型,以及相关的大气数据,…...
go clean command
文章目录 1.简介2.格式3.选项4.示例5.应用场景6.小结参考文献 1.简介 在 Go 语言的开发过程中,管理依赖和构建缓存是非常重要的。随着项目的迭代,旧的缓存和不再需要的依赖可能会影响构建的效率和准确性。 Go 提供了一个非常实用的命令 go clean&#…...

鸿蒙NEXT开发-动画(基于最新api12稳定版)
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...

HTML 入门
1. 什么是 HTML HTML(Hyper Text Markup Language),超文本标记语言 超文本:比文本要强大,通过链接和交互方式来组织和呈现信息的文本形式,不仅有文本,还可能包含图片、音频、或者自己已经审阅…...
前端面试题(十五)
83. ES6 中的 let 和 const let 和 const 的区别是什么? let 和 const 是 ES6 引入的用于声明变量的新方式,相比于传统的 var,它们具有以下特性: 块级作用域:let 和 const 声明的变量在其所在的块级作用域内有效&…...

如何成为 Rust 核心贡献者?Rust 开发的核心是什么?Rust 重要技术专家揭秘
10 月 17 - 18日,由 GOSIM 开源创新汇主办、CSDN 承办的 GOSIM CHINA 2024 将在北京盛大启幕。作为 GOSIM 开源年度大会的第三届盛会,本次活动邀请了 60 多位国际开源专家,汇聚了来自全球百余家顶尖科技企业、知名高校及开源社区的技术大咖、…...

springboot + nacos + sofarpc 整合后报错403
springboot版本 2.2.2 nacos 版本 1.4.2 rpc-sofa-boot 版本 3.2.0 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version></parent>…...

小米路由器R3Gv2安装openwrt记录
前言 小米路由器R3Gv2的硬件配置与小米路由器4A千兆版一致,但bootloader有所不同,因此openwrt的固件不要互刷。另外,R3Gv2和R3G、4A百兆版是不同的设备,切勿混淆。 硬件信息 OpenWrt参数页-Xiaomi MiWiFi 3G v2 CPU:…...

记录一下,android studio 登录不上github的问题
android studio 2023.3.1.18 版本的编译器,出现问题,之前连接过的项目可以正常提交和拉取到github。 但是新建立的项目无法上传到github,提示错误cannot load information for github.com/:request response;access to this site,…...

springcloud之基于github webhook动态刷新服务配置
前言 在实际开发中经常会有一个叫做配置中心的服务,这个服务经过变更参数来动态刷新线上业务数据行为配置。比如;行为开关、活动数据、黑白名单、本地/预发/线上环境切换等等,这些配置信息往往需要在我们不重启系统的时候就可以被更新执行。那…...

qt+opengl 实现纹理贴图,平移旋转,绘制三角形,方形
1 首先qt 已经封装了opengl,那么我们就可以直接用了,这里面有三个函数需要继承 virtual void initializeGL() override; virtual void resizeGL(int w,int h) override; virtual void paintGL() override; 这三个函数是实现opengl的重要函数。 2 我们…...

【动态规划】子数组系列(下)
1. 等差数列划分 413. 等差数列划分 状态表示:以 i 位置为结尾时的等差数列的个数 状态转移方程:由于至少需要三个元素才符合题目中等差数列的要求,所以需要判断 i - 2,i - 1,i 三个元素,当这三个元素符合…...
macos mendeley Unable to install the Microsoft Word Plugin 解决
windows也是相似的原理,这里主要说macos, 本质是 找到mendeley的插件启动项,放在word启动目录下, GPT-o1的解决方案: 3. Manual Installation (If Automatic Installation Fails) If the automatic installation doe…...

【Linux进程间通信】Linux信号机制深度解析:保存与处理技巧
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:Linux “ 登神长阶 ” 🌹🌹期待您的关注 🌹🌹 ❀Linux进程间通信 📒1. 信号的保存🌊在内核中的表示🍂sigs…...

常见开源组件的详解
文章目录 RPCRPC架构和工作流程为什么有了HTTP还要用RPC底层协议数据格式连接管理错误处理 使用场景常见的RPC框架 Web应用框架主要功能常见的Web应用框架Spring Boot (Java)Django (Python)Express.js (Node.js) Redis主要特点应用场景缓存问题Redis集群架构主从复制Redis Clu…...
rust使用教程详解
欢迎来到 Rustlings。该项目包含一些小练习,让您习惯阅读和编写 Rust 代码。这包括阅读和响应编译器消息! 建议在阅读Rust 官方书籍(学习 Rust 最全面的资源)的同时做 Rustlings 练习 📚️ Rust By Example是另一个推…...
并查集的实现(朴素版)
这是C算法基础-数据结构专栏的第二十九篇文章,专栏详情请见此处。 由于作者即将参加CSP,所以到比赛结束前将不再发表文章! 引入 并查集是一种可以快速合并查找集合的一种数据结构,这次我们将通过三道题来详细讲解并查集ÿ…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...

Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...

运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.
报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符,最后运行:npm run lint --fix...