【python】修改目标检测的xml标签(VOC)类别名

需求:

在集成多个数据集一同训练时,可能会存在不同数据集针对同一种目标有不同的类名,可以通过python脚本修改数据内的类名映射,实现统一数据集标签名的目的。

代码:

# -*- coding: utf-8 -*-
# @Time : 2023/9/11 10:58
# @Author : CLW
# @FileName: change_xml_label.py
# @Software: PyCharm

import os
import xml.etree.ElementTree as ET

'''
算法功能:
针对目录下的所有voc格式的xml标签文件,将类别的名称修改为指定名称
要求:label_dict的key值表示修改前的标签名,该key对应的value值表示修改后的标签名
e.x. 需要将xml文件中'workwear'的名称替换为'reflectivevest',那么可以这样设置:
    label_dict['workwear'] = 'reflectivevest'
'''

'''
####################    输入参数设置(开始)    #################### 
'''
org_label_dir = r'D:\dataset\pretrain_GW'
new_label_dir = r'D:\dataset\pretrain_GW'
label_dict = {}
label_dict['head'] = '头'
label_dict['hand'] = '手'


'''
####################    输入参数设置(结束)    #################### 
'''

def change_xml_label(xml_path, output_path, label_dict):
    if not os.path.getsize(xml_path):
        print("内容为空的xml:",xml_path)
    tree = ET.parse(xml_path)
    root = tree.getroot()
    for obj in root.iter('object'):
        cls = obj.find('name').text
        if cls in label_dict.keys():
            obj.find('name').text = label_dict[cls]

    tree.write(output_path, encoding="utf-8", xml_declaration=True)  # 输出新的xml文件

if __name__ == "__main__":
    # 遍历xml
    for root, dir, files in os.walk(org_label_dir):
        for file in files:
            if file[-3:] == 'xml':
                print(os.path.join(root, file))
                change_xml_label(os.path.join(root, file), os.path.join(new_label_dir, file),label_dict)

参数说明:

org_label_dir:xml标签的目录。
new_label_dir:输出的新xml标签的目录。
label_dict:标签类名的映射字典,key值为修改前的类名,value值为修改后的类名。

操作案例:

先使用labelImg查看修改前的标签:
在这里插入图片描述
然后修改脚本中的对应参数,案例中类名修改如下:
label_dict[‘head’] = ‘头’
label_dict[‘SF6’] = ‘sf6’

执行完成后,用labelImg工具打开新生成的标签:
在这里插入图片描述

如图,修改标签类别名成功!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EE trade:通缩下什么最保值

通缩,即物价水平总体持续下降的现象,会对经济和投资产生深远影响。在通缩环境下,持有的资产类型和策略需要做出相应调整,以确保资产的保值和增值。以下是几类在通缩环境下通常最保值的资产及其原因: 1. 现金和现金等价…

二十三、 企业可能涉及的数据跨境传输场景有哪些?

(一)人力资源数据出境场景 1. 公司招聘(应聘者个人信息出境) 以外企为例,在公司招聘的过程中,可能被认定为涉及数据出境的典型场景如下: a) 境外总部企业官网统一招聘员工,由应聘…

高校实验室危险化学品及重大危险源安全管理系统

高校实验室危险化学品及重大危险源安全管理的重要性: 保障师生安全:通过严格管理,可以有效地降低这些风险,确保师生在实验室内的安全。 确保实验教学质量:良好的危化品管理能够确保实验材料的准确性和可靠性&#xff0…

从0开始学人工智能测试节选:Spark -- 结构化数据领域中测试人员的万金油技术(三)

分布式计算原理 分布式计算的原理总结一句话就是:分而治之。 把数据分片,存在不同的机器中,解决数据存储的压力。客户端和服务端之间通过相关协议来自动的完成在不同的机器之间进行数据的存取,用户并不感知数据的物理存储结构。 用…

【赠书活动】好书推荐—《详解51种企业应用架构模式》

