From 379705601734146c1cf7b912e410e81e8b949e9f Mon Sep 17 00:00:00 2001 From: Amir MOHAMMADI <amir.mohammadi@idiap.ch> Date: Wed, 27 Apr 2016 16:07:18 +0200 Subject: [PATCH] Fixed save and load. Wrote test cases for scripts. --- bob/fusion/base/algorithm/Algorithm.py | 53 +----- bob/fusion/base/algorithm/AlgorithmBob.py | 52 ++++++ bob/fusion/base/algorithm/LLR.py | 4 +- bob/fusion/base/algorithm/MLP.py | 5 +- bob/fusion/base/algorithm/__init__.py | 1 + bob/fusion/base/data/scores-dev-1 | 120 +++++++++++++ bob/fusion/base/data/scores-dev-2 | 120 +++++++++++++ bob/fusion/base/data/scores-eval-1 | 160 ++++++++++++++++++ bob/fusion/base/data/scores-eval-2 | 160 ++++++++++++++++++ bob/fusion/base/script/bob_fuse.py | 6 +- .../script/plot_fusion_decision_boundary.py | 16 +- bob/fusion/base/test/test_scripts.py | 58 +++++++ 12 files changed, 693 insertions(+), 62 deletions(-) create mode 100644 bob/fusion/base/algorithm/AlgorithmBob.py create mode 100644 bob/fusion/base/data/scores-dev-1 create mode 100644 bob/fusion/base/data/scores-dev-2 create mode 100644 bob/fusion/base/data/scores-eval-1 create mode 100644 bob/fusion/base/data/scores-eval-2 diff --git a/bob/fusion/base/algorithm/Algorithm.py b/bob/fusion/base/algorithm/Algorithm.py index f08ab93..ac78197 100644 --- a/bob/fusion/base/algorithm/Algorithm.py +++ b/bob/fusion/base/algorithm/Algorithm.py @@ -112,10 +112,11 @@ class Algorithm(object): extensions such as model_file and model_file[:-3]+'hdf5'. """ # support for bob machines - if hasattr(self, "machine"): - self.save_bob(model_file) + if hasattr(self, "custom_save"): + self.custom_save(model_file) else: with open(model_file, "wb") as f: + pickle.dump(type(self), f) pickle.dump(self, f) def load(self, model_file): @@ -128,46 +129,8 @@ class Algorithm(object): A new instance of the loaded algorithm. """ with open(model_file, "rb") as f: - temp = pickle.load(f) - if isinstance(temp, Algorithm): - return temp - else: - return self.load_bob(model_file) - - def _get_hdf5_file(self, model_file): - return model_file[:-3] + 'hdf5' - - def save_bob(self, model_file): - # dump preprocessors in a pickle file because - # we don't know how they look like - # saves the class to create it later. - with open(model_file, 'wb') as f: - pickle.dump(self.preprocessors, f) - pickle.dump(type(self), f) - # just for consistent string representation - pickle.dump(self._kwargs, f) - - d5 = bob.io.base.HDF5File(self._get_hdf5_file(model_file), "w") - try: - self.machine.save(d5) - finally: - d5.close() - - def load_bob(self, model_file): - # load preprocessors and the class - with open(model_file, "rb") as f: - preprocessors = pickle.load(f) - myclass = pickle.load(f) - _kwargs = pickle.load(f) - - myinstance = myclass(preprocessors=preprocessors) - # just for consistent string representation - myinstance._kwargs.update(_kwargs) - - d5 = bob.io.base.HDF5File(self._get_hdf5_file(model_file)) - try: - myinstance.machine.load(d5) - finally: - d5.close() - - return myinstance + algo_class = pickle.load(f) + algo = algo_class() + if not hasattr(algo, 'custom_save'): + return pickle.load(f) + return algo.load(model_file) diff --git a/bob/fusion/base/algorithm/AlgorithmBob.py b/bob/fusion/base/algorithm/AlgorithmBob.py new file mode 100644 index 0000000..ed5c3eb --- /dev/null +++ b/bob/fusion/base/algorithm/AlgorithmBob.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +from __future__ import division +from __future__ import absolute_import + +import pickle +from .Algorithm import Algorithm + +import bob.core +logger = bob.core.log.setup("bob.fusion.base") + + +class AlgorithmBob(Algorithm): + """A class to be used in score fusion using bob machines.""" + + def _get_hdf5_file(self, model_file): + return model_file[:-3] + 'hdf5' + + def custom_save(self, model_file): + # dump preprocessors in a pickle file because + # we don't know how they look like + # saves the class to create it later. + with open(model_file, 'wb') as f: + pickle.dump(type(self), f) + pickle.dump(self.preprocessors, f) + # just for consistent string representation + pickle.dump(self._kwargs, f) + + d5 = bob.io.base.HDF5File(self._get_hdf5_file(model_file), "w") + try: + self.machine.save(d5) + finally: + d5.close() + + def load(self, model_file): + # load preprocessors and the class + with open(model_file, "rb") as f: + myclass = pickle.load(f) + preprocessors = pickle.load(f) + _kwargs = pickle.load(f) + + myinstance = myclass(preprocessors=preprocessors) + # just for consistent string representation + myinstance._kwargs.update(_kwargs) + + d5 = bob.io.base.HDF5File(self._get_hdf5_file(model_file)) + try: + myinstance.machine.load(d5) + finally: + d5.close() + + return myinstance diff --git a/bob/fusion/base/algorithm/LLR.py b/bob/fusion/base/algorithm/LLR.py index e637344..fa4fcac 100644 --- a/bob/fusion/base/algorithm/LLR.py +++ b/bob/fusion/base/algorithm/LLR.py @@ -5,13 +5,13 @@ from __future__ import absolute_import import bob.learn.linear -from .Algorithm import Algorithm +from .AlgorithmBob import AlgorithmBob import logging logger = logging.getLogger("bob.fusion.base") -class LLR(Algorithm): +class LLR(AlgorithmBob): """LLR Score fusion using Bob""" def __init__(self, diff --git a/bob/fusion/base/algorithm/MLP.py b/bob/fusion/base/algorithm/MLP.py index f707761..e3898e8 100644 --- a/bob/fusion/base/algorithm/MLP.py +++ b/bob/fusion/base/algorithm/MLP.py @@ -6,16 +6,15 @@ from __future__ import absolute_import import bob.learn.mlp import bob.core.random import bob.io.base -import pickle -from .Algorithm import Algorithm +from .AlgorithmBob import AlgorithmBob from .mlp_train_helper import MLPTrainer import bob.core logger = bob.core.log.setup("bob.fusion.base") -class MLP(Algorithm): +class MLP(AlgorithmBob): """This MLP is implemented using the bob tools. The preprocessors used with this class should be pickleable. """ diff --git a/bob/fusion/base/algorithm/__init__.py b/bob/fusion/base/algorithm/__init__.py index 25f3fc1..0927c29 100644 --- a/bob/fusion/base/algorithm/__init__.py +++ b/bob/fusion/base/algorithm/__init__.py @@ -1,4 +1,5 @@ from .Algorithm import Algorithm +from .AlgorithmBob import AlgorithmBob from .Weighted_Sum import Weighted_Sum from .MLP import MLP from .LLR import LLR diff --git a/bob/fusion/base/data/scores-dev-1 b/bob/fusion/base/data/scores-dev-1 new file mode 100644 index 0000000..b414412 --- /dev/null +++ b/bob/fusion/base/data/scores-dev-1 @@ -0,0 +1,120 @@ +10 3 010/devel/real/client003_session01_webcam_authenticate_adverse_1 -0.318633920541 +10 3 010/devel/real/client003_session01_webcam_authenticate_adverse_2 -0.334105116697 +10 3 010/devel/real/client003_session01_webcam_authenticate_controlled_1 0.252805861224 +10 3 010/devel/real/client003_session01_webcam_authenticate_controlled_2 0.702777920228 +10 5 010/devel/real/client005_session01_webcam_authenticate_adverse_1 0.00330252948533 +10 5 010/devel/real/client005_session01_webcam_authenticate_adverse_2 0.0389028510697 +10 5 010/devel/real/client005_session01_webcam_authenticate_controlled_1 0.352103133345 +10 5 010/devel/real/client005_session01_webcam_authenticate_controlled_2 0.519323232218 +10 10 010/devel/real/client010_session01_webcam_authenticate_adverse_1 2.99414793238 +10 10 010/devel/real/client010_session01_webcam_authenticate_adverse_2 3.02413769254 +10 10 010/devel/real/client010_session01_webcam_authenticate_controlled_1 4.23217945811 +10 10 010/devel/real/client010_session01_webcam_authenticate_controlled_2 3.65998581438 +10 15 010/devel/real/client015_session01_webcam_authenticate_adverse_1 0.618642777295 +10 15 010/devel/real/client015_session01_webcam_authenticate_adverse_2 0.790641184615 +10 15 010/devel/real/client015_session01_webcam_authenticate_controlled_1 0.96680158608 +10 15 010/devel/real/client015_session01_webcam_authenticate_controlled_2 1.04076512475 +10 17 010/devel/real/client017_session01_webcam_authenticate_adverse_1 -0.243917884811 +10 17 010/devel/real/client017_session01_webcam_authenticate_adverse_2 0.170069495529 +10 17 010/devel/real/client017_session01_webcam_authenticate_controlled_1 0.214466890896 +10 17 010/devel/real/client017_session01_webcam_authenticate_controlled_2 0.540638312006 +10 22 010/devel/real/client022_session01_webcam_authenticate_adverse_1 1.00945246788 +10 22 010/devel/real/client022_session01_webcam_authenticate_adverse_2 1.11408678764 +10 22 010/devel/real/client022_session01_webcam_authenticate_controlled_1 1.20522777424 +10 22 010/devel/real/client022_session01_webcam_authenticate_controlled_2 0.91433125148 +10 29 010/devel/real/client029_session01_webcam_authenticate_adverse_1 0.09971911979 +10 29 010/devel/real/client029_session01_webcam_authenticate_adverse_2 -0.0692415289283 +10 29 010/devel/real/client029_session01_webcam_authenticate_controlled_1 0.155573348923 +10 29 010/devel/real/client029_session01_webcam_authenticate_controlled_2 0.157940281707 +10 30 010/devel/real/client030_session01_webcam_authenticate_adverse_1 0.174827654939 +10 30 010/devel/real/client030_session01_webcam_authenticate_adverse_2 0.143473557873 +10 30 010/devel/real/client030_session01_webcam_authenticate_controlled_1 0.246116509018 +10 30 010/devel/real/client030_session01_webcam_authenticate_controlled_2 0.204360359239 +10 101 010/devel/real/client101_session01_webcam_authenticate_adverse_1 -0.28584607523 +10 101 010/devel/real/client101_session01_webcam_authenticate_adverse_2 -0.110143032709 +10 101 010/devel/real/client101_session01_webcam_authenticate_controlled_1 -0.0661275844434 +10 101 010/devel/real/client101_session01_webcam_authenticate_controlled_2 0.102937028159 +10 111 010/devel/real/client111_session01_webcam_authenticate_adverse_1 1.32064641875 +10 111 010/devel/real/client111_session01_webcam_authenticate_adverse_2 1.44667204715 +10 111 010/devel/real/client111_session01_webcam_authenticate_controlled_1 0.970468437655 +10 111 010/devel/real/client111_session01_webcam_authenticate_controlled_2 1.15594520334 +10 113 010/devel/real/client113_session01_webcam_authenticate_adverse_1 0.452246749649 +10 113 010/devel/real/client113_session01_webcam_authenticate_adverse_2 0.199186033759 +10 113 010/devel/real/client113_session01_webcam_authenticate_controlled_1 0.594444576095 +10 113 010/devel/real/client113_session01_webcam_authenticate_controlled_2 0.854076431222 +10 114 010/devel/real/client114_session01_webcam_authenticate_adverse_1 0.0272281771803 +10 114 010/devel/real/client114_session01_webcam_authenticate_adverse_2 -0.0180496339542 +10 114 010/devel/real/client114_session01_webcam_authenticate_controlled_1 -0.155477404708 +10 114 010/devel/real/client114_session01_webcam_authenticate_controlled_2 -0.190028398658 +10 116 010/devel/real/client116_session01_webcam_authenticate_adverse_1 0.623213673157 +10 116 010/devel/real/client116_session01_webcam_authenticate_adverse_2 0.546679984599 +10 116 010/devel/real/client116_session01_webcam_authenticate_controlled_1 0.708970264386 +10 116 010/devel/real/client116_session01_webcam_authenticate_controlled_2 0.910725034301 +10 118 010/devel/real/client118_session01_webcam_authenticate_adverse_1 1.17092487508 +10 118 010/devel/real/client118_session01_webcam_authenticate_adverse_2 1.08674214224 +10 118 010/devel/real/client118_session01_webcam_authenticate_controlled_1 0.758114229035 +10 118 010/devel/real/client118_session01_webcam_authenticate_controlled_2 0.847617908084 +10 119 010/devel/real/client119_session01_webcam_authenticate_adverse_1 -0.058600737167 +10 119 010/devel/real/client119_session01_webcam_authenticate_adverse_2 -0.104559929764 +10 119 010/devel/real/client119_session01_webcam_authenticate_controlled_1 -0.297325188264 +10 119 010/devel/real/client119_session01_webcam_authenticate_controlled_2 -0.315611829528 +10 3 020/devel/real/client003_session01_webcam_authenticate_adverse_1 -0.338885781134 +10 3 020/devel/real/client003_session01_webcam_authenticate_adverse_2 -0.396386110547 +10 3 020/devel/real/client003_session01_webcam_authenticate_controlled_1 0.27695867411 +10 3 020/devel/real/client003_session01_webcam_authenticate_controlled_2 0.629372727745 +10 5 020/devel/real/client005_session01_webcam_authenticate_adverse_1 -0.0779415376562 +10 5 020/devel/real/client005_session01_webcam_authenticate_adverse_2 -0.117451818462 +10 5 020/devel/real/client005_session01_webcam_authenticate_controlled_1 0.475641010627 +10 5 020/devel/real/client005_session01_webcam_authenticate_controlled_2 0.401602755663 +10 10 020/devel/real/client010_session01_webcam_authenticate_adverse_1 3.67275601038 +10 10 020/devel/real/client010_session01_webcam_authenticate_adverse_2 3.00946766315 +10 10 020/devel/real/client010_session01_webcam_authenticate_controlled_1 4.1992760054 +10 10 020/devel/real/client010_session01_webcam_authenticate_controlled_2 3.72673297367 +10 15 020/devel/real/client015_session01_webcam_authenticate_adverse_1 0.298052086196 +10 15 020/devel/real/client015_session01_webcam_authenticate_adverse_2 0.180311691078 +10 15 020/devel/real/client015_session01_webcam_authenticate_controlled_1 0.334995166459 +10 15 020/devel/real/client015_session01_webcam_authenticate_controlled_2 0.70676592459 +10 17 020/devel/real/client017_session01_webcam_authenticate_adverse_1 0.485422400304 +10 17 020/devel/real/client017_session01_webcam_authenticate_adverse_2 0.420643843172 +10 17 020/devel/real/client017_session01_webcam_authenticate_controlled_1 0.33368797815 +10 17 020/devel/real/client017_session01_webcam_authenticate_controlled_2 0.419557624002 +10 22 020/devel/real/client022_session01_webcam_authenticate_adverse_1 1.05151951779 +10 22 020/devel/real/client022_session01_webcam_authenticate_adverse_2 1.09434197058 +10 22 020/devel/real/client022_session01_webcam_authenticate_controlled_1 0.948221391514 +10 22 020/devel/real/client022_session01_webcam_authenticate_controlled_2 0.470197583425 +10 29 020/devel/real/client029_session01_webcam_authenticate_adverse_1 0.0839194520867 +10 29 020/devel/real/client029_session01_webcam_authenticate_adverse_2 -0.0962990993329 +10 29 020/devel/real/client029_session01_webcam_authenticate_controlled_1 0.0839858236999 +10 29 020/devel/real/client029_session01_webcam_authenticate_controlled_2 0.190758252887 +10 30 020/devel/real/client030_session01_webcam_authenticate_adverse_1 0.159024941074 +10 30 020/devel/real/client030_session01_webcam_authenticate_adverse_2 0.0863571472242 +10 30 020/devel/real/client030_session01_webcam_authenticate_controlled_1 0.140618526752 +10 30 020/devel/real/client030_session01_webcam_authenticate_controlled_2 0.394483045627 +10 101 020/devel/real/client101_session01_webcam_authenticate_adverse_1 0.102818173687 +10 101 020/devel/real/client101_session01_webcam_authenticate_adverse_2 -0.0685237005246 +10 101 020/devel/real/client101_session01_webcam_authenticate_controlled_1 -0.111603373141 +10 101 020/devel/real/client101_session01_webcam_authenticate_controlled_2 -0.125335323934 +10 111 020/devel/real/client111_session01_webcam_authenticate_adverse_1 1.68330993157 +10 111 020/devel/real/client111_session01_webcam_authenticate_adverse_2 1.57146276564 +10 111 020/devel/real/client111_session01_webcam_authenticate_controlled_1 1.30560496355 +10 111 020/devel/real/client111_session01_webcam_authenticate_controlled_2 1.25600474506 +10 113 020/devel/real/client113_session01_webcam_authenticate_adverse_1 0.424123808151 +10 113 020/devel/real/client113_session01_webcam_authenticate_adverse_2 0.689710773846 +10 113 020/devel/real/client113_session01_webcam_authenticate_controlled_1 0.693173490627 +10 113 020/devel/real/client113_session01_webcam_authenticate_controlled_2 0.813767480764 +10 114 020/devel/real/client114_session01_webcam_authenticate_adverse_1 -0.0588316045462 +10 114 020/devel/real/client114_session01_webcam_authenticate_adverse_2 0.0181225187347 +10 114 020/devel/real/client114_session01_webcam_authenticate_controlled_1 -0.252444130247 +10 114 020/devel/real/client114_session01_webcam_authenticate_controlled_2 -0.119835121422 +10 116 020/devel/real/client116_session01_webcam_authenticate_adverse_1 0.619033030322 +10 116 020/devel/real/client116_session01_webcam_authenticate_adverse_2 0.56370903563 +10 116 020/devel/real/client116_session01_webcam_authenticate_controlled_1 0.847493249059 +10 116 020/devel/real/client116_session01_webcam_authenticate_controlled_2 0.629870326683 +10 118 020/devel/real/client118_session01_webcam_authenticate_adverse_1 1.08190622218 +10 118 020/devel/real/client118_session01_webcam_authenticate_adverse_2 1.08417944695 +10 118 020/devel/real/client118_session01_webcam_authenticate_controlled_1 0.61584946571 +10 118 020/devel/real/client118_session01_webcam_authenticate_controlled_2 0.781733644349 +10 119 020/devel/real/client119_session01_webcam_authenticate_adverse_1 -0.11594615243 +10 119 020/devel/real/client119_session01_webcam_authenticate_adverse_2 -0.0871342894673 +10 119 020/devel/real/client119_session01_webcam_authenticate_controlled_1 -0.317871493896 +10 119 020/devel/real/client119_session01_webcam_authenticate_controlled_2 -0.255767423646 diff --git a/bob/fusion/base/data/scores-dev-2 b/bob/fusion/base/data/scores-dev-2 new file mode 100644 index 0000000..e8d6076 --- /dev/null +++ b/bob/fusion/base/data/scores-dev-2 @@ -0,0 +1,120 @@ +10 3 010/devel/real/client003_session01_webcam_authenticate_adverse_1 -0.819592546493 +10 3 010/devel/real/client003_session01_webcam_authenticate_adverse_2 -0.701318681815 +10 3 010/devel/real/client003_session01_webcam_authenticate_controlled_1 -0.689818917083 +10 3 010/devel/real/client003_session01_webcam_authenticate_controlled_2 0.283885410933 +10 5 010/devel/real/client005_session01_webcam_authenticate_adverse_1 0.176276754818 +10 5 010/devel/real/client005_session01_webcam_authenticate_adverse_2 -0.467957169417 +10 5 010/devel/real/client005_session01_webcam_authenticate_controlled_1 0.10703664805 +10 5 010/devel/real/client005_session01_webcam_authenticate_controlled_2 -0.102192907775 +10 10 010/devel/real/client010_session01_webcam_authenticate_adverse_1 -0.648235611072 +10 10 010/devel/real/client010_session01_webcam_authenticate_adverse_2 -0.640703795069 +10 10 010/devel/real/client010_session01_webcam_authenticate_controlled_1 -1.12272337429 +10 10 010/devel/real/client010_session01_webcam_authenticate_controlled_2 0.776749880239 +10 15 010/devel/real/client015_session01_webcam_authenticate_adverse_1 0.723382403324 +10 15 010/devel/real/client015_session01_webcam_authenticate_adverse_2 0.011921723028 +10 15 010/devel/real/client015_session01_webcam_authenticate_controlled_1 -0.490223611204 +10 15 010/devel/real/client015_session01_webcam_authenticate_controlled_2 -0.737575522158 +10 17 010/devel/real/client017_session01_webcam_authenticate_adverse_1 0.155083111286 +10 17 010/devel/real/client017_session01_webcam_authenticate_adverse_2 -0.686133500581 +10 17 010/devel/real/client017_session01_webcam_authenticate_controlled_1 1.407974679 +10 17 010/devel/real/client017_session01_webcam_authenticate_controlled_2 0.69255733122 +10 22 010/devel/real/client022_session01_webcam_authenticate_adverse_1 0.377652831263 +10 22 010/devel/real/client022_session01_webcam_authenticate_adverse_2 0.498085276989 +10 22 010/devel/real/client022_session01_webcam_authenticate_controlled_1 1.0918108929 +10 22 010/devel/real/client022_session01_webcam_authenticate_controlled_2 2.25013017322 +10 29 010/devel/real/client029_session01_webcam_authenticate_adverse_1 -1.33317257051 +10 29 010/devel/real/client029_session01_webcam_authenticate_adverse_2 0.684164206269 +10 29 010/devel/real/client029_session01_webcam_authenticate_controlled_1 -1.58015971456 +10 29 010/devel/real/client029_session01_webcam_authenticate_controlled_2 1.07561363744 +10 30 010/devel/real/client030_session01_webcam_authenticate_adverse_1 -0.32505028696 +10 30 010/devel/real/client030_session01_webcam_authenticate_adverse_2 0.0390999072708 +10 30 010/devel/real/client030_session01_webcam_authenticate_controlled_1 -1.32460109695 +10 30 010/devel/real/client030_session01_webcam_authenticate_controlled_2 1.07726088027 +10 101 010/devel/real/client101_session01_webcam_authenticate_adverse_1 -0.94151127114 +10 101 010/devel/real/client101_session01_webcam_authenticate_adverse_2 0.554039809922 +10 101 010/devel/real/client101_session01_webcam_authenticate_controlled_1 -0.498423065207 +10 101 010/devel/real/client101_session01_webcam_authenticate_controlled_2 -0.271453517296 +10 111 010/devel/real/client111_session01_webcam_authenticate_adverse_1 -0.931940865888 +10 111 010/devel/real/client111_session01_webcam_authenticate_adverse_2 -0.497819175667 +10 111 010/devel/real/client111_session01_webcam_authenticate_controlled_1 0.946281707848 +10 111 010/devel/real/client111_session01_webcam_authenticate_controlled_2 -0.758072563174 +10 113 010/devel/real/client113_session01_webcam_authenticate_adverse_1 1.89764860151 +10 113 010/devel/real/client113_session01_webcam_authenticate_adverse_2 0.520362341253 +10 113 010/devel/real/client113_session01_webcam_authenticate_controlled_1 0.535825158779 +10 113 010/devel/real/client113_session01_webcam_authenticate_controlled_2 -0.491098836367 +10 114 010/devel/real/client114_session01_webcam_authenticate_adverse_1 0.6391472894 +10 114 010/devel/real/client114_session01_webcam_authenticate_adverse_2 0.561188874144 +10 114 010/devel/real/client114_session01_webcam_authenticate_controlled_1 0.0875401864258 +10 114 010/devel/real/client114_session01_webcam_authenticate_controlled_2 2.15276585982 +10 116 010/devel/real/client116_session01_webcam_authenticate_adverse_1 1.18079560013 +10 116 010/devel/real/client116_session01_webcam_authenticate_adverse_2 0.7634885964 +10 116 010/devel/real/client116_session01_webcam_authenticate_controlled_1 0.820448410195 +10 116 010/devel/real/client116_session01_webcam_authenticate_controlled_2 0.813622879806 +10 118 010/devel/real/client118_session01_webcam_authenticate_adverse_1 1.91077525618 +10 118 010/devel/real/client118_session01_webcam_authenticate_adverse_2 -0.46812893238 +10 118 010/devel/real/client118_session01_webcam_authenticate_controlled_1 1.19940291443 +10 118 010/devel/real/client118_session01_webcam_authenticate_controlled_2 -2.10602960765 +10 119 010/devel/real/client119_session01_webcam_authenticate_adverse_1 0.597769821746 +10 119 010/devel/real/client119_session01_webcam_authenticate_adverse_2 -0.63962547561 +10 119 010/devel/real/client119_session01_webcam_authenticate_controlled_1 0.076063120914 +10 119 010/devel/real/client119_session01_webcam_authenticate_controlled_2 0.928022170138 +10 3 020/devel/real/client003_session01_webcam_authenticate_adverse_1 0.894652889824 +10 3 020/devel/real/client003_session01_webcam_authenticate_adverse_2 -1.82940280449 +10 3 020/devel/real/client003_session01_webcam_authenticate_controlled_1 -0.0645761368867 +10 3 020/devel/real/client003_session01_webcam_authenticate_controlled_2 0.595956251001 +10 5 020/devel/real/client005_session01_webcam_authenticate_adverse_1 0.596551706848 +10 5 020/devel/real/client005_session01_webcam_authenticate_adverse_2 2.10654043435 +10 5 020/devel/real/client005_session01_webcam_authenticate_controlled_1 0.091699190244 +10 5 020/devel/real/client005_session01_webcam_authenticate_controlled_2 -2.40867182369 +10 10 020/devel/real/client010_session01_webcam_authenticate_adverse_1 -0.0423541288276 +10 10 020/devel/real/client010_session01_webcam_authenticate_adverse_2 -0.349726905485 +10 10 020/devel/real/client010_session01_webcam_authenticate_controlled_1 -0.550846399741 +10 10 020/devel/real/client010_session01_webcam_authenticate_controlled_2 -0.573799328107 +10 15 020/devel/real/client015_session01_webcam_authenticate_adverse_1 1.43186731447 +10 15 020/devel/real/client015_session01_webcam_authenticate_adverse_2 0.936544488612 +10 15 020/devel/real/client015_session01_webcam_authenticate_controlled_1 -0.288590713683 +10 15 020/devel/real/client015_session01_webcam_authenticate_controlled_2 0.0550922657621 +10 17 020/devel/real/client017_session01_webcam_authenticate_adverse_1 0.0669810609156 +10 17 020/devel/real/client017_session01_webcam_authenticate_adverse_2 -0.565455653876 +10 17 020/devel/real/client017_session01_webcam_authenticate_controlled_1 -0.114808173919 +10 17 020/devel/real/client017_session01_webcam_authenticate_controlled_2 -1.83628702925 +10 22 020/devel/real/client022_session01_webcam_authenticate_adverse_1 0.0181707867156 +10 22 020/devel/real/client022_session01_webcam_authenticate_adverse_2 -0.448059940902 +10 22 020/devel/real/client022_session01_webcam_authenticate_controlled_1 -0.638877395264 +10 22 020/devel/real/client022_session01_webcam_authenticate_controlled_2 -0.441976606104 +10 29 020/devel/real/client029_session01_webcam_authenticate_adverse_1 -0.891027087503 +10 29 020/devel/real/client029_session01_webcam_authenticate_adverse_2 0.930407521333 +10 29 020/devel/real/client029_session01_webcam_authenticate_controlled_1 -0.351785616414 +10 29 020/devel/real/client029_session01_webcam_authenticate_controlled_2 0.323535563909 +10 30 020/devel/real/client030_session01_webcam_authenticate_adverse_1 -1.66763446121 +10 30 020/devel/real/client030_session01_webcam_authenticate_adverse_2 2.03863268211 +10 30 020/devel/real/client030_session01_webcam_authenticate_controlled_1 0.62967380363 +10 30 020/devel/real/client030_session01_webcam_authenticate_controlled_2 0.697573808171 +10 101 020/devel/real/client101_session01_webcam_authenticate_adverse_1 0.151975291762 +10 101 020/devel/real/client101_session01_webcam_authenticate_adverse_2 0.842530979993 +10 101 020/devel/real/client101_session01_webcam_authenticate_controlled_1 -0.0441952089634 +10 101 020/devel/real/client101_session01_webcam_authenticate_controlled_2 0.157322192765 +10 111 020/devel/real/client111_session01_webcam_authenticate_adverse_1 0.913040286422 +10 111 020/devel/real/client111_session01_webcam_authenticate_adverse_2 0.829029010289 +10 111 020/devel/real/client111_session01_webcam_authenticate_controlled_1 -0.74454016056 +10 111 020/devel/real/client111_session01_webcam_authenticate_controlled_2 0.309883965537 +10 113 020/devel/real/client113_session01_webcam_authenticate_adverse_1 -1.09123572398 +10 113 020/devel/real/client113_session01_webcam_authenticate_adverse_2 0.280676072763 +10 113 020/devel/real/client113_session01_webcam_authenticate_controlled_1 -0.541879950901 +10 113 020/devel/real/client113_session01_webcam_authenticate_controlled_2 -0.357352554037 +10 114 020/devel/real/client114_session01_webcam_authenticate_adverse_1 -0.187838715444 +10 114 020/devel/real/client114_session01_webcam_authenticate_adverse_2 0.0622730052476 +10 114 020/devel/real/client114_session01_webcam_authenticate_controlled_1 -2.02159824352 +10 114 020/devel/real/client114_session01_webcam_authenticate_controlled_2 -0.251157264224 +10 116 020/devel/real/client116_session01_webcam_authenticate_adverse_1 0.337102441338 +10 116 020/devel/real/client116_session01_webcam_authenticate_adverse_2 0.604557408652 +10 116 020/devel/real/client116_session01_webcam_authenticate_controlled_1 -0.292850493715 +10 116 020/devel/real/client116_session01_webcam_authenticate_controlled_2 0.673908751159 +10 118 020/devel/real/client118_session01_webcam_authenticate_adverse_1 0.438695893249 +10 118 020/devel/real/client118_session01_webcam_authenticate_adverse_2 1.39447811375 +10 118 020/devel/real/client118_session01_webcam_authenticate_controlled_1 -1.07100143607 +10 118 020/devel/real/client118_session01_webcam_authenticate_controlled_2 -0.859677522056 +10 119 020/devel/real/client119_session01_webcam_authenticate_adverse_1 -0.728412378518 +10 119 020/devel/real/client119_session01_webcam_authenticate_adverse_2 -0.212066000106 +10 119 020/devel/real/client119_session01_webcam_authenticate_controlled_1 1.09812923421 +10 119 020/devel/real/client119_session01_webcam_authenticate_controlled_2 0.524758479954 diff --git a/bob/fusion/base/data/scores-eval-1 b/bob/fusion/base/data/scores-eval-1 new file mode 100644 index 0000000..e15151e --- /dev/null +++ b/bob/fusion/base/data/scores-eval-1 @@ -0,0 +1,160 @@ +102 9 010/test/real/client009_session01_webcam_authenticate_adverse_1 0.205744714267 +102 9 010/test/real/client009_session01_webcam_authenticate_adverse_2 0.267440425332 +102 9 010/test/real/client009_session01_webcam_authenticate_controlled_1 0.112965895686 +102 9 010/test/real/client009_session01_webcam_authenticate_controlled_2 -0.024272173296 +102 11 010/test/real/client011_session01_webcam_authenticate_adverse_1 0.353201266354 +102 11 010/test/real/client011_session01_webcam_authenticate_adverse_2 0.0179000095838 +102 11 010/test/real/client011_session01_webcam_authenticate_controlled_1 0.331493736048 +102 11 010/test/real/client011_session01_webcam_authenticate_controlled_2 0.270547902317 +102 13 010/test/real/client013_session01_webcam_authenticate_adverse_1 0.473512637744 +102 13 010/test/real/client013_session01_webcam_authenticate_adverse_2 0.507131148975 +102 13 010/test/real/client013_session01_webcam_authenticate_controlled_1 0.683895879553 +102 13 010/test/real/client013_session01_webcam_authenticate_controlled_2 0.793478529457 +102 14 010/test/real/client014_session01_webcam_authenticate_adverse_1 0.826530607711 +102 14 010/test/real/client014_session01_webcam_authenticate_adverse_2 0.672834048494 +102 14 010/test/real/client014_session01_webcam_authenticate_controlled_1 0.656453976376 +102 14 010/test/real/client014_session01_webcam_authenticate_controlled_2 0.868956477769 +102 19 010/test/real/client019_session01_webcam_authenticate_adverse_1 0.513500982681 +102 19 010/test/real/client019_session01_webcam_authenticate_adverse_2 0.607311627892 +102 19 010/test/real/client019_session01_webcam_authenticate_controlled_1 0.466002939923 +102 19 010/test/real/client019_session01_webcam_authenticate_controlled_2 0.616226887387 +102 20 010/test/real/client020_session01_webcam_authenticate_adverse_1 0.985449637221 +102 20 010/test/real/client020_session01_webcam_authenticate_adverse_2 0.928613660041 +102 20 010/test/real/client020_session01_webcam_authenticate_controlled_1 0.614957615925 +102 20 010/test/real/client020_session01_webcam_authenticate_controlled_2 0.797460866296 +102 21 010/test/real/client021_session01_webcam_authenticate_adverse_1 0.749048063428 +102 21 010/test/real/client021_session01_webcam_authenticate_adverse_2 0.824522496791 +102 21 010/test/real/client021_session01_webcam_authenticate_controlled_1 0.859512965179 +102 21 010/test/real/client021_session01_webcam_authenticate_controlled_2 0.969166350681 +102 23 010/test/real/client023_session01_webcam_authenticate_adverse_1 0.106076588145 +102 23 010/test/real/client023_session01_webcam_authenticate_adverse_2 -0.0302071010596 +102 23 010/test/real/client023_session01_webcam_authenticate_controlled_1 0.0716394777749 +102 23 010/test/real/client023_session01_webcam_authenticate_controlled_2 0.0502010369715 +102 24 010/test/real/client024_session01_webcam_authenticate_adverse_1 0.580370624219 +102 24 010/test/real/client024_session01_webcam_authenticate_adverse_2 0.101708816411 +102 24 010/test/real/client024_session01_webcam_authenticate_controlled_1 0.581126261896 +102 24 010/test/real/client024_session01_webcam_authenticate_controlled_2 0.589923047259 +102 26 010/test/real/client026_session01_webcam_authenticate_adverse_1 0.387797892707 +102 26 010/test/real/client026_session01_webcam_authenticate_adverse_2 0.35367378094 +102 26 010/test/real/client026_session01_webcam_authenticate_controlled_1 0.485462981075 +102 26 010/test/real/client026_session01_webcam_authenticate_controlled_2 0.493701353092 +102 28 010/test/real/client028_session01_webcam_authenticate_adverse_1 0.713932101259 +102 28 010/test/real/client028_session01_webcam_authenticate_adverse_2 0.206032077179 +102 28 010/test/real/client028_session01_webcam_authenticate_controlled_1 0.343024599315 +102 28 010/test/real/client028_session01_webcam_authenticate_controlled_2 0.0161013713602 +102 31 010/test/real/client031_session01_webcam_authenticate_adverse_1 -0.151603972521 +102 31 010/test/real/client031_session01_webcam_authenticate_adverse_2 -0.00810566410117 +102 31 010/test/real/client031_session01_webcam_authenticate_controlled_1 -0.12910327803 +102 31 010/test/real/client031_session01_webcam_authenticate_controlled_2 -0.151182748693 +102 102 010/test/real/client102_session01_webcam_authenticate_adverse_1 2.52649489901 +102 102 010/test/real/client102_session01_webcam_authenticate_adverse_2 2.95328699907 +102 102 010/test/real/client102_session01_webcam_authenticate_controlled_1 3.81153110245 +102 102 010/test/real/client102_session01_webcam_authenticate_controlled_2 4.1632625589 +102 104 010/test/real/client104_session01_webcam_authenticate_adverse_1 0.0164272118809 +102 104 010/test/real/client104_session01_webcam_authenticate_adverse_2 0.034107170534 +102 104 010/test/real/client104_session01_webcam_authenticate_controlled_1 0.134224245971 +102 104 010/test/real/client104_session01_webcam_authenticate_controlled_2 0.116849618406 +102 106 010/test/real/client106_session01_webcam_authenticate_adverse_1 0.226905398139 +102 106 010/test/real/client106_session01_webcam_authenticate_adverse_2 0.00161059894666 +102 106 010/test/real/client106_session01_webcam_authenticate_controlled_1 0.289801994038 +102 106 010/test/real/client106_session01_webcam_authenticate_controlled_2 0.481776704166 +102 107 010/test/real/client107_session01_webcam_authenticate_adverse_1 0.431159211277 +102 107 010/test/real/client107_session01_webcam_authenticate_adverse_2 0.173017290636 +102 107 010/test/real/client107_session01_webcam_authenticate_controlled_1 0.204933754513 +102 107 010/test/real/client107_session01_webcam_authenticate_controlled_2 0.221778390331 +102 109 010/test/real/client109_session01_webcam_authenticate_adverse_1 -0.139080399077 +102 109 010/test/real/client109_session01_webcam_authenticate_adverse_2 -0.193639274219 +102 109 010/test/real/client109_session01_webcam_authenticate_controlled_1 -0.282825462976 +102 109 010/test/real/client109_session01_webcam_authenticate_controlled_2 -0.319517654844 +102 112 010/test/real/client112_session01_webcam_authenticate_adverse_1 0.36171303165 +102 112 010/test/real/client112_session01_webcam_authenticate_adverse_2 0.304084756476 +102 112 010/test/real/client112_session01_webcam_authenticate_controlled_1 0.856310657414 +102 112 010/test/real/client112_session01_webcam_authenticate_controlled_2 0.576238267707 +102 115 010/test/real/client115_session01_webcam_authenticate_adverse_1 1.02292778778 +102 115 010/test/real/client115_session01_webcam_authenticate_adverse_2 1.05614557049 +102 115 010/test/real/client115_session01_webcam_authenticate_controlled_1 0.871422229855 +102 115 010/test/real/client115_session01_webcam_authenticate_controlled_2 1.00502290399 +102 117 010/test/real/client117_session01_webcam_authenticate_adverse_1 0.43000681028 +102 117 010/test/real/client117_session01_webcam_authenticate_adverse_2 0.542116548077 +102 117 010/test/real/client117_session01_webcam_authenticate_controlled_1 0.757988829289 +102 117 010/test/real/client117_session01_webcam_authenticate_controlled_2 0.469510066782 +102 9 020/test/real/client009_session01_webcam_authenticate_adverse_1 0.268685242863 +102 9 020/test/real/client009_session01_webcam_authenticate_adverse_2 0.264433932505 +102 9 020/test/real/client009_session01_webcam_authenticate_controlled_1 0.102163343099 +102 9 020/test/real/client009_session01_webcam_authenticate_controlled_2 0.191492100759 +102 11 020/test/real/client011_session01_webcam_authenticate_adverse_1 0.449055410691 +102 11 020/test/real/client011_session01_webcam_authenticate_adverse_2 0.443942290321 +102 11 020/test/real/client011_session01_webcam_authenticate_controlled_1 0.35841581767 +102 11 020/test/real/client011_session01_webcam_authenticate_controlled_2 0.23040601679 +102 13 020/test/real/client013_session01_webcam_authenticate_adverse_1 0.518207754939 +102 13 020/test/real/client013_session01_webcam_authenticate_adverse_2 0.535205992102 +102 13 020/test/real/client013_session01_webcam_authenticate_controlled_1 0.737519223775 +102 13 020/test/real/client013_session01_webcam_authenticate_controlled_2 0.83390915957 +102 14 020/test/real/client014_session01_webcam_authenticate_adverse_1 0.853884420146 +102 14 020/test/real/client014_session01_webcam_authenticate_adverse_2 0.830077670388 +102 14 020/test/real/client014_session01_webcam_authenticate_controlled_1 0.639280081717 +102 14 020/test/real/client014_session01_webcam_authenticate_controlled_2 0.880253783225 +102 19 020/test/real/client019_session01_webcam_authenticate_adverse_1 0.491002603652 +102 19 020/test/real/client019_session01_webcam_authenticate_adverse_2 0.502669892088 +102 19 020/test/real/client019_session01_webcam_authenticate_controlled_1 0.564119325258 +102 19 020/test/real/client019_session01_webcam_authenticate_controlled_2 0.551950859338 +102 20 020/test/real/client020_session01_webcam_authenticate_adverse_1 0.768666706157 +102 20 020/test/real/client020_session01_webcam_authenticate_adverse_2 0.986172971169 +102 20 020/test/real/client020_session01_webcam_authenticate_controlled_1 0.706326454098 +102 20 020/test/real/client020_session01_webcam_authenticate_controlled_2 0.724592314211 +102 21 020/test/real/client021_session01_webcam_authenticate_adverse_1 0.769503614398 +102 21 020/test/real/client021_session01_webcam_authenticate_adverse_2 0.883332838333 +102 21 020/test/real/client021_session01_webcam_authenticate_controlled_1 0.898735057482 +102 21 020/test/real/client021_session01_webcam_authenticate_controlled_2 0.962021216882 +102 23 020/test/real/client023_session01_webcam_authenticate_adverse_1 0.0651630753668 +102 23 020/test/real/client023_session01_webcam_authenticate_adverse_2 0.0188472957821 +102 23 020/test/real/client023_session01_webcam_authenticate_controlled_1 0.0940398328667 +102 23 020/test/real/client023_session01_webcam_authenticate_controlled_2 0.153870376701 +102 24 020/test/real/client024_session01_webcam_authenticate_adverse_1 0.577405121626 +102 24 020/test/real/client024_session01_webcam_authenticate_adverse_2 0.234134683932 +102 24 020/test/real/client024_session01_webcam_authenticate_controlled_1 0.603189554753 +102 24 020/test/real/client024_session01_webcam_authenticate_controlled_2 0.631918989901 +102 26 020/test/real/client026_session01_webcam_authenticate_adverse_1 0.31449788358 +102 26 020/test/real/client026_session01_webcam_authenticate_adverse_2 0.286009187121 +102 26 020/test/real/client026_session01_webcam_authenticate_controlled_1 0.554325015076 +102 26 020/test/real/client026_session01_webcam_authenticate_controlled_2 0.389669224063 +102 28 020/test/real/client028_session01_webcam_authenticate_adverse_1 0.174906167338 +102 28 020/test/real/client028_session01_webcam_authenticate_adverse_2 0.121731076104 +102 28 020/test/real/client028_session01_webcam_authenticate_controlled_1 0.301035398359 +102 28 020/test/real/client028_session01_webcam_authenticate_controlled_2 -0.066457389056 +102 31 020/test/real/client031_session01_webcam_authenticate_adverse_1 -0.00741360995993 +102 31 020/test/real/client031_session01_webcam_authenticate_adverse_2 -0.0165972134324 +102 31 020/test/real/client031_session01_webcam_authenticate_controlled_1 -0.087431900315 +102 31 020/test/real/client031_session01_webcam_authenticate_controlled_2 -0.175326321457 +102 102 020/test/real/client102_session01_webcam_authenticate_adverse_1 2.41703254714 +102 102 020/test/real/client102_session01_webcam_authenticate_adverse_2 3.00845990838 +102 102 020/test/real/client102_session01_webcam_authenticate_controlled_1 3.61495943796 +102 102 020/test/real/client102_session01_webcam_authenticate_controlled_2 4.32712650583 +102 104 020/test/real/client104_session01_webcam_authenticate_adverse_1 -0.0336199606472 +102 104 020/test/real/client104_session01_webcam_authenticate_adverse_2 0.0466196507281 +102 104 020/test/real/client104_session01_webcam_authenticate_controlled_1 0.0845820293727 +102 104 020/test/real/client104_session01_webcam_authenticate_controlled_2 0.210167563839 +102 106 020/test/real/client106_session01_webcam_authenticate_adverse_1 0.17653533347 +102 106 020/test/real/client106_session01_webcam_authenticate_adverse_2 0.109001145866 +102 106 020/test/real/client106_session01_webcam_authenticate_controlled_1 0.340240328781 +102 106 020/test/real/client106_session01_webcam_authenticate_controlled_2 0.515026000834 +102 107 020/test/real/client107_session01_webcam_authenticate_adverse_1 0.388473749812 +102 107 020/test/real/client107_session01_webcam_authenticate_adverse_2 0.343791222902 +102 107 020/test/real/client107_session01_webcam_authenticate_controlled_1 0.0960969050715 +102 107 020/test/real/client107_session01_webcam_authenticate_controlled_2 0.0174673373273 +102 109 020/test/real/client109_session01_webcam_authenticate_adverse_1 -0.119729432365 +102 109 020/test/real/client109_session01_webcam_authenticate_adverse_2 -0.29001178619 +102 109 020/test/real/client109_session01_webcam_authenticate_controlled_1 -0.319605739038 +102 109 020/test/real/client109_session01_webcam_authenticate_controlled_2 -0.314033650393 +102 112 020/test/real/client112_session01_webcam_authenticate_adverse_1 0.350682641713 +102 112 020/test/real/client112_session01_webcam_authenticate_adverse_2 0.438412156756 +102 112 020/test/real/client112_session01_webcam_authenticate_controlled_1 0.7523373368 +102 112 020/test/real/client112_session01_webcam_authenticate_controlled_2 0.75585768958 +102 115 020/test/real/client115_session01_webcam_authenticate_adverse_1 1.07321971664 +102 115 020/test/real/client115_session01_webcam_authenticate_adverse_2 1.12813870399 +102 115 020/test/real/client115_session01_webcam_authenticate_controlled_1 0.991680745076 +102 115 020/test/real/client115_session01_webcam_authenticate_controlled_2 0.971316657652 +102 117 020/test/real/client117_session01_webcam_authenticate_adverse_1 0.726090340533 +102 117 020/test/real/client117_session01_webcam_authenticate_adverse_2 0.533985909069 +102 117 020/test/real/client117_session01_webcam_authenticate_controlled_1 0.708304912275 +102 117 020/test/real/client117_session01_webcam_authenticate_controlled_2 0.627750123321 diff --git a/bob/fusion/base/data/scores-eval-2 b/bob/fusion/base/data/scores-eval-2 new file mode 100644 index 0000000..f0dd275 --- /dev/null +++ b/bob/fusion/base/data/scores-eval-2 @@ -0,0 +1,160 @@ +102 9 010/test/real/client009_session01_webcam_authenticate_adverse_1 -1.55085701573 +102 9 010/test/real/client009_session01_webcam_authenticate_adverse_2 0.249555055537 +102 9 010/test/real/client009_session01_webcam_authenticate_controlled_1 -0.24142520733 +102 9 010/test/real/client009_session01_webcam_authenticate_controlled_2 -0.818428758744 +102 11 010/test/real/client011_session01_webcam_authenticate_adverse_1 0.413718691668 +102 11 010/test/real/client011_session01_webcam_authenticate_adverse_2 -0.423447802865 +102 11 010/test/real/client011_session01_webcam_authenticate_controlled_1 0.555298006761 +102 11 010/test/real/client011_session01_webcam_authenticate_controlled_2 -0.56452618587 +102 13 010/test/real/client013_session01_webcam_authenticate_adverse_1 3.1709337741 +102 13 010/test/real/client013_session01_webcam_authenticate_adverse_2 -0.150124688668 +102 13 010/test/real/client013_session01_webcam_authenticate_controlled_1 -0.459495525081 +102 13 010/test/real/client013_session01_webcam_authenticate_controlled_2 0.400962819366 +102 14 010/test/real/client014_session01_webcam_authenticate_adverse_1 0.737493503501 +102 14 010/test/real/client014_session01_webcam_authenticate_adverse_2 -0.0793805252158 +102 14 010/test/real/client014_session01_webcam_authenticate_controlled_1 -1.51083974247 +102 14 010/test/real/client014_session01_webcam_authenticate_controlled_2 0.575142809073 +102 19 010/test/real/client019_session01_webcam_authenticate_adverse_1 2.07056236023 +102 19 010/test/real/client019_session01_webcam_authenticate_adverse_2 -0.434983265238 +102 19 010/test/real/client019_session01_webcam_authenticate_controlled_1 -0.0553536631719 +102 19 010/test/real/client019_session01_webcam_authenticate_controlled_2 1.58799427323 +102 20 010/test/real/client020_session01_webcam_authenticate_adverse_1 0.458212671278 +102 20 010/test/real/client020_session01_webcam_authenticate_adverse_2 0.163580074279 +102 20 010/test/real/client020_session01_webcam_authenticate_controlled_1 0.528732316332 +102 20 010/test/real/client020_session01_webcam_authenticate_controlled_2 0.75649996538 +102 21 010/test/real/client021_session01_webcam_authenticate_adverse_1 0.951729884553 +102 21 010/test/real/client021_session01_webcam_authenticate_adverse_2 -0.140247285522 +102 21 010/test/real/client021_session01_webcam_authenticate_controlled_1 0.683439289359 +102 21 010/test/real/client021_session01_webcam_authenticate_controlled_2 0.238479741486 +102 23 010/test/real/client023_session01_webcam_authenticate_adverse_1 -1.78979123256 +102 23 010/test/real/client023_session01_webcam_authenticate_adverse_2 1.21567736635 +102 23 010/test/real/client023_session01_webcam_authenticate_controlled_1 0.0787405077675 +102 23 010/test/real/client023_session01_webcam_authenticate_controlled_2 1.00160630698 +102 24 010/test/real/client024_session01_webcam_authenticate_adverse_1 -0.676597374689 +102 24 010/test/real/client024_session01_webcam_authenticate_adverse_2 0.0161791557867 +102 24 010/test/real/client024_session01_webcam_authenticate_controlled_1 1.00915322011 +102 24 010/test/real/client024_session01_webcam_authenticate_controlled_2 0.429231914114 +102 26 010/test/real/client026_session01_webcam_authenticate_adverse_1 1.55425500914 +102 26 010/test/real/client026_session01_webcam_authenticate_adverse_2 -1.03246176298 +102 26 010/test/real/client026_session01_webcam_authenticate_controlled_1 0.132547457702 +102 26 010/test/real/client026_session01_webcam_authenticate_controlled_2 1.24509405948 +102 28 010/test/real/client028_session01_webcam_authenticate_adverse_1 -0.460672439433 +102 28 010/test/real/client028_session01_webcam_authenticate_adverse_2 -0.381658268812 +102 28 010/test/real/client028_session01_webcam_authenticate_controlled_1 -1.22350524221 +102 28 010/test/real/client028_session01_webcam_authenticate_controlled_2 0.705875820729 +102 31 010/test/real/client031_session01_webcam_authenticate_adverse_1 0.0822299462915 +102 31 010/test/real/client031_session01_webcam_authenticate_adverse_2 0.808081512335 +102 31 010/test/real/client031_session01_webcam_authenticate_controlled_1 0.493401772049 +102 31 010/test/real/client031_session01_webcam_authenticate_controlled_2 0.553331799422 +102 102 010/test/real/client102_session01_webcam_authenticate_adverse_1 1.41842887314 +102 102 010/test/real/client102_session01_webcam_authenticate_adverse_2 0.642368945481 +102 102 010/test/real/client102_session01_webcam_authenticate_controlled_1 0.0785840555033 +102 102 010/test/real/client102_session01_webcam_authenticate_controlled_2 -0.493324249291 +102 104 010/test/real/client104_session01_webcam_authenticate_adverse_1 1.25931828714 +102 104 010/test/real/client104_session01_webcam_authenticate_adverse_2 0.322068233361 +102 104 010/test/real/client104_session01_webcam_authenticate_controlled_1 0.464219462156 +102 104 010/test/real/client104_session01_webcam_authenticate_controlled_2 -2.21289215765 +102 106 010/test/real/client106_session01_webcam_authenticate_adverse_1 1.89650429422 +102 106 010/test/real/client106_session01_webcam_authenticate_adverse_2 -3.16752581319 +102 106 010/test/real/client106_session01_webcam_authenticate_controlled_1 -0.528328037358 +102 106 010/test/real/client106_session01_webcam_authenticate_controlled_2 -0.180946452976 +102 107 010/test/real/client107_session01_webcam_authenticate_adverse_1 -1.64955612726 +102 107 010/test/real/client107_session01_webcam_authenticate_adverse_2 -0.319190540301 +102 107 010/test/real/client107_session01_webcam_authenticate_controlled_1 1.78383923244 +102 107 010/test/real/client107_session01_webcam_authenticate_controlled_2 -1.80944627257 +102 109 010/test/real/client109_session01_webcam_authenticate_adverse_1 -0.234870525531 +102 109 010/test/real/client109_session01_webcam_authenticate_adverse_2 0.196521972111 +102 109 010/test/real/client109_session01_webcam_authenticate_controlled_1 0.643037780398 +102 109 010/test/real/client109_session01_webcam_authenticate_controlled_2 0.373835457325 +102 112 010/test/real/client112_session01_webcam_authenticate_adverse_1 1.36331932074 +102 112 010/test/real/client112_session01_webcam_authenticate_adverse_2 -0.704980582629 +102 112 010/test/real/client112_session01_webcam_authenticate_controlled_1 -0.916867613585 +102 112 010/test/real/client112_session01_webcam_authenticate_controlled_2 0.107119642863 +102 115 010/test/real/client115_session01_webcam_authenticate_adverse_1 0.215079207469 +102 115 010/test/real/client115_session01_webcam_authenticate_adverse_2 0.192431499366 +102 115 010/test/real/client115_session01_webcam_authenticate_controlled_1 -0.445816214164 +102 115 010/test/real/client115_session01_webcam_authenticate_controlled_2 -0.140518457999 +102 117 010/test/real/client117_session01_webcam_authenticate_adverse_1 -0.228845791797 +102 117 010/test/real/client117_session01_webcam_authenticate_adverse_2 -1.0025248437 +102 117 010/test/real/client117_session01_webcam_authenticate_controlled_1 0.613063645049 +102 117 010/test/real/client117_session01_webcam_authenticate_controlled_2 1.10791771985 +102 9 020/test/real/client009_session01_webcam_authenticate_adverse_1 -1.06000208938 +102 9 020/test/real/client009_session01_webcam_authenticate_adverse_2 0.549488155419 +102 9 020/test/real/client009_session01_webcam_authenticate_controlled_1 -1.36501664837 +102 9 020/test/real/client009_session01_webcam_authenticate_controlled_2 0.83627965196 +102 11 020/test/real/client011_session01_webcam_authenticate_adverse_1 0.227770672205 +102 11 020/test/real/client011_session01_webcam_authenticate_adverse_2 0.763113001277 +102 11 020/test/real/client011_session01_webcam_authenticate_controlled_1 2.96002798692 +102 11 020/test/real/client011_session01_webcam_authenticate_controlled_2 1.33867704803 +102 13 020/test/real/client013_session01_webcam_authenticate_adverse_1 0.643249758188 +102 13 020/test/real/client013_session01_webcam_authenticate_adverse_2 -0.0157973885162 +102 13 020/test/real/client013_session01_webcam_authenticate_controlled_1 -1.39303861158 +102 13 020/test/real/client013_session01_webcam_authenticate_controlled_2 -0.0583729118645 +102 14 020/test/real/client014_session01_webcam_authenticate_adverse_1 -0.616680508102 +102 14 020/test/real/client014_session01_webcam_authenticate_adverse_2 -2.00540155498 +102 14 020/test/real/client014_session01_webcam_authenticate_controlled_1 1.20946125734 +102 14 020/test/real/client014_session01_webcam_authenticate_controlled_2 1.71080626414 +102 19 020/test/real/client019_session01_webcam_authenticate_adverse_1 -1.04548786663 +102 19 020/test/real/client019_session01_webcam_authenticate_adverse_2 0.387518919066 +102 19 020/test/real/client019_session01_webcam_authenticate_controlled_1 0.0128377212048 +102 19 020/test/real/client019_session01_webcam_authenticate_controlled_2 1.63458905679 +102 20 020/test/real/client020_session01_webcam_authenticate_adverse_1 -1.09562199996 +102 20 020/test/real/client020_session01_webcam_authenticate_adverse_2 0.728009742836 +102 20 020/test/real/client020_session01_webcam_authenticate_controlled_1 -0.281243542187 +102 20 020/test/real/client020_session01_webcam_authenticate_controlled_2 -0.315861710222 +102 21 020/test/real/client021_session01_webcam_authenticate_adverse_1 1.37605222138 +102 21 020/test/real/client021_session01_webcam_authenticate_adverse_2 0.350000885786 +102 21 020/test/real/client021_session01_webcam_authenticate_controlled_1 0.29585259108 +102 21 020/test/real/client021_session01_webcam_authenticate_controlled_2 -0.638035426456 +102 23 020/test/real/client023_session01_webcam_authenticate_adverse_1 -1.9273097084 +102 23 020/test/real/client023_session01_webcam_authenticate_adverse_2 -0.182479637853 +102 23 020/test/real/client023_session01_webcam_authenticate_controlled_1 0.105741406878 +102 23 020/test/real/client023_session01_webcam_authenticate_controlled_2 0.288964024037 +102 24 020/test/real/client024_session01_webcam_authenticate_adverse_1 -0.612071180127 +102 24 020/test/real/client024_session01_webcam_authenticate_adverse_2 1.62110867112 +102 24 020/test/real/client024_session01_webcam_authenticate_controlled_1 0.298010378782 +102 24 020/test/real/client024_session01_webcam_authenticate_controlled_2 -1.09082563497 +102 26 020/test/real/client026_session01_webcam_authenticate_adverse_1 -0.46318377901 +102 26 020/test/real/client026_session01_webcam_authenticate_adverse_2 -0.594737891636 +102 26 020/test/real/client026_session01_webcam_authenticate_controlled_1 0.0202895991467 +102 26 020/test/real/client026_session01_webcam_authenticate_controlled_2 0.950871796763 +102 28 020/test/real/client028_session01_webcam_authenticate_adverse_1 -0.868785383462 +102 28 020/test/real/client028_session01_webcam_authenticate_adverse_2 -1.09559642336 +102 28 020/test/real/client028_session01_webcam_authenticate_controlled_1 -0.0821623759494 +102 28 020/test/real/client028_session01_webcam_authenticate_controlled_2 -0.326214325843 +102 31 020/test/real/client031_session01_webcam_authenticate_adverse_1 -0.306357510228 +102 31 020/test/real/client031_session01_webcam_authenticate_adverse_2 0.95548201038 +102 31 020/test/real/client031_session01_webcam_authenticate_controlled_1 0.466712315033 +102 31 020/test/real/client031_session01_webcam_authenticate_controlled_2 -0.292538329356 +102 102 020/test/real/client102_session01_webcam_authenticate_adverse_1 0.446356117353 +102 102 020/test/real/client102_session01_webcam_authenticate_adverse_2 -1.20810275147 +102 102 020/test/real/client102_session01_webcam_authenticate_controlled_1 0.324950532574 +102 102 020/test/real/client102_session01_webcam_authenticate_controlled_2 -0.970946290733 +102 104 020/test/real/client104_session01_webcam_authenticate_adverse_1 -0.848350671785 +102 104 020/test/real/client104_session01_webcam_authenticate_adverse_2 2.12044332624 +102 104 020/test/real/client104_session01_webcam_authenticate_controlled_1 -0.270659531779 +102 104 020/test/real/client104_session01_webcam_authenticate_controlled_2 -0.506972407718 +102 106 020/test/real/client106_session01_webcam_authenticate_adverse_1 0.328419369234 +102 106 020/test/real/client106_session01_webcam_authenticate_adverse_2 -0.666843607279 +102 106 020/test/real/client106_session01_webcam_authenticate_controlled_1 0.342625716031 +102 106 020/test/real/client106_session01_webcam_authenticate_controlled_2 0.35231071915 +102 107 020/test/real/client107_session01_webcam_authenticate_adverse_1 0.396905079095 +102 107 020/test/real/client107_session01_webcam_authenticate_adverse_2 0.388048831679 +102 107 020/test/real/client107_session01_webcam_authenticate_controlled_1 0.766359848964 +102 107 020/test/real/client107_session01_webcam_authenticate_controlled_2 0.289802404812 +102 109 020/test/real/client109_session01_webcam_authenticate_adverse_1 1.41433512263 +102 109 020/test/real/client109_session01_webcam_authenticate_adverse_2 -0.106432902113 +102 109 020/test/real/client109_session01_webcam_authenticate_controlled_1 0.253063020495 +102 109 020/test/real/client109_session01_webcam_authenticate_controlled_2 0.156208862686 +102 112 020/test/real/client112_session01_webcam_authenticate_adverse_1 0.330228379772 +102 112 020/test/real/client112_session01_webcam_authenticate_adverse_2 -1.48654358392 +102 112 020/test/real/client112_session01_webcam_authenticate_controlled_1 0.509723239414 +102 112 020/test/real/client112_session01_webcam_authenticate_controlled_2 -0.196155715729 +102 115 020/test/real/client115_session01_webcam_authenticate_adverse_1 -0.410922362909 +102 115 020/test/real/client115_session01_webcam_authenticate_adverse_2 0.892545450838 +102 115 020/test/real/client115_session01_webcam_authenticate_controlled_1 -1.1250711083 +102 115 020/test/real/client115_session01_webcam_authenticate_controlled_2 1.88414139325 +102 117 020/test/real/client117_session01_webcam_authenticate_adverse_1 -0.0201037455749 +102 117 020/test/real/client117_session01_webcam_authenticate_adverse_2 1.28794455761 +102 117 020/test/real/client117_session01_webcam_authenticate_controlled_1 -0.0778756699388 +102 117 020/test/real/client117_session01_webcam_authenticate_controlled_2 2.2792002273 diff --git a/bob/fusion/base/script/bob_fuse.py b/bob/fusion/base/script/bob_fuse.py index f14dc75..435ce68 100755 --- a/bob/fusion/base/script/bob_fuse.py +++ b/bob/fusion/base/script/bob_fuse.py @@ -33,9 +33,6 @@ def fuse(args, command_line_parameters): score_lines_list_eval = [load_score(path, ncolumns=args.score_type) for path in args.eval_files] scores_eval = get_all_scores(score_lines_list_eval) - else: - score_lines_list_eval = [] - scores_eval = [] # check if score lines are consistent if not args.skip_check: @@ -54,7 +51,8 @@ def fuse(args, command_line_parameters): # preprocess data scores_dev = algorithm.preprocess(scores_dev) - scores_eval = algorithm.preprocess(scores_eval) + if args.eval_files: + scores_eval = algorithm.preprocess(scores_eval) neg, pos = algorithm.preprocess(neg), algorithm.preprocess(pos) # train the model diff --git a/bob/fusion/base/script/plot_fusion_decision_boundary.py b/bob/fusion/base/script/plot_fusion_decision_boundary.py index 9452d91..346d3c1 100644 --- a/bob/fusion/base/script/plot_fusion_decision_boundary.py +++ b/bob/fusion/base/script/plot_fusion_decision_boundary.py @@ -15,12 +15,8 @@ Options: messages) to 1 (warnings), 2 (log messages), 3 (debug information) by adding the --verbose option as often as desired (e.g. '-vvv' for debug). [default: 0] - -a, --algorithm Algorithm The fusion that was used during fusion if they - implement a different load method e.g. - bob.fusion.base.algorithm.MLP. - [default: bob.fusion.base.algorithm.Algorithm] -g, --group N If given scores will be grouped into N samples. - [default: 500] + Give -1 for no grouping. [default: -1] --grouping {random, kmeans} The gouping algorithm used. [default: kmeans] -h --help Show this screen. -V, --version Show version. @@ -110,6 +106,7 @@ def plot_boundary_decision(algorithm, scores, score_labels, threshold, plt.xlim([x_min, x_max]) plt.ylim([y_min, y_max]) + plt.grid('on') return contourf @@ -117,11 +114,10 @@ def plot_boundary_decision(algorithm, scores, score_labels, threshold, def main(command_line_parameters=None): args = docopt(__doc__, argv=command_line_parameters, version=bob.fusion.base.get_config()) - print(args) bob.core.log.set_verbosity_level(logger, args['--verbose']) # load the algorithm - algorithm = eval('{}()'.format(args['--algorithm'])) + algorithm = bob.fusion.base.algorithm.Algorithm() algorithm = algorithm.load(args['MODEL_FILE']) # load the scores @@ -135,9 +131,13 @@ def main(command_line_parameters=None): score_labels = score_lines['claimed_id'] == score_lines['real_id'] # plot the decision boundary + do_grouping = True + if int(args['--group']) == -1: + do_grouping = False + plot_boundary_decision( algorithm, scores, score_labels, threshold, - do_grouping=True, + do_grouping=do_grouping, npoints=int(args['--group']), seed=0, gformat=args['--grouping'] diff --git a/bob/fusion/base/test/test_scripts.py b/bob/fusion/base/test/test_scripts.py index 4265cc3..9bfe632 100644 --- a/bob/fusion/base/test/test_scripts.py +++ b/bob/fusion/base/test/test_scripts.py @@ -1 +1,59 @@ #!/usr/bin/env python + +import os +import shutil +import tempfile + +from bob.fusion.base.script.bob_fuse import main as bob_fuse +from bob.fusion.base.script.plot_fusion_decision_boundary import main as plot_fusion_decision_boundary +from bob.io.base.test_utils import datafile + +dev_files = [datafile("scores-dev-1", 'bob.fusion.base'), + datafile("scores-dev-2", 'bob.fusion.base')] +eval_files = [datafile("scores-eval-1", 'bob.fusion.base'), + datafile("scores-eval-2", 'bob.fusion.base')] + + +def test_scripts(): + + tmpdir = tempfile.mkdtemp() + try: + fused_dev_file = os.path.join(tmpdir, 'scores-dev') + fused_eval_file = os.path.join(tmpdir, 'scores-eval') + + # test normally + cmd = ['-i'] + dev_files + ['-o', fused_dev_file, '-a', 'llr'] + bob_fuse(cmd) + + cmd = ['-i'] + dev_files + ['-I'] + eval_files + ['-o', fused_dev_file, '-O', fused_eval_file, '-a', 'llr'] + bob_fuse(cmd) + + # make inconsistency + wrong_dev2 = os.path.join(tmpdir, 'scores-dev-2') + with open(wrong_dev2, 'w') as f1, open(dev_files[1]) as f2: + lines = f2.readlines() + temp = lines[0].split() + temp = (temp[0], 'temp1_id', temp[2], temp[3]) + lines[0] = ' '.join(temp) + '\n' + f1.writelines(lines) + + cmd = ['-i'] + dev_files[0:1] + [wrong_dev2] + ['-o', fused_dev_file, '-a', 'llr'] + try: + bob_fuse(cmd) + except AssertionError: + pass + else: + raise Exception('An AssertionError should have been raised.') + + # this should not raise an error + cmd = ['-i'] + dev_files[0:1] + [wrong_dev2] + ['-o', fused_dev_file, '-a', 'llr', '--skip-check'] + bob_fuse(cmd) + + # test plot + model_file = os.path.join(tmpdir, 'Model.pkl') + output = os.path.join(tmpdir, 'scatter.pdf') + cmd = dev_files + [model_file, '-o', output] + plot_fusion_decision_boundary(cmd) + + finally: + shutil.rmtree(tmpdir) -- GitLab