0

我写了一个代码来阅读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”中更改/删除文件(非常不可能)或者我在我的代码中犯了一个愚蠢的错误?

4

0 回答 0