这段时间将caltech数据集转换成voc格式的的时候,发现存在一丢丢问题,就是将Annotations文件夹里面的xml转换为txt后,训练的时候才发现被标注的几张图片不存在数据集中,图片太多,一张纸检查不好操作,所以就写了个简单的py文件来检查一下txt文件中哪些路径不存在,然后重新生产一个txt文件(里面存储的是图片路径和bbox的信息)即可
下图是txt文件存储的内容,包括图片路径和bbox的信息
所以我们看到,路径和bbox之间有一个空格,所以给我们创造了一个利用slpit()方法的机会
code:
# 分别检查三个txt文件:2007_train.txt,2007_test.txt,2007_val,txt sets=[('2007', 'train'), ('2007', 'val'), ('2007', 'test')] import os def convert_annotation(year, file_id): # 打开相应的txt文件 with open("./{}_{}.txt".format(year,file_id)) as f: # 对整个文件进行读取,将每一行作为一个元素以列表的格式返回 all = f.readlines() # for循环历遍每一个元素 for i in all: # split()方法里面不填写表示按空格切割,返回一个列表 a = i.split() # 获取第一个元素,也就是获取对应的路径 path_test = a[0] # os.path.exist(path)判断路径是否存在,存在返回True,否则返回False if os.path.exists(path_test): # 如果路径存在则以写入的形式打开一个txt文件 with open("./{}_{}_update.txt".format(year,file_id),"a") as f: # 重新写入当前元素 f.write(i) f.close() f.close() # 历遍2007_train.txt,2007_test.txt,2007_val,txt for year, file_id in sets: convert_annotation(year,file_id)The end.