概述

自己在用labelImg打好标签后,想只用其中几类训练,不想训练全部类别,又不想重新打标生成.xml文件,因此想到这个办法:直接在.xml文件中删除原有的不需要的标签类及其属性。

打标时标签名出现了大小写(工程量大时可能会手滑),程序中有改写标签值为小写的过程,因为我做py-faster-rcnn 训练时,标签必须全部为小写。

以如下的.xml文件为例,我故意把标签增加了大写

test.jpg

C:\Users\yasin\Desktop\test

Unknown

400

300

3

0

People

Unspecified

0

0

80

69

144

89

CAT

Unspecified

0

0

40

69

143

16

dog

Unspecified

0

0

96

82

176

87

具体实现

假如我们只想保留图片上的people和cat类,其他都删除,代码如下:

from xml.etree.ElementTree import ElementTree

from os import walk, path

def read_xml(in_path):

tree = ElementTree()

tree.parse(in_path)

return tree

def write_xml(tree, out_path):

tree.write(out_path, encoding="utf-8", xml_declaration=True)

def find_nodes(tree, path):

return tree.findall(path)

def del_node_by_target_classes(nodelist, target_classes_lower, tree_root):

for parent_node in nodelist:

children = parent_node.getchildren()

if (parent_node.tag == "object" and children[0].text.lower() not in target_classes_lower):

tree_root.remove(parent_node)

elif (parent_node.tag == "object" and children[0].text.lower() in target_classes_lower):

children[0].text = children[0].text.lower()

def get_fileNames(rootdir):

data_path = []

prefixs = []

for root, dirs, files in walk(rootdir, topdown=True):

for name in files:

pre, ending = path.splitext(name)

if ending != ".xml":

continue

else:

data_path.append(path.join(root, name))

prefixs.append(pre)

return data_path, prefixs

if __name__ == "__main__":

# get all the xml paths, prefixes if not used here

paths_xml, prefixs = get_fileNames("/home/yasin/old_labels/")

target_classes = ["PEOPLE", "CAT"] # target flags you want to keep

target_classes_lower = []

for i in range(len(target_classes)):

target_classes_lower.append(target_classes[i].lower()) # make sure your target is lowe-case

# print(target_classes_lower)

for i in range(len(paths_xml)):

# rename and save the corresponding xml

tree = read_xml(paths_xml[i])

# get tree node

tree_root = tree.getroot()

# get parent nodes

del_parent_nodes = find_nodes(tree, "./")

# get target classes and delete

target_del_node = del_node_by_target_classes(del_parent_nodes, target_classes_lower, tree_root)

# save output xml, 000001.xml

write_xml(tree, "/home/yasin/new_labels/{}.xml".format("%06d" % i))

按照上述代码,示例.xml变为如下.xml,可以看出我们删除了除people和cat类的类别(即dog类),并把保留类别的打标改成了小写:

test.jpg

C:\Users\yasin\Desktop\test

Unknown

400

300

3

0

people

Unspecified

0

0

80

69

144

89

cat

Unspecified

0

0

40

69

143

16

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[批量删除LabelImg制作的.xml中的部分标签值(删除.xml的节点值)]http://www.zyiz.net/tech/detail-90636.html

