关于目标检测中按照比例将数据集随机划分成训练集和测试集

1. 前言

在做目标检测任务的时候,不少网上的数据,没有划分数据集,只是将数据和标签放在不同的文件夹下,没有划分数据集

虽然代码简单,每次重新编写还是颇为麻烦,这里记录一下

如下,有的数据集这样摆放:

这里的py文件是划分代码,和rawDataSet 放在相同目录下

关于图像分类任务划分数据集:关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件

关于xml文件生成相应的类别json字典文件:

目标检测篇:如何根据xml标注文件生成类别classes的json文件

目标检测数据的可视化:

xml : 关于目标检测任务中,XML(voc格式)标注文件的可视化

txt : 关于目标检测任务中,YOLO(txt格式)标注文件的可视化

2. 完整代码

如下:

import random
import os
import shutil
from tqdm import tqdm# 划分数据函数
def split_data(root,test_rate):images_path = [os.path.join(root,i) for i in os.listdir(root)]      # 获取所有图片路径test_split_path = random.sample(images_path, k=int(len(images_path) * test_rate))   # 随机采样测试集# 遍历所有图片for image_path in tqdm(images_path,desc='loading...'):# 获取相应的标注文件,这里需要根据目录、后缀更改label_path = image_path.replace('images','annotation')label_path = label_path.replace('.png','.xml')# 划分数据if image_path in test_split_path:       # 在测试集shutil.copy(image_path,'./data/test/images')shutil.copy(label_path,'./data/test/labels')else:shutil.copy(image_path,'./data/train/images')shutil.copy(label_path,'./data/train/labels')if __name__ == '__main__':rawDataSet = './rawDataSet/images'            # 原始数据的图片路径if os.path.exists('./data'):        # 如果之前有,那么删除shutil.rmtree('./data')os.makedirs('./data/train/images')      # 训练集图片os.makedirs('./data/train/labels')      # 训练集标签os.makedirs('./data/test/images')       # 测试集图片os.makedirs('./data/test/labels')       # 测试集标签# 划分数据split_data(root=rawDataSet,test_rate=0.2)

代码运行过程:这里测试的就是五个数据

生成结果:

3. 代码使用的相关问题

不同于其他任务,脚本的运行逻辑是传入原始数据的图片目录,因为目标检测的标注文件和原图只是存放的目录不同,并且后缀不同,文件名是完全相同的

所以划分数据的时候,只需要找到图片,根据目录可以直接找到对应的标签

如下,第一个是目录的替换,根据数据进行更换,

第二个是图片后缀,根据自己数据集更换即可

如果是yolo标注的txt文件,也是一样的,后缀更换就行了

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

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

相关文章

常见的缓存淘汰算法

FIFO、LRU、LFU 和 WindowTinyLFU 是常见的缓存淘汰算法,用于决定在缓存容量不足时应该如何选择要淘汰的数据。 常见的缓存淘汰算法包括: FIFO(先进先出)算法:按照数据最早进入缓存的顺序进行淘汰。即,最先…

HNU-数据库系统-实验3-数据库设计

数据库系统 课程实验3数据库设计 计科210X 甘晴void 202108010XXX 目录 文章目录 数据库系统 课程实验3<br>数据库设计实验目的实验内容实验重难点实验环境实验过程&#xff08;0&#xff09;数据库需求描述&#xff08;1&#xff09;数据库概念结构设计E-R图实体图书馆…

openGauss学习笔记-188 openGauss 数据库运维-常见故障定位案例-core问题定位

文章目录 openGauss学习笔记-188 openGauss 数据库运维-常见故障定位案例-core问题定位188.1 磁盘满故障引起的core问题188.1.1 问题现象188.1.2 原因分析188.1.3 处理办法 188.2 GUC参数log_directory设置不正确引起的core问题188.2.1 问题现象188.2.2 原因分析188.2.3 处理办…

利用ChatGLM3构建Prompt实现Text2SQL

之前使用ChatGLM3的自定义工具实现了查询MySQL数据库&#xff0c;但感觉功能还是比较受限。 https://blog.csdn.net/weixin_44455388/article/details/135270879?spm1001.2014.3001.5501 使用ChatGLM3实现Text2SQL 前言Text2SQL的构建第一阶段&#xff1a;SQL脚本构建&#xf…

软件工程_复习

软件工程 软件危机(1968 60年代) 产生软件危机的原因: 一方面与软件本身的特点有关,另一方面也和软件开发和维护的方法不正确有关。 与软件本身特点有关: 1.软件不同于硬件,软件是计算机系统中的逻辑部件,缺乏“可见性”,管理和控制软件开发过程相当困难 2.软件在运行过…

Python笔记06-文件操作

文章目录 文件的编码文件读取文件写入文件追加 文件的编码 编码技术即&#xff1a;翻译的规则&#xff0c;记录了如何将内容翻译成二进制&#xff0c;以及如何将二进制翻译回可识别内容。算机中有许多可用编码&#xff1a;UTF-8、GBK、Big5等 不同的编码&#xff0c;将内容翻译…

