diff --git a/bob/bio/base/script/score.py b/bob/bio/base/script/score.py index e6b6436e08fb8aef04da8904433e71c88bbd9955..224df9d237af0ffead6c0eba2eeb92ca2f8e36d0 100644 --- a/bob/bio/base/script/score.py +++ b/bob/bio/base/script/score.py @@ -17,8 +17,9 @@ def command_line_arguments(command_line_parameters): parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('-a', '--algorithm', metavar = 'x', nargs = '+', required = True, help = 'Biometric recognition; registered algorithms are: %s' % bob.bio.base.resource_keys('algorithm')) - parser.add_argument('-P', '--projector-file', metavar = 'FILE', help = 'The pre-trained extractor file, if the algorithm performs projection') + parser.add_argument('-P', '--projector-file', metavar = 'FILE', help = 'The pre-trained projector file, if the algorithm performs projection') parser.add_argument('-E', '--enroller-file' , metavar = 'FILE', help = 'The pre-trained enroller file, if the extractor requires enroller training') + parser.add_argument('-e', '--extractor', metavar = 'x', nargs = '+', help = 'Feature extraction -- required when algorithm performs projection; registered feature extractors are: %s' % bob.bio.base.resource_keys('extractor')) parser.add_argument('-m', '--model-files', metavar = 'MODEL', nargs='+', required = True, help = "A list of enrolled model files") parser.add_argument('-p', '--probe-files', metavar = 'PROBE', nargs='+', required = True, help = "A list of extracted feature files used as probes") @@ -51,11 +52,18 @@ def main(command_line_parameters=None): models, probes = {}, {} logger.debug("Loading %d models", len(args.model_files)) for m in args.model_files: models[m] = algorithm.read_model(m) - logger.debug("Loading %d probes", len(args.probe_files)) - for p in args.probe_files: probes[p] = algorithm.read_probe(p) if algorithm.performs_projection: + if args.extractor is None: + raise ValueError("The --extractor is required when the algorithm requires projection") + logger.debug("Loading extractor") + extractor = bob.bio.base.load_resource(' '.join(args.extractor), "extractor") + logger.debug("Loading %d probes", len(args.probe_files)) + for p in args.probe_files: probes[p] = extractor.read_feature(p) logger.debug("Projecting %d probes", len(args.probe_files)) for p in probes: probes[p] = algorithm.project(probes[p]) + else: + logger.debug("Loading %d probes", len(args.probe_files)) + for p in args.probe_files: probes[p] = algorithm.read_probe(p) logger.info("Computing scores") for p in args.probe_files: