修改yolo格式的labels类别、删除yolo格式的labels类别

1、项目中,数据集的类别顺序有时会改变,例如a项目类别1是b项目的类别3,,需要用a项目的数据集,只需要改类别就行,就不需要重新标注了,例如a项目的classes是

b项目的classes是

a项目的数据可以用到b项目,得a项目的类别改成b项目一致,这里就需要把1改成3,2改成5

import osdef gai_labels(labels_path, new_labels_path):# 获取labels_path文件夹中所有的文件labels_files = os.listdir(labels_path)# 如果new_labels_path文件夹不存在,则创建if not os.path.exists(new_labels_path):os.makedirs(new_labels_path)# 遍历每个标签文件for labels_file in labels_files:# 生成标签文件的完整路径file_path = os.path.join(labels_path, labels_file)# 创建新的文件路径new_file_path = os.path.join(new_labels_path, labels_file)# 读取标签文件内容并修改类别with open(file_path, 'r') as f:lines = f.readlines()new_lines = []for line in lines:parts = line.strip().split()# 修改类别1为3,类别2为5,类别3改成4if parts[0] == '1':parts[0] = '3'# elif parts[0] == '2':#     parts[0] = '5'new_lines.append(" ".join(parts) + '\n')# 将修改后的内容写入新的文件with open(new_file_path, 'w') as f:f.writelines(new_lines)if __name__ == "__main__":labels_path = r"E:\project\CODE\labels"new_labels_path = r"E:\project\CODE\gaihou"gai_labels(labels_path, new_labels_path)
0 0.070312 0.476042 0.137500 0.164583
1 0.518750 0.760417 0.103125 0.116667
2 0.200781 0.643750 0.139063 0.170833
0 0.307812 0.527083 0.106250 0.145833
1 0.392969 0.240625 0.085938 0.110417
2 0.328906 0.075000 0.117188 0.145833改后
0 0.070312 0.476042 0.137500 0.164583
3 0.518750 0.760417 0.103125 0.116667
5 0.200781 0.643750 0.139063 0.170833
0 0.307812 0.527083 0.106250 0.145833
3 0.392969 0.240625 0.085938 0.110417
5 0.328906 0.075000 0.117188 0.1458332、删除类别0,类别1,类别2,类别4,类别5,只留下类别3的标签,代码如下:
import osdef del_labels(labels_path, new_labels_path):# 获取labels_path文件夹中所有的文件labels_files = os.listdir(labels_path)# 如果new_labels_path文件夹不存在,则创建if not os.path.exists(new_labels_path):os.makedirs(new_labels_path)# 遍历每个标签文件for labels_file in labels_files:# 生成标签文件的完整路径file_path = os.path.join(labels_path, labels_file)# 创建新的文件路径new_file_path = os.path.join(new_labels_path, labels_file)# 读取标签文件内容并过滤指定类别with open(file_path, 'r') as f:lines = f.readlines()new_lines = []for line in lines:parts = line.strip().split()# 跳过类别为0、1、2、4、5的行if parts[0] in {'0', '1', '2', '4', '5'}:continuenew_lines.append(" ".join(parts) + '\n')# 将过滤后的内容写入新的文件with open(new_file_path, 'w') as f:f.writelines(new_lines)if __name__ == "__main__":labels_path = r"E:\project\CODE\labels"new_labels_path = r"E:\project\CODE\del_hou"del_labels(labels_path, new_labels_path)

删除后

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

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

相关文章

