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

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.rhkb.cn/news/233109.html

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

相关文章

Kubernetes复习总结(二):Kubernetes容器网络

2、Kubernetes容器网络 1)、Docker网络原理 Docker默认使用的网络模型是bridge,这里只讲bridge网络模型 1)容器之间通信原理 当安装完docker之后,docker会在宿主机上创建一个名叫docker0的网桥,默认IP是172.17.0.1…

vite + vue3引入ant design vue 报错

npm install ant-design-vue --save下载插件并在main.ts 全局引入 报错 解决办法一: main.ts注释掉全局引入 模块按需引入 解决办法二 将package.json中的ant-design-vue的版本^4.0.0-rc.4改为 ^3.2.15版本 同时将将package-lock.json中的ant-design-vue的版本…

最靠谱的Arduino IDE集成ESP32环境

设置的 地址为: https://dl.espressif.com/dl/package_esp32_index.json

PIG框架学习2——资源服务器的配置详解

一、前言 1、pig资源服务器的配置 Spring Security oauth2相关的依赖是在pigx-common-security模块中引入的,其他模块需要进行token鉴权的,需要在微服务中引入pigx-common-security模块的依赖,从而间接引入相关的Spring security oauth2依赖…

一、二进制方式 安装部署K8S

目录 一、操作系统初始化 1、关闭防火墙 2、关闭 SELinu 3、 关闭 swap 4、添加hosts 5、同步系统时间 二、集群搭建 —— 使用外部Etcd集群 1、自签证书 2、自签 Etcd SSL 证书 ① 创建 CA 配置文件:ca-config.json ② 创建 CA 证书签名请求文件&#xff…

爬虫实战3-js逆向入门:以黑猫投诉平台为例

目录 引言 逆向过程 步骤一:找到参数对应js代码位置 步骤二:分析参数值的生成逻辑 步骤三:确定函数u的具体内容 步骤四:使用python实现请求参数的生成 投诉信息爬取 引言 下面是一张主流网页加密方法的思维导图&#xff0…

[SpringBoot]自定义注解@AutoFill,实现公共字段自动填充(避免重复对时间属性初始化

对于时间属性,如createTime、updateTime在进行插入、修改操作时都要一个个初始化处理,过于麻烦。 可以自定义注解AutoFill作用于INSERT,UPDATE操作方法上,再自定义切面类,统一拦截加入了AutoFill注解的方法&#xff0c…

Python爬虫获取百度的图片

一. 爬虫的方式: 主要有2种方式: ①ScrapyXpath (API 静态 爬取-直接post get) ②seleniumXpath (点击 动态 爬取-模拟) ScrapyXpath XPath 是 Scrapy 中常用的一种解析器,可以帮助爬虫定位和提取 HTML 或 XML 文档中的数据。 Scrapy 中使用 …

ctfshow——信息搜集

文章目录 web 1web 2web 3web 4web 5web 6web 7web 8web 9web 10web 11web 12web 13web 14web 15web 16web 17web 18web 19web 20 web 1 题目提示开发注释未及时删除。 直接右键查看源代码。 web 2 在这关我们会发现:1)无法使用右键查看源代码&…

【亚马逊云科技】自家的AI助手 - Amazon Q

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

Neuro Contamination - Cyberpunk Gaming Music Futuristic Glitchy Sci-fi

无论是展示赛博朋克未来的电影场景,还是介绍高科技武器,你的音乐选择都至关重要。这首曲子的灵感来自科幻小说,旨在让你的观众想象未来的感觉。 潜在用例:科幻游戏、赛博朋克游戏、电影预告片、动作场景和产品广告。 非常适合充…

爆肝整理,接口测试+为什么要做接口测试总结,策底贯通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、什么是接口测试…

【SpringBoot+dubbo+zk】实现服务之间rpc通信

0)前置准备&#xff0c;我们使用zk作为注册中心&#xff0c;先启动zk&#xff0c;也就是2181端口。 1)父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http…

现有网络模型的使用及修改(VGG16为例)

VGG16 修改默认路径 import os os.environ[TORCH_HOME] rD:\Pytorch\pythonProject\vgg16 # 下载位置太大了&#xff08;140多G&#xff09;不提供直接下载 train_set torchvision.datasets.ImageNet(root./data_image_net, splittrain, downloadTrue, transformtorchvis…

GPDB - 高可用 - 流复制状态

GPDB - 高可用 - 流复制状态 GPDB的高可用基于流复制&#xff0c;通过FTS进行自动故障切换。自动故障切换需要根据primary-mirror流复制的各种状态进行判断。本节就聊聊primary-mirror流复制的各种状态。同样适用于PgSQL 1、WalSndState typedef enum WalSndState {WALSNDSTATE…

本地部署 Ollama

本地部署 Ollama 0. Ollama 能帮我们做什么1. 下载 Ollama2. 安装 Ollama3. 使用 Ollama4. Ollama 和 Langchain 的集成 0. Ollama 能帮我们做什么 在本地启动并运行大型语言模型。 运行 Llama 2、Code Llama 和其他模型。自定义并创建自己的。 1. 下载 Ollama 访问 https:…

【数据仓库与联机分析处理】数据仓库工具Hive

目录 一、Hive简介 &#xff08;一&#xff09;什么是Hive &#xff08;二&#xff09;优缺点 &#xff08;三&#xff09;Hive架构原理 &#xff08;四&#xff09;Hive 和数据库比较 二、MySQL的安装配置 三、Hive的安装配置 1、下载安装包 2、解压并改名 3、配置环…

ubuntu创建pytorch-gpu的docker环境

文章目录 安装docker创建镜像创建容器 合作推广&#xff0c;分享一个人工智能学习网站。计划系统性学习的同学可以了解下&#xff0c;点击助力博主脱贫( •̀ ω •́ )✧ 使用docker的好处就是可以将你的环境和别人的分开&#xff0c;特别是共用的情况下。本文介绍了ubuntu环境…

由浅入深理解C#中的事件

目录 本文较长&#xff0c;给大家提供了目录&#xff0c;可以直接看自己感兴趣的部分。 前言有关事件的概念示例​ 简单示例​ 标准 .NET 事件模式​ 使用泛型版本的标准 .NET 事件模式​ 补充总结 参考前言 前面介绍了C#中的委托&#xff0c;事件的很多部分都与委托…

Vue知识总结-中

VUE-生命周期 生命周期概述 生命周期也常常被称为生命周期回调函数/生命周期函数/生命周期钩子生命周期是Vue在关键时刻帮我们调用的一些特殊名称的函数生命周期函数的名字不能更改,但函数的具体内容是由我们程序员自己编写的生命周期函数中的this指向是vm或组件实例对象 生命周…