import json from Searcher import Searcher import WebAppSettings as settings def search_by_img(img_file, lf_impl, rescorer=False): if lf_impl is not "GEM": rescorer = True results = searcher.search_by_img(img_file, settings.k, rescorer, lf_impl) return results if __name__ == '__main__': testset= "/media/Data/data/extension/test_set/listfiles.txt" settings.load_setting('conf_test.json') global searcher searcher = Searcher() # Using readlines() file1 = open(testset, 'r') Lines = file1.readlines() count = 0 # Strips the newline character features = ["GEM", "ORB", "LATCH", "BEBLID"] counters = {"GEM":0, "ORB":0, "LATCH":0, "BEBLID":0} # features = ["GEM", "BEBLID"] # counters = {"GEM":0, "BEBLID":0} out_csv = '' for line in Lines: classname_q = line.replace("/media/Data/data/extension/test_set/", "").split("/")[0] filename_q = line.replace("/media/Data/data/extension/test_set/", "").split("/")[1] print("Query {}: {}".format(count, line.strip())) out_line = '' out_line = out_line + f'{classname_q},{filename_q};' for f in features: results = search_by_img(line.strip(), f) if results is None: results = ["unknown", 1.0] classname = results[0][0].split("/")[0] filename = results[0][0].split("/")[1] if (classname_q == classname): counters[f] = counters[f] + 1 print(results[0][0] + '", "conf":' + str(results[0][1])) out_line = out_line + f'{classname},{filename},{results[0][1]};' print(out_line) out_csv = out_line + '\n' count += 1 print(f'{f}: {counters}/{count}') print(f'GEM accuracy: {counters["GEM"]}/{count}') print(f'BEBLID accuracy: {counters["BEBLID"]}/{count}') #open text file out_file = open("out_csv.txt", "w") #write string to file out_file.write(out_csv) #close file out_file.close()