parser.add_argument('-d','--dev-files',required=True,nargs='+',help="A list of score files of the development set.")
parser.add_argument('-e','--eval-files',nargs='+',help="A list of score files of the evaluation set; if given it must be the same number of files as the --dev-files.")
parser.add_argument('-f','--score-fused-dev-file',required=True,help='The calibrated development score file in 4 or 5 column format to calibrate.')
parser.add_argument('-g','--score-fused-eval-file',help='The calibrated evaluation score file in 4 or 5 column format to calibrate.')
parser.add_argument('-p','--parser',default='4column',choices=('4column','5column'),help="The style of the resulting score files. The default fits to the usual output of score files.")
parser.add_argument('-f','--fused-dev-file',required=True,help='The fused development score file in 4 column format.')
parser.add_argument('-g','--fused-eval-file',help='The fused evaluation score file in 4 column format.')
parser.add_argument('-p','--parser',default='4column',choices=('4column','5column'),help="The style of the resulting score files. The default fits to the usual output of score files.")
parser.add_argument('-m','--max-iterations',type=int,default=10000,help="Select the maximum number of iterations for the LLR training")
parser.add_argument('-t','--convergence-threshold',type=float,default=1e-10,help="Select the convergence threshold for the LLR training")
parser.add_argument('-n','--no-whitening',action="store_true",help="If given, disable the score mean/std-normalization prior to fusion (this is not recommended)")
In several of our publications, we have shown that the combination of several biometric recognition algorithms is able to outperform each single algorithm.
This is particularly true, when the algorithms rely on different kind of data, e.g., we have `fused face and speaker recognition system on the MOBIO database <http://publications.idiap.ch/index.php/publications/show/2688>`__.
As long as several algorithms are executed on the same database, we can simply generate a fusion system by using the ``./bin/fuse_scores.py`` script, generating a new score file:
.. code-block:: sh
$ ./bin/fuse_scores.py --dev
This computation is based on the :py:class:`bob.learn.linear.CGLogRegTrainer`, which is trained on the scores of the development set files (``--dev-files``) for the given systems.
Afterwards, the fusion is applied to the ``--dev-files`` and the resulting score file is written to the file specified by ``--fused-dev-file``.
If ``--eval-files`` are specified, the same fusion that is trained on the development set is now applied to the evaluation set as well, and the ``--fused-eval-file`` is written.
.. note::
When ``--eval-files`` are specified, they need to be in the same order as the ``dev-files``, otherwise the result is undefined.
The resulting ``--fused-dev-file`` and ``fused-eval-file`` can then be evaluated normally, e.g., using the ``./bin/evaluate.py`` script.