class ObjectIndex(): def __init__(self, dbfile, code_len): self.db = ObjectTable(dbfile, code_len) self.quantizer = SQ() def assign_data(self, X, boxes, img_ids): codes = self.quantizer.encode(X) self.ivf.insert_bulk_data(img_ids, boxes, codes) def clear_all_data(self): self.db.reset_table() def __scan_child_level_data(self, query, code): for i in range(256): scores[i] = self.__get_classifier_score(query, [code, i]) return scores def __get_highest_child_code(self, query, code, num = 1): scores = self.__scan_child_level_data(query, code) sort(scores) # numこ選んでくる return code def get_top_ranked_list(self, query, num): """ Main code to get result by query Assume M=4, code with highest score is selected at 1st and 2nd level *num* highest score are selected at 3rd level all entry are selected at 4th (final) level """ first_code = self.__get_highest_child_code(query, []) second_code = self.__get_highest_child_code(query, [first_code]) third_codes = self.__get_highest_child_code(query, [first_code], num) alldata = [] for c in third_codes: # data = __get_children_data([first_code, second_code, c]) fine_codes, boxes, img_ids = self.ivf.fetch_data_from_code( [first_code, second_code, c]) scores = get_scores(fine_codes, query) return scores, boxes, img_ids
def __init__(self, dbfile, code_len): self.db = ObjectTable(dbfile, code_len) self.quantizer = SQ()