在模型训练和数据标注的时候经常出现一些需要修改标签信息的情况,或者说想要单独整理一类的标签出来审核或者训练,通常我们用labelimg来一张张图片审核修改是非常吃力的,所以我写了一个脚本方便大家对标签信息做一些自动化操作。请注意使用的时候需要在要保存的文件夹路径下创建名为img和xml的空文件夹
这篇文章主要解决两个需求:
1、在整个数据集中将一个标签集合的图片和标注筛除出来,比如在大数据集中有ABC三个类,如果此时我想要将B类的图片和标注单独分出来并且选出来的标注中会删除A和C,可以使用下面这个脚本:
# 从原始img和xml中筛选拥有目标label的img和xml到新路径下,并且新xml中只保留我要的标签
import os
import shutil
from pathlib import Path
import xml.etree.ElementTree as ET
output_dir = r'new_path' # 筛选修改后的新xml保存路径
input_dir = r'raw_path' # 原始的xml文件夹
# 可以自定义自己想要筛选的标签,
# large_labels = ['A', 'B', 'C']
target_labels = ['B']. # 只需要打标签集合的子集就行了,比如这里就只会将带有B标签的图片选出来并且对应的标注中不会有A、C的标签信息
# 初始化路径
input_dir_path = Path(input_dir)
output_dir_path = Path(output_dir)
new_xml_dir = output_dir_path / 'xml'
raw_xml_dir = input_dir_path / 'xml'
new_img_dir = output_dir_path / 'img'
raw_img_dir = input_dir_path / 'img'
n = 0 # 统计筛选的数量
img_names = [] # 记录筛选出来的图片名称
for xml in os.listdir(raw_xml_dir):
raw_xml_path =

最低0.47元/天 解锁文章
2190

被折叠的 条评论
为什么被折叠?