typescript递归处理

typescript是一种类型强约束的语言&#xff0c;一般来讲定义类型时都要明确指定类型的数据结构。而如果数据结构中涉及到不知道基层嵌套的递归时&#xff0c;就会有一些麻烦。 在 https://stackoverflow.com/questions/51657815/recursive-array-type-typescript 有一个回答…

Java Swing手搓坦克大战遇到的问题和思考

1.游戏中的坐标系颇为复杂 像素坐标系还有行列坐标&#xff0c;都要使用&#xff0c;这之间的互相转化使用也要注意 2.游戏中坦克拐弯的处理&#xff0c;非常重要 由于坦克中心点是要严格对齐到一条网格线&#xff0c;并沿着这条线前进的&#xff0c;如果拐弯不做处理&#…

柠檬Lemon测评机的配置和测试方法

柠檬Lemon测评机的配置和测试方法 只需3步,即可配置好柠檬 第一步:选择g++,点击下一步 第二步:找到g++的目录,添加编译器,点击下一步 第三步:检查结果,点击完成。(此时,配置完成) 只需3步,即可用柠檬做考试测试 第一步:新建比赛

SpringCloud系列篇:核心组件之注册中心组件

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.注册中心组件是什么 二.注册中心…

大模型机器人原理解析:如何从RT/RT2、Berkeley Gello到发展到斯坦福Mobile ALOHA、Google家务机器人

前言 23年7月&#xff0c;我在朋友圈评估Google的RT2说道&#xff1a; “大模型正在革新一切领域啊&#xff0c;超帅&#xff0c;通过大模型不仅能理解“人话”&#xff0c;还能对“人话”进行推理&#xff0c;并转变为机器人能理解的指令&#xff0c;从而分阶段完成任务。回…

opencv006图像处理之仿射变换(旋转,缩放,平移)

空间变换中的仿射变换对应着五种变换&#xff0c;平移&#xff0c;缩放&#xff0c;旋转&#xff0c;翻转&#xff0c;错切。而这五种变化由原图像转变到变换图像的过程&#xff0c;可以用仿射变换矩阵进行描述。而这个变换过程可以用一个2*3的矩阵与原图进行相乘得到。关键就是…

5年经验之谈 —— 探索自动化测试用例设计粒度!

自动化测试用例的粒度指的是测试用例的细致程度&#xff0c;即每个测试用例检查的功能点的数量和范围。 通常&#xff0c;根据测试用例的粒度&#xff0c;可以被分为3种不同的层次&#xff0c;从更低层次的细粒度到更高层次的粗粒度。 第一种&#xff1a;单元测试 - 细粒度 单…

16、Kubernetes核心技术 - 节点选择器、亲和和反亲和

目录 一、概述 二、节点名称 - nodeName 二、节点选择器 - nodeSelector 三、节点亲和性和反亲和性 3.1、亲和性和反亲和性 3.2、节点硬亲和性 3.3、节点软亲和性 3.4、节点反亲和性 3.5、注意点 四、Pod亲和性和反亲和性 4.1、亲和性和反亲和性 4.2、Pod亲和性/反…

chatGPT带你学习设计模式 (二)抽象工厂模式(创建型模式) GURU

深入理解抽象工厂模式 引言 在面向对象编程中&#xff0c;对象的创建是一个常见且关键的挑战。尤其在需要管理一系列相关对象的创建时&#xff0c;传统的对象创建方法&#xff08;如直接使用 new 关键字&#xff09;可能导致代码的高耦合和低灵活性。这时&#xff0c;抽象工厂…

jmeter连接数据库

下载jdbc 在浏览器输入 mysql jdbc官网 &#xff1b; 网址&#xff1a;MySQL :: MySQL Connectors 点击 Download 查看自己mysql服务的版本&#xff0c;找到对应版本的jdbc 所以下载5版本的jdbc 安装jdbc&#xff08;绿色版安装&#xff09; 操作jmeter 打开jmeter&#xff0…

前端框架中的状态管理(State Management)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

GEE:随机数

作者&#xff1a;CSDN _养乐多_ 本文将介绍在 Google Earth Engine&#xff08;GEE&#xff09;上生成随机数的 API&#xff0c;可以指定随机数的生成范围、类型&#xff08;整型、浮点型&#xff09;、分布方式&#xff08;均匀分布、正态分布&#xff09;。 文章目录 一、随…

基于springboot的基于协同过滤算法的东北特产销售系统的设计与实现

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的基于协同过滤算法的东北…

2024年度 ROTS - 实时操作系统 Top 15

RTOS&#xff08;实时操作系统&#xff09;。 这里说的 RTOS 并非新星球大战电影中的机器人&#xff0c;而是物联网设备、航空系统、空中交通管制等背后的无声协调者&#xff0c;就在地球上。 RTOS&#xff0c;或称实时操作系统&#xff0c;设计它们是为了更好的管理资源&…