Running Biometric Recognition Experiments

The packages provide open source tools to run comparable and reproducible biometric recognition experiments. To design a biometric recognition experiment, you must choose:

  • A database to use for the raw biometric data and a protocol that defines how to use that data,
  • A data preprocessing algorithm to clean up the raw biometric data,
  • A feature extractor to extract the desired type of features from the preprocessed data,
  • A biometric matching algorithm,
  • An evaluation method to make sense of the matching scores.

The packages contain several implementations of each of the above steps, so you can either choose from the existing methods or use your own.


The packages are derived from the former FaceRecLib, which is herewith outdated.

Structure of the Biometric Recognition Framework

The package includes the basic definition of a biometric recognition experiment, as well as a generic script, which can execute the full biometric experiment in a single command line. Changing the employed tools, such as the database, protocol, preprocessor, feature extractor or matching algorithm is as simple as changing a parameter in a configuration file or on the command line.

The implementation of (most of) the tools is separated into other packages in the namespace. All of these packages can be easily combined. Here is a growing list of derived packages:

  • Tools to run speaker recognition experiments, including voice activity detection, Cepstral feature extraction, and speaker databases
  • Tools to run vein recognition experiments, such as finger RoI detection, image binarization and template matching, and access to multiple vein image databases
  • Tools to run face recognition experiments, such as face detection, facial feature extraction and comparison, and face image databases
  • An extension of face recognition algorithms to run on video data, and the according video databases
  • Algorithms based on Gaussian Mixture Modeling (GMM) such as Inter-Session Variability modeling (ISV) or Total Variability modeling (TV, aka. I-Vector) [Pri07] and [ESM+13].

Tutorial on the Biometric Recognition Framework

As an introduction into the Biometric Recognition Framework, a.k.a.,, we presented a tutorial in collaboration with the International Joint Conference on Biometrics (IJCB) in 2017. The tutorial was called Bob’s Biometric Recognition Framework - A Hands-on Tutorial with Face Recognition Examples and introduced the framework by showing how to use and how to extend the framework. Though all presented examples were about face recognition, other biometric modalities can be handled similarly.

If you did not have the time to attend the tutorial itself, we recorded the session. You can find the videos on YouTube, either combined in my YouTube Channel, or separately here:

  1. Introduction
  2. Bob’s Biometric Framework
  3. Gaussian Mixture Models
  4. Extending the Biometric Framework
  5. Parenthesis
  6. Reproducible Research

If you want to test out the tutorial, you might want to have a look at its Corresponding Web Page.

Citing our Publications

If you run biometric recognition experiments using the framework, please cite at least one of the following in your scientific publication:

  chapter = {Face Recognition in Challenging Environments: An Experimental and Reproducible Research Survey},
  author = {G\"unther, Manuel and El Shafey, Laurent and Marcel, S\'ebastien},
  editor = {Bourlai, Thirimachos},
  title = {Face Recognition Across the Imaging Spectrum},
  edition = {1},
  year = {2016},
  month = feb,
  publisher = {Springer}

  title = {An Open Source Framework for Standardized Comparisons of Face Recognition Algorithms},
  author = {G\"unther, Manuel and Wallace, Roy and Marcel, S\'ebastien},
  editor = {Fusiello, Andrea and Murino, Vittorio and Cucchiara, Rita},
  booktitle = {European Conference on Computer Vision (ECCV) Workshops and Demonstrations},
  series = {Lecture Notes in Computer Science},
  volume = {7585},
  year = {2012},
  month = oct,
  pages = {547-556},
  publisher = {Springer},


[TP91]M. Turk and A. Pentland. Eigenfaces for recognition. Journal of Cognitive Neuroscience, 3(1):71-86, 1991.
[ZKC+98]W. Zhao, A. Krishnaswamy, R. Chellappa, D. Swets and J. Weng. Discriminant analysis of principal components for face recognition, pages 73-85. Springer Verlag Berlin, 1998.
[Pri07]S. J. D. Prince. Probabilistic linear discriminant analysis for inferences about identity. Proceedings of the International Conference on Computer Vision. 2007.
[ESM+13]L. El Shafey, Chris McCool, Roy Wallace and Sébastien Marcel. A scalable formulation of probabilistic linear discriminant analysis: applied to face recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 35(7):1788-1794, 7/2013.
[MWP98]B. Moghaddam, W. Wahid and A. Pentland. Beyond eigenfaces: probabilistic matching for face recognition. IEEE International Conference on Automatic Face and Gesture Recognition, pages 30-35. 1998.
[GW09]M. Günther and R.P. Würtz. Face detection and recognition using maximum likelihood classifiers on Gabor graphs. International Journal of Pattern Recognition and Artificial Intelligence, 23(3):433-461, 2009.


This documentation is still under development. Here is a list of things that needs to be done:


complete this list, once the other packages are documented as well.

(The original entry is located in /local/builds/bob/, line 221.)


Add more documentation for the PLDA constructor, i.e., by explaining the parameters

(The original entry is located in /local/builds/bob/ of, line 3.)


Find a way that this class’ methods get correctly documented, instead of the wrapper class.

(The original entry is located in /local/builds/bob/ of, line 5.)

Indices and tables