Skip to content
Snippets Groups Projects

Using the proper verify script depending on system

Merged Tiago de Freitas Pereira requested to merge fix-119 into master
All threads resolved!
@@ -8,34 +8,41 @@ A script to run biometric recognition baselines
from .. import load_resource
from .verify import main as verify
import os
from ..baseline import get_available_databases, search_preprocessor
from bob.extension.scripts.click_helper import verbosity_option
from bob.extension.scripts.click_helper import (
verbosity_option, log_parameters)
import click
import tempfile
import logging
import os
logger = logging.getLogger("bob.bio.base")
EPILOG = '''\b
Example:
$ bob bio baseline eigenface atnt -vvv
which will run the eigenface baseline (from bob.bio.face) on the atnt
database.
'''
@click.command(context_settings={'ignore_unknown_options': True,
'allow_extra_args': True})
'allow_extra_args': True}, epilog=EPILOG)
@click.argument('baseline', required=True)
@click.argument('database', required=True)
@click.option('--parallel-training', default='verify', show_default=True,
type=click.Choice(('verify', 'gmm', 'isv', 'ivector')),
help='Which script to use for training the algorithm. Some '
'algorithms would train more efficiently using a different '
'script.')
@verbosity_option()
@click.pass_context
def baseline(ctx, baseline, database, **kwargs):
def baseline(ctx, baseline, database, parallel_training, **kwargs):
"""Run a biometric recognition baseline.
\b
Example:
$ bob bio baseline eigenface atnt -vvv
which will run the eigenface baseline (from bob.bio.face) on the atnt
database.
\b
Check out all baselines available by running:
`resource.py --types baseline`
and all available databases by running:
@@ -51,6 +58,8 @@ def baseline(ctx, baseline, database, **kwargs):
Hint: pass `--result-directory <dir>` to set the directory for resulting score files
"""
log_parameters(logger)
# Triggering training for each baseline/database
loaded_baseline = load_resource(
baseline, 'baseline', package_prefix="bob.bio.")
@@ -61,7 +70,7 @@ def baseline(ctx, baseline, database, **kwargs):
preprocessor = loaded_baseline.preprocessors[db]
# this is the default sub-directory that is used
if "-T" in ctx.args or "--temp-directory" in ctx.args:
if "-T" in ctx.args or "--temp-directory" in ctx.args:
sub_directory = os.path.join(database, baseline)
else:
sub_directory = baseline
@@ -89,12 +98,31 @@ verbose = {verbose}
verbose=ctx.meta['verbosity'],
)
if parallel_training == "verify":
from .verify import main
elif parallel_training == "gmm":
from bob.bio.gmm.script.verify_gmm import main
elif parallel_training == "isv":
from bob.bio.gmm.script.verify_isv import main
elif parallel_training == "ivector":
from bob.bio.gmm.script.verify_ivector import main
algorithm = loaded_baseline.algorithm
if 'gmm' in algorithm and parallel_training != 'gmm':
logger.warning("GMM algorithms can train faster using the "
"``--parallel-training gmm`` option.")
if 'isv' in algorithm and parallel_training != 'isv':
logger.warning("ISV algorithms can train faster using the "
"``--parallel-training isv`` option.")
if 'ivector' in algorithm and parallel_training != 'ivector':
logger.warning("ivector algorithms can train faster using the "
"``--parallel-training ivector`` option.")
with tempfile.NamedTemporaryFile(mode='w+t', prefix='{}_'.format(baseline),
suffix='.py', delete=False, dir='.') as f:
f.write(config)
f.flush()
f.seek(0)
verify([f.name] + ctx.args)
main([f.name] + ctx.args)
click.echo("You may want to delete `{}' after the experiments are "
"finished running.".format(f.name))
"finished running.".format(f.name))
Loading