Extension_image_recognition/TestFeaturesVairo.py

72 lines
2.0 KiB
Python
Executable File

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()