def verify(self, account, test_signature): # TODO: get reference signatures from db. reference_signatures = self.database.load(account) if not reference_signatures: return Ret(False, ErrorCode.ReferenceSignatureShortage) print reference_signatures print "reference signature count : %d" % len(reference_signatures) test_signature = self._pre_process_for_signle_signature(test_signature) test_signature = self._reconstruct_signature(test_signature) personTest = PersonTest(self.config, reference_signatures) features = personTest.calc_dis(test_signature) res = self.model.predict(features) return Ret(res, None)
def test(self): self.config.logger.info("Start test") count = 1 test_set = self.test_set if self.config.TrainSetInclude: test_set.extend(self.train_set) forgery_test_result = [] genuine_test_result = [] random_test_result = [] genuine_test_dis = [] forgery_test_dis = [] falseRejectCount = 0 falseAcceptSkillCount = 0 falseAcceptRandomCount = 0 for i in range(len(test_set)): one_test_set = test_set[i] self.config.logger.info("Test signature: %d" % count) count += 1 personTest = PersonTest( self.config, one_test_set["genuine"][0:self.config.RefCount]) genuine_set = one_test_set["genuine"][self.config.RefCount:] forgery_set = one_test_set["forgery"] random_set = [] for j in range(len(genuine_set)): sig = genuine_set[j] dis = personTest.calc_dis(sig) if self.config.Regressor == "PCA": res = self.driver.transform(dis) res = res.tolist()[0][0] else: res = self.driver.predict(dis) res = res.tolist()[0] genuine_test_dis.append(res) self.config.logger.debug("Genuine Test: Result: %s, %s" % (res, dis)) genuine_test_result.append(res) if (res > 0.5): self.config.logger.debug("FalseReject: uid: %d, sid: %d" % (i, j)) falseRejectCount += 1 for j in range(len(forgery_set)): sig = forgery_set[j] dis = personTest.calc_dis(sig) if self.config.Regressor == "PCA": res = self.driver.transform(dis) res = res.tolist()[0][0] else: res = self.driver.predict(dis) res = res.tolist()[0] forgery_test_dis.append(res) self.config.logger.debug("Forgery Test: Result: %s, %s" % (res, dis)) forgery_test_result.append(res) if (res <= 0.5): self.config.logger.debug("FalseAccept: uid: %d, sid: %d" % (i, j)) falseAcceptSkillCount += 1 if self.config.RandomForgeryInclude: for j in range(len(test_set)): if i == j: continue random_set.extend(test_set[j]["genuine"]) random_set.extend(test_set[j]["forgery"]) # train set included for one_train_set in self.train_set: random_set.extend(one_train_set["genuine"]) random_set.extend(one_train_set["forgery"]) for j in range(len(random_set)): sig = random_set[j] dis = personTest.calc_dis(sig) if self.config.Regressor == "PCA": res = self.driver.transform(dis) res = res.tolist()[0][0] else: res = self.driver.predict(dis) res = res.tolist()[0] forgery_test_dis.append(res) self.config.logger.debug("Random Test: Result: %s, %s" % (res, dis)) random_test_result.append(res) if (res <= 0.5): self.config.logger.debug( "FalseAccept: uid: %d, sig: %d" % (i, j)) falseAcceptRandomCount += 1 self.config.logger.info("genuine test set count: %d" % len(genuine_test_result)) self.config.logger.info("false reject count: %d" % falseRejectCount) self.config.logger.info( "false rejected rate: %f" % (float(falseRejectCount) / float(len(genuine_test_result)))) self.config.logger.info("forgery test set count: %d" % len(forgery_test_result)) self.config.logger.info("false accepted count: %d" % falseAcceptSkillCount) self.config.logger.info( "false accepted rate: %f" % (float(falseAcceptSkillCount) / float(len(forgery_test_result)))) if self.config.RandomForgeryInclude: self.config.logger.info("random test set count: %d" % len(random_test_result)) self.config.logger.info("false accepted count: %d" % falseAcceptRandomCount) self.config.logger.info("false accepted rate: %f" % (float(falseAcceptRandomCount) / float(len(random_test_result)))) # Compute Equal Error Rate genuine_test_dis_list = sorted(genuine_test_dis, reverse=True) # desending order forgery_test_dis_list = sorted(forgery_test_dis) # asending order lastGap = 100.0 genuineCount = len(genuine_test_dis_list) forgeryCount = len(forgery_test_dis_list) falseRejectRate = None falseAcceptRate = None for i in range(genuineCount): pivotal = genuine_test_dis_list[i] falseRejectRate = float(i) / genuineCount j = 0 while j < forgeryCount and forgery_test_dis_list[j] <= pivotal: j += 1 falseAcceptRate = float(j) / forgeryCount gap = abs(falseAcceptRate - falseRejectRate) if gap == 0.0: break elif gap < lastGap: lastGap = gap else: break self.config.logger.info( "falseRejectRate: %f, falseAcceptRate: %f, gap: %f" % (falseRejectRate, falseAcceptRate, lastGap)) self.config.logger.info("TestResultGenuine : %s" % genuine_test_dis) self.config.logger.info("TestResultForgery : %s" % forgery_test_dis)
def test(self): self.config.logger.info("Start test") count = 1 test_set = self.test_set if self.config.TrainSetInclude: test_set.extend(self.train_set) forgery_test_result = [] genuine_test_result = [] random_test_result = [] genuine_test_dis = [] forgery_test_dis = [] falseRejectCount = 0 falseAcceptSkillCount = 0 falseAcceptRandomCount = 0 for i in range(len(test_set)): one_test_set = test_set[i] self.config.logger.info("Test signature: %d" % count) count += 1 personTest = PersonTest(self.config, one_test_set["genuine"][0 : self.config.RefCount]) genuine_set = one_test_set["genuine"][self.config.RefCount :] forgery_set = one_test_set["forgery"] random_set = [] for j in range(len(genuine_set)): sig = genuine_set[j] dis = personTest.calc_dis(sig) if self.config.Regressor == "PCA": res = self.driver.transform(dis) res = res.tolist()[0][0] else: res = self.driver.predict(dis) res = res.tolist()[0] genuine_test_dis.append(res) self.config.logger.debug("Genuine Test: Result: %s, %s" % (res, dis)) genuine_test_result.append(res) if res > 0.5: self.config.logger.debug("FalseReject: uid: %d, sid: %d" % (i, j)) falseRejectCount += 1 for j in range(len(forgery_set)): sig = forgery_set[j] dis = personTest.calc_dis(sig) if self.config.Regressor == "PCA": res = self.driver.transform(dis) res = res.tolist()[0][0] else: res = self.driver.predict(dis) res = res.tolist()[0] forgery_test_dis.append(res) self.config.logger.debug("Forgery Test: Result: %s, %s" % (res, dis)) forgery_test_result.append(res) if res <= 0.5: self.config.logger.debug("FalseAccept: uid: %d, sid: %d" % (i, j)) falseAcceptSkillCount += 1 if self.config.RandomForgeryInclude: for j in range(len(test_set)): if i == j: continue random_set.extend(test_set[j]["genuine"]) random_set.extend(test_set[j]["forgery"]) # train set included for one_train_set in self.train_set: random_set.extend(one_train_set["genuine"]) random_set.extend(one_train_set["forgery"]) for j in range(len(random_set)): sig = random_set[j] dis = personTest.calc_dis(sig) if self.config.Regressor == "PCA": res = self.driver.transform(dis) res = res.tolist()[0][0] else: res = self.driver.predict(dis) res = res.tolist()[0] forgery_test_dis.append(res) self.config.logger.debug("Random Test: Result: %s, %s" % (res, dis)) random_test_result.append(res) if res <= 0.5: self.config.logger.debug("FalseAccept: uid: %d, sig: %d" % (i, j)) falseAcceptRandomCount += 1 self.config.logger.info("genuine test set count: %d" % len(genuine_test_result)) self.config.logger.info("false reject count: %d" % falseRejectCount) self.config.logger.info("false rejected rate: %f" % (float(falseRejectCount) / float(len(genuine_test_result)))) self.config.logger.info("forgery test set count: %d" % len(forgery_test_result)) self.config.logger.info("false accepted count: %d" % falseAcceptSkillCount) self.config.logger.info( "false accepted rate: %f" % (float(falseAcceptSkillCount) / float(len(forgery_test_result))) ) if self.config.RandomForgeryInclude: self.config.logger.info("random test set count: %d" % len(random_test_result)) self.config.logger.info("false accepted count: %d" % falseAcceptRandomCount) self.config.logger.info( "false accepted rate: %f" % (float(falseAcceptRandomCount) / float(len(random_test_result))) ) # Compute Equal Error Rate genuine_test_dis_list = sorted(genuine_test_dis, reverse=True) # desending order forgery_test_dis_list = sorted(forgery_test_dis) # asending order lastGap = 100.0 genuineCount = len(genuine_test_dis_list) forgeryCount = len(forgery_test_dis_list) falseRejectRate = None falseAcceptRate = None for i in range(genuineCount): pivotal = genuine_test_dis_list[i] falseRejectRate = float(i) / genuineCount j = 0 while j < forgeryCount and forgery_test_dis_list[j] <= pivotal: j += 1 falseAcceptRate = float(j) / forgeryCount gap = abs(falseAcceptRate - falseRejectRate) if gap == 0.0: break elif gap < lastGap: lastGap = gap else: break self.config.logger.info( "falseRejectRate: %f, falseAcceptRate: %f, gap: %f" % (falseRejectRate, falseAcceptRate, lastGap) ) self.config.logger.info("TestResultGenuine : %s" % genuine_test_dis) self.config.logger.info("TestResultForgery : %s" % forgery_test_dis)
def test(self): self.config.logger.info("Start test") count = 1 test_set = self.test_set if self.config.TrainSetInclude: test_set.extend(self.train_set) forgery_test_result = [] genuine_test_result = [] random_test_result = [] genuine_test_dis = [] forgery_test_dis = [] for i in range(len(test_set)): one_test_set = test_set[i] self.config.logger.info("Test signature: %d" % count) count += 1 personTest = PersonTest( self.config, one_test_set["genuine"][0:self.config.RefCount]) genuine_set = one_test_set["genuine"][self.config.RefCount:] forgery_set = one_test_set["forgery"] random_set = [] for j in range(len(genuine_set)): sig = genuine_set[j] dis = personTest.calc_dis(sig) res = self.driver.predict(dis) self.config.logger.info("Genuine Test: Result: %s, %s" % (res, dis)) genuine_test_result.append(res) if (res != 1): self.config.logger.fatal("FalseReject: uid: %d, sid: %d" % (i, j)) for j in range(len(forgery_set)): sig = forgery_set[j] dis = personTest.calc_dis(sig) res = self.driver.predict(dis) self.config.logger.info("Forgery Test: Result: %s, %s" % (res, dis)) forgery_test_result.append(res) if (res != 0): self.config.logger.fatal("FalseAccept: uid: %d, sid: %d" % (i, j)) if self.config.RandomForgeryInclude: for j in range(len(test_set)): if i == j: continue random_set.extend(test_set[j]["genuine"]) random_set.extend(test_set[j]["forgery"]) # train set included for one_train_set in self.train_set: random_set.extend(one_train_set["genuine"]) random_set.extend(one_train_set["forgery"]) for j in range(len(random_set)): sig = random_set[j] dis = personTest.calc_dis(sig) res = self.driver.predict(dis) self.config.logger.info("Random Test: Result: %s, %s" % (res, dis)) random_test_result.append(res) if (res != 0): self.config.logger.fatal( "FalseAccept: uid: %d, sig: %d" % (i, j)) self.config.logger.info("genuine test set count: %d" % len(genuine_test_result)) self.config.logger.info("true accepted count: %d" % sum(genuine_test_result)) self.config.logger.info( "false rejected rate: %f" % (sum(genuine_test_result) / float(len(genuine_test_result)))) self.config.logger.info("forgery test set count: %d" % len(forgery_test_result)) self.config.logger.info("false accepted count: %d" % sum(forgery_test_result)) self.config.logger.info( "false accepted rate: %f" % (1 - sum(forgery_test_result) / float(len(forgery_test_result)))) if self.config.RandomForgeryInclude: self.config.logger.info("random test set count: %d" % len(random_test_result)) self.config.logger.info("false accepted count: %d" % sum(random_test_result)) self.config.logger.info( "false accepted rate: %f" % (1 - sum(random_test_result) / float(len(random_test_result))))
def test(self): self.config.logger.info("Start test") count = 1 test_set = self.test_set if self.config.TrainSetInclude: test_set.extend(self.train_set) forgery_test_result = [] genuine_test_result = [] random_test_result = [] genuine_test_dis = [] forgery_test_dis = [] for i in range(len(test_set)): one_test_set = test_set[i] self.config.logger.info("Test signature: %d" % count) count += 1 personTest = PersonTest(self.config, one_test_set["genuine"][0 : self.config.RefCount]) genuine_set = one_test_set["genuine"][self.config.RefCount :] forgery_set = one_test_set["forgery"] random_set = [] for j in range(len(genuine_set)): sig = genuine_set[j] dis = personTest.calc_dis(sig) res = self.driver.predict(dis) self.config.logger.info("Genuine Test: Result: %s, %s" % (res, dis)) genuine_test_result.append(res) if res != 1: self.config.logger.fatal("FalseReject: uid: %d, sid: %d" % (i, j)) for j in range(len(forgery_set)): sig = forgery_set[j] dis = personTest.calc_dis(sig) res = self.driver.predict(dis) self.config.logger.info("Forgery Test: Result: %s, %s" % (res, dis)) forgery_test_result.append(res) if res != 0: self.config.logger.fatal("FalseAccept: uid: %d, sid: %d" % (i, j)) if self.config.RandomForgeryInclude: for j in range(len(test_set)): if i == j: continue random_set.extend(test_set[j]["genuine"]) random_set.extend(test_set[j]["forgery"]) # train set included for one_train_set in self.train_set: random_set.extend(one_train_set["genuine"]) random_set.extend(one_train_set["forgery"]) for j in range(len(random_set)): sig = random_set[j] dis = personTest.calc_dis(sig) res = self.driver.predict(dis) self.config.logger.info("Random Test: Result: %s, %s" % (res, dis)) random_test_result.append(res) if res != 0: self.config.logger.fatal("FalseAccept: uid: %d, sig: %d" % (i, j)) self.config.logger.info("genuine test set count: %d" % len(genuine_test_result)) self.config.logger.info("true accepted count: %d" % sum(genuine_test_result)) self.config.logger.info( "false rejected rate: %f" % (sum(genuine_test_result) / float(len(genuine_test_result))) ) self.config.logger.info("forgery test set count: %d" % len(forgery_test_result)) self.config.logger.info("false accepted count: %d" % sum(forgery_test_result)) self.config.logger.info( "false accepted rate: %f" % (1 - sum(forgery_test_result) / float(len(forgery_test_result))) ) if self.config.RandomForgeryInclude: self.config.logger.info("random test set count: %d" % len(random_test_result)) self.config.logger.info("false accepted count: %d" % sum(random_test_result)) self.config.logger.info( "false accepted rate: %f" % (1 - sum(random_test_result) / float(len(random_test_result))) )