Java项目实战II基于微信小程序的个人行政复议在线预约系统微信小程序(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于微信小…

Kubernetes在容器编排中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 Kubernetes在容器编排中的应用 Kubernetes在容器编排中的应用 Kubernetes在容器编排中的应用 引言 Kubernetes 概述 定义与原理 …

D67【python 接口自动化学习】- python基础之数据库

day67 Python操作MySQL基础使用 学习日期:20241113 学习目标:MySQL数据库-- 136 Python操作MySQL基础使用 学习笔记: pymysql 创建MySQL的数据库链接 执行sql语句 总结 Python中使用第三方库:pymysql来操作MySQL,…

GitLab基于Drone搭建持续集成(CI/CD)

本文介绍了如何为 Gitee 安装 Drone 服务器。服务器打包为在 DockerHub 上分发的最小 Docker 映像。 1. 准备工作 创建OAuth应用 创建 GitLab OAuth 应用。Consumer Key 和 Consumer Secret 用于授权访问极狐GitLab 资源。 ps:授权回调 URL 必须与以下格式和路径匹配&…

python实战(八)——情感识别(多分类)

一、任务目标 本文使用的是来自Kaggle的一个情感识别数据集,这个数据集的总数据量是5934条,标签为anger、fear、joy三种情感的其中一种,很明显是一个多分类任务。这里,我们将使用微调技巧进行深度学习建模,同时我们会比…

【学习笔记】数据结构(七)

图 文章目录 图7.1 图的定义和术语7.2 图的存储结构7.2.1 数组表示法 - 邻接矩阵(Adjacency Matrix)7.2.2 邻接表 -(链式)表示法(Adjacency List)7.2.3 十字链表(Orthogonal List)7.2.4 邻接多重表(Adjacent MultiList) 7.3 图的遍…

scrapy爬取中信证券销售金融产品信息

import scrapyclass CsProductSpider(scrapy.Spider):name "cs_product"allowed_domains ["www.cs.ecitic.com"]start_urls ["http://www.cs.ecitic.com/newsite/cpzx/jrcpxxgs/zgcp/index.html"]def parse(self, response):# 提取数据的逻辑…

power bi中的related函数解析

在Power BI中,RELATED函数是一种用于检索相关表中数据的函数。它用于在一个表中检索与当前行相关联的另一个表中的数据。 销售成本 [销售数量]*related(商品表[进价])

Ollama的安装以及大模型下载教程

简介 Ollama是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型, Ollama极大地简化了在Docker容器内部署和管理LLM的过程,使得用户能够快…

算法演练----24点游戏

给定4个整数,数字范围在1~13之间任意使用-*/(),构造出一个表达式,使得最终结果为24, 方法一 算法分析:加括号和取出重复表达式 # 导入精确除法模块,使得在Python2中除法运算的行为更…

YUM 的使用

YUM 是一个用于 Fedora 和 Red Hat 以及 CentOS 操作系统的前端软件包管理器,它可以自动处理依赖关系并一次性安装所有必需的软件包。 镜像站点选择 1. 备份原有的镜像源配置文件 系统默认的 yum 镜像源配置文件存储在 /etc/yum.repos.d/ 目录下,可以…

第三十六章 Vue之路由重定向/404页面设置/路径模式设置

目录 一、路由重定向 1.1. 使用方式 1.2. 完整代码 1.2.1. main.js 1.2.2. App.vue 1.2.3. index.js 1.2.4. Search.vue 1.2.5. Home.vue 1.3. 运行效果 二、设定404错误页面 2.1. 使用方式 2.2. 完整代码 2.2.1. index.js 2.2.2. NotFound.vue 2.2.3. 运行效…

鸿蒙进阶篇-属性动画-animateTo转场动画

大家好啊,这里是鸿蒙开天组,今天我们来学习属性动画-animateTo&转场动画,咱们先来学习属性动画-animateTo 属性动画-animateTo 属性动画 animation是作为属性使用,而animateTo显示动画是一个系统的内置函数,可以…

[CKS] K8S ServiceAccount Set Up

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于Rolebinding的题目。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS] K8S Netwo…

Autosar CP DDS规范导读

Autosar CP DDS 主要用途 数据通信 中间件协议:作为一种中间件协议,DDS实现了应用程序之间的高效数据通信,能够在不同的软件组件和ECU之间传输数据,确保数据的实时性和可靠性。跨平台通信:支持在AUTOSAR CP平台上的不同…

wafw00f源码详细解析

声明 本人菜鸟一枚,为了完成作业,发现网上所有的关于wafw00f的源码解析都是这抄那那抄这的,没有新东西,所以这里给出一个详细的源码解析,可能有错误,如果有大佬发现错误,可以在评论区平和的指出…

字节、快手、Vidu“打野”升级,AI视频小步快跑

文|白 鸽 编|王一粟 继9月份版本更新之后,光锥智能从生数科技联合创始人兼CEO唐家渝朋友圈获悉,Vidu大模型将于本周再次进行版本升级,Vidu-1.5版本即将上线。 此版本更新方向仍是重点延伸大模型的泛化能力和主体…

LeetCode【0036】有效的数独

本文目录 1 中文题目2 求解方法:python内置函数set2.1 方法思路2.2 Python代码2.3 复杂度分析 3 题目总结 1 中文题目 请根据以下规则判断一个 9 x 9 的数独是否有效。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线…

STM32 GPIO 配置

GPIO 八种工作模式 STM32的GPIO八种模式明解STM32—GPIO理论基础知识篇之八种工作模式stm32cubemx hal学习记录:GPIO输入输出[STM32G4系列] GPIO筆記 - CubeMX GPIO整理與應用 模拟量输入输出 ADC 【STM32】HAL库 STM32CubeMX教程九—ADC[通俗易懂] DAC STM32C…

Xcode 16 使用 pod 命令报错解决方案

原文请点击这个跳转 一、问题现象: 有人会遇到 Xcode 升级到 16 后,新建应用然后使用 pod init 命令会报错如下: Stack Ruby : ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23]RubyGems : 3.5.22Host : macOS 15.0 (24A335…