我写了一个代码来阅读Oxford building dataset。根据官网,该数据集包含 5062 张图像和 groundtruth 来说明哪一张属于 [good,bad,ok,junk]。在groundtruth中没有“坏”。大约有 100 个查询文件。因此,应该有大约 4900 张图像。
我的代码如下:
files = os.listdir('images')
files=sorted(files)
gt = [os.path.join('groundtruth', a) for a in os.listdir('groundtruth')]
gt_good = list(set([a for a in gt if 'good' in a]))
gt_ok = list(set([a for a in gt if 'ok' in a]))
gt_junk = list(set([a for a in gt if 'junk' in a]))
gt_query= list(set([a for a in gt if 'query' in a]))
z=0
cnt=0
allnames=[]
for text_file in gt_good:
with open(text_file, 'r', encoding='utf-8') as f:
names=(list(map(lambda a:a.strip(), f.readlines())))
for name in names:
allnames.append(name+".jpg")
z=z+1
for text_file in gt_ok:
with open(text_file, 'r', encoding='utf-8') as f:
names = list(map(lambda a:a.strip(), f.readlines()))
for name in names:
allnames.append(name+".jpg")
z=z+1
for text_file in gt_junk:
with open(text_file, 'r', encoding='utf-8') as f:
names = list(map(lambda a:a.strip(), f.readlines()))
for name in names:
allnames.append(name+".jpg")
z=z+1
for text_file in gt_query:
with open(text_file, 'r', encoding='utf-8') as f:
names=(list(map(lambda a:a.strip(), f.readlines())))
for name in names:
allnames.append(name+".jpg")
z=z+1
z是一个计数器,用于获取已处理的项目数。但是项目数计算的是 4390 而不是 5062。为什么?创建者是否从“groundtruth”中更改/删除文件(非常不可能)或者我在我的代码中犯了一个愚蠢的错误?