有些人想讲多个独立的数据集合并一起训练,此时往往遇到一个问题,比如有两类,这两类原来打标签时,类别序号均为0,现在就不能直接合并在一起,需要将某一类标签改为1,然后再合并,才不至于导致种类混乱(否则标签序号只有0,认为是一类,但配置的nc又是2)
一、思路
先不合并标签,只对一个数据集标签文件夹下的所有txt进行修改。
二、程序
import os
import re
# 路径
path = 'C:/Users/CNXIGAO13/Desktop/lights_labels/'
# 文件列表
files = []
for file in os.listdir(path):
if file.endswith(".txt"):
files.append(path+file)
# 逐文件读取-修改-重写
for file in files:
with open(file, 'r') as f:
new_data = re.sub('^1', '0', f.read(), flags=re.MULTILINE) # 将列中的1替换为0
with open(file, 'w') as f:
f.write(new_data)
三、注意事项
要注意的是,有的时候两个数据集都不止一类,比如,A数据集3类(0-2),B数据集4类(0-3),而且A数据集的序号为1的类跟B数据集的序号为3的类是同一类,这处理的时候要小心,比如修改B数据集,先将B数据集的txt下的序号为0,1,2分别改成4,5,6(注意不能是3,这会跟原有的3混合一起),然后将序号3改成1,再将4改成3,5改成4,6改成5。