HTML批量删除标记,批量删除LabelImg制作的.xml中的部分标签值(删除.xml的节点值)...相关推荐

  1. 解决导入maven项目之后pom.xml中的project标签报错:批量删除没有下载完全的pom依赖bat脚本

    报错现象: 导入maven项目之后pom.xml中的project标签报错. 问题原因: 这个项目我来来回回导入的很多次,有些依赖没有下完全,只下了一半.当我再一次导入该项目时,那些没有下载完全的依赖 ...

  2. jsp页面中使用a标签进行删除请求时候使用弹出框确认后再删除

    jsp页面中使用a标签进行删除请求时候使用弹出框确认后再删除 一.使用背景 二.核心代码 2.1a标签 2.2js代码 三.运行的相关文件 3.1common.jsp 3.2index.jsp 3.3 ...

  3. 删除计算机网络无用设备,电脑设备和驱动器中没用的图标怎么删除

    误装2345手机助手后,虽然卸载但是仍然有烦人的我的手机图标,此经验用于帮助删除 1.按 win+r 找到" 运行 " 2.输入" regedit "打开注册表 ...

  4. 在计算机系统中对文件执行彻底删除,怎么让电脑删除文件时可以直接彻底进行删除...

    让电脑删除文件时可以直接彻底进行删除的方法是什么?我们使用电脑时删除的资料.文件都是会转存到回收站里面的,想要彻底删除还需要到回收站进行删除,不少用户感觉太麻烦了.那么有什么方法可以直接彻底删除文件呢 ...

  5. oracle删除表,让整个表从数据库中彻底消失

    删除普通表,并未真正删除表,只是把该表放在回收站中. drop table student_infor; 删除带约束的表 drop table tb_date_test cascade constra ...

  6. SAP如何批量设置采购信息记录删除标记

    用事务代码MEMASSIN(或者使用MASS,选择对象类型BUS3003即可) 选择表EINA,在选择字段LOEKZ,然后执行 放入你要设置的信息记录或者根据相应的选择条件进行筛选,执行 单机&quo ...

  7. 【MM系列】SAP里批量设置采购信息记录删除标记

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP里批量设置采购信息记录删除标记 ...

  8. wps如何删除括号里的内容_文档中怎么批量去除括号里面的答案 - 卡饭网

    在word2007文档中如何批量删除英文字母? 在word2007文档中如何批量删除英文字母? 在word2007文档中如何批量删除英文字母?          步骤 1.点击office word2 ...

  9. 怎么批量删除html里的字段,如何从Excel中的字符串中删除所有HTML标签?

    如何从Excel中的字符串中删除所有HTML标签? 如果您的工作表包含用HTML标记括起来的文本字符串,现在,您想要从字符串中删除所有HTML标记,以使单元格清晰可见,如下面的屏幕截图所示. 本文,我 ...

最新文章

  1. mysql索引检测_mysql检测重复索引
  2. Tomcat内存设置详解
  3. C#获取电脑IP、MAC地址示例代码
  4. php数据表格的重载,layui数据表格实现重载数据表格功能(搜索功能)
  5. syslog-ng配置说明
  6. 团队项目改进与详细设计
  7. Qt窗口部件——对话框QDialog
  8. WPF备忘录(1)有笑脸,有Popup
  9. Java入门学习笔记——郝斌(三)线程
  10. Linux vi 双屏显示,如何设置双屏显示器
  11. 逆水寒2021最新服务器,2021年3月25日常规服务器合并投票结果公告
  12. 【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Android高级篇下)...
  13. RDP、VNC、SPICE协议性能分析之网络带宽
  14. 一文弄懂L0、L1和L2正则化范式
  15. 匹兹堡大学申请条件计算机科学,匹兹堡大学计算机科学理学硕士研究生申请要求及申请材料要求清单...
  16. Servlet技术,response 生成图片验证码
  17. SaaS、PaaS、IaaS、aPaaS、iPaaS、RaaS、RPAaaS,傻傻分不清楚?
  18. 关键绩效指标与平衡计分卡(KPI/BSC)实战
  19. 电脑怎么录屏?推荐2个好用的win7录屏方法!
  20. git-p4 使用说明

热门文章

  1. Orange做机器学习特征工程
  2. Orange 学习3 - Evaluate模块简介-3
  3. 计算机专业全套教材pdf,计算机 5教材.pdf
  4. 1. 恼人的Multipart form data
  5. 每日好物分享:手机识别文字的软件哪个好用
  6. 用css让图片动起来,亲测有效,推荐使用!
  7. 计算机:上帝不掷骰子,人类居然让我们掷骰子?
  8. 连连直充1688跨境宝,如何在连连绑定跨境宝账号?
  9. 最早解决制约计算机汉字输入,摆脱键盘束缚 计算机时代的汉字情结
  10. Internet of things 译文