The ``bob.bio`` 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.
``scikit-biometrics`` provides open source tools to run comparable and reproducible biometric recognition experiments.
It covers the following biometrics traits:
The ``bob.bio`` packages contain several implementations of each of the above steps, so you can either choose from the existing methods or use your own.
* Face Biometrics: `scikit-face-biometrics <http://gitlab.idiap.ch/bob/bob.bio.face>`_
The ``bob.bio`` packages are derived from the former `FaceRecLib <http://pypi.python.org/pypi/facereclib>`__, which is herewith outdated.
.. todo::
We might need a new logo
bob.bio.base in one shot
========================
Get Started
============
If you are too lazy to go through the documentation, and just want to see what this is about, just run the command below:
Compare two samples using a face recognition algorithm from `scikit-face-biometrics <http://gitlab.idiap.ch/bob/bob.bio.face>`_
.. code-block:: sh
bob bio pipelines vanilla-biometrics --help
bob bio compare-samples -p facenet me.png not_me.png
List all algorithms available
.. code-block:: sh
resources.py --type p
Structure of the Biometric Recognition Framework
================================================
The :py:mod:`bob.bio.base` 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.
.. todo::
This command should change name.
The implementation of (most of) the tools is separated into other packages in the ``bob.bio`` namespace.
All of these packages can be easily combined.
Here is a growing list of derived packages:
* :ref:`bob.bio.spear <bob.bio.spear>` Tools to run speaker recognition experiments, including voice activity detection, Cepstral feature extraction, and speaker databases
* :ref:`bob.bio.vein <bob.bio.vein>` Tools to run vein recognition experiments, such as finger RoI detection, image binarization and template matching, and access to multiple vein image databases
* :ref:`bob.bio.face <bob.bio.face>` Tools to run face recognition experiments, such as face detection, facial feature extraction and comparison, and face image databases
* :ref:`bob.bio.video <bob.bio.video>` An extension of face recognition algorithms to run on video data, and the according video databases
* :ref:`bob.bio.gmm <bob.bio.gmm>` 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]_.
Citing our Publications
...
...
@@ -93,12 +86,11 @@ Users Guide
installation
biometrics_intro
biometrics_eval
struct_bio_rec_sys
experiments
implementation
filelist-guide
annotations
vanilla_biometrics_intro
vanilla_biometrics_experiment
legacy
hands_on_database
Reference Manual
...
...
@@ -112,27 +104,6 @@ Reference Manual
References
==========
.. [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.
In our very first example, we've shown how to compare two samples using the ``bob bio compare-samples`` command, where the "biometric" algorithm is set with the argument ``-p``.
The ``-p`` points to a so called :any:`bob.bio.base.pipelines.VanillaBiometricsPipeline`.
The Vanilla Biometrics represents **the simplest** biometrics pipeline possible and for this reason is the backbone for any biometric test in this library.
It's basically composed of:
**Transformer:** Instance of :py:class`sklearn.pipeline.Pipeline` or a `sklearn.base.BaseEstimator` that applies one or several transformations in an input sample.
**Biometric Algorithm:** Instance of :py:class:`bob.bio.base.pipelines.vanilla_biometrics.abstract_classes.BioAlgorithm` that implements the methods `enroll` and `score`.
Transformer
-----------
.. todo::
Explain what transformer is by pointing to scikit learn and ``bob.pipelines``.
Add a code sniped so people can copy and paste
Biometric Algorithm:
--------------------
.. todo::
Explain what Biometric algorithm is and what someone needs to do to implement their own Biome (for instance, implement the 2 primitives, enroll/score).