导读: 企业应用包括哪些?它们又分别有哪些架构模式?世界著名软件开发大师Martin Fowler给你答案。 01 什么是企业应用 我的职业生涯专注于企业应用,因此,这里所谈及的模式也都是关于企业应用的。(企业应用…

在QML中调用 C++ 函数的方法(四)

文章目录 前言一、qml 和 c++ 交互的官方文档介绍二、QML 中调用 C++ 实现的函数的方法1. Exposing Attributes of C++ Types to QML1.1 暴露 Properties1.2 暴露 Methods(槽函数和Q_INVOKABLE 修饰的函数)1.3 暴露 Signals2. Defining QML Types from C++3. 代码实例3.1 创建一…

基因分析平台开发1 - Layui WebUI组件库快速地构建网页界面

介绍一个Web UI库,可快速实现基因分析平台前端部分的开发,借助帮助文档,快速实现自己想要效果。 1. Layui 简介 Layui 是一套免费的开源 Web UI 组件库,可用于更简单快速地构建网页界面,全部主流 Web 浏览器&#xf…

Springboot JVM监控 通过Promethus

Springboot内置了对Prometheus得支持,可以监测得点有: JVM各指标参数(GC,堆,非堆等)接口调用次数,延时系统内存,IO,CPU使用率 部署Prometheus和Grafana 准备一台2核4G…

抖音小店有哪些违规处罚?18处扣钱违规,商家赶紧收藏!

哈喽~我是电商月月 做抖音小店的商家最怕的事情就是店铺违规处罚了,那你们知道抖音小店的违规处罚都有哪些吗? 今天月月就给大家一次性讲清楚,抖店运营中包含的违规条例吧: 一.商品违规 1. 滥发信息:不贩卖违规的…

浅谈配置元件之计数器

浅谈配置元件之计数器 JMeter 的计数器(Counter)是一个非常实用的配置元件,它允许你在测试计划中生成并递增一个序列号或计数器。这对于需要在请求中包含唯一标识符、序列号或是进行循环控制等场景非常有用。下面是一份详细的使用指南&#…

js每日十题(二)

1. 6.3 js第6题 以下结语句中,返回true的是? A !![] B 1’1’ C nullundefined D !!’’ 答: A选项,由于数组属于对象类型,所以空的数组转换成布尔型是true,前置!!,两次取…

BLE芯片DA145XX系列:配置SDK支持多连接

Dialog的DA145XX系列BLE芯片可以配置允许多连接,需要修改SDK,下面主要说明如何实现多连接配置。 1、新增宏定义:__EXCLUDE_ROM_APP_TASK__ 用于取消ROM里关于APP部分函数的调用,改为使用自定义的函数 2、部分宏定义(DA…

人工智能专业现代学徒制人才培养质量评价体系构建

一、 引 言 随着信息时代的发展,人工智能(AI)技术的飞跃进步对各行各业产生了深远影响,对专业人才的培养提出了更高要求。现代学徒制作为一种创新人才培养模式,通过校企合作,强调理论与实践的深度结合&…

Nexus3(nexus-3.19.1-01)忘记管理员密码

1、停服 ./nexus stop 2、进入OrientDB控制台: cd /apply/nexus3/nexus-3.42.0-01/lib/support/ java -jar ./nexus-orient-console.jar 3、在控制台执行: connect plocal:/apply/nexus3/sonatype-work/nexus3/db/security admin admin 4、重置密码…

海外仓代发系统选择标准:功能稳定和性价比高一个都不能少

对海外仓来说,一件代发基本都是比较核心的业务。不过这个核心业务现在的竞争确实也比较大,对海外仓企业而言,想在一件代发上做到让客户满意,还是需要多方面努力的。 一方面,需要自己的仓库管理模式足够标准化&#xf…

GAT1399协议分析(二)--注册流程分析

一、官方流程说明 二、官方流程解析 1 : 发起方向接收方发送注册 HTTP POST 请求/VIID/System/Register。 2: 接收方向发送方发送响应401 Unauthorized, 并在响应的消息头 WWW-Authenticate 字段中给 出适合发送方的认证机制和参数。 3: 发起方重新向接收方发送注册 HTTP POST…

设备维修管理系统

设备维修管理系统是一个集故障处理、巡检处理、设备管理、维修管理、系统管理以及手机客户端功能等六大功能于一体的信息化管理系统。该系统旨在实现设备管理的科学化、规范化和网络化,通过整合设备维修的各个环节和流程,提高设备维修的效率和质量&#…

Windows系统WDS+MDT网络启动自动化安装

Windows系统WDS+MDT网络启动自动化安装 适用于在Windows系统上WDS+MDT网络启动自动化安装 1. 安装准备 1.下载windows server 2019、windows 10 pro的ISO文件,并安装好windows server 2019 2.下载windows 10 2004版ADK及镜像包 1.1 安装平台 Windows 111.2. 软件信息 软件…

香橙派AI Pro开箱初体验

一、前言 上周很荣幸在CSDN上收到香橙派的测评邀请,这是一款专为边缘计算和嵌入式AI应用设计的高性能计算平台。因为之前一直做的是GPU Tensorrt部署相关工作,对边缘计算平台也不是很熟悉,花了一些时间摸索,今天我就简单与大家分…

【高阶数据结构(八)】跳表详解

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:高阶数据结构专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多数据结构   🔝🔝 高阶数据结构 1. 前言2. 跳表的概…