From 85f05c730a30a388f02ed57202465a1252dd7bd2 Mon Sep 17 00:00:00 2001
From: Manuel Guenther <manuel.guenther@idiap.ch>
Date: Thu, 25 Jun 2015 20:08:55 +0200
Subject: [PATCH] Optimized implementation of GridGraph; added tons of
 documentation; updated eigenface configuration

---
 bob/bio/face/algorithm/__init__.py          |   3 +
 bob/bio/face/config/extractor/eigenface.py  |   2 +-
 bob/bio/face/config/extractor/grid_graph.py |   7 +-
 bob/bio/face/extractor/Eigenface.py         |  13 +-
 bob/bio/face/extractor/GridGraph.py         |  58 ++++--
 bob/bio/face/extractor/__init__.py          |   3 +
 bob/bio/face/preprocessor/FaceDetect.py     |   2 +
 bob/bio/face/preprocessor/__init__.py       |   3 +
 bob/bio/face/script/baselines.py            |  25 +--
 bob/bio/face/test/test_extractors.py        |   4 +-
 doc/baselines.rst                           | 194 +++++++++++++++++++
 doc/conf.py                                 |   8 +-
 doc/img/CMC.png                             | Bin 0 -> 23763 bytes
 doc/img/DET.png                             | Bin 0 -> 34253 bytes
 doc/img/ROC.png                             | Bin 0 -> 40785 bytes
 doc/img/favicon.ico                         | Bin 0 -> 4286 bytes
 doc/img/logo.png                            | Bin 0 -> 11280 bytes
 doc/implementation.rst                      | 197 ++++++++++++++++++++
 doc/implemented.rst                         |  58 ++++++
 doc/index.rst                               |  53 +++++-
 doc/links.rst                               |  23 +++
 doc/references.rst                          |  33 ++++
 22 files changed, 634 insertions(+), 52 deletions(-)
 create mode 100644 doc/baselines.rst
 create mode 100644 doc/img/CMC.png
 create mode 100644 doc/img/DET.png
 create mode 100644 doc/img/ROC.png
 create mode 100644 doc/img/favicon.ico
 create mode 100644 doc/img/logo.png
 create mode 100644 doc/implementation.rst
 create mode 100644 doc/implemented.rst
 create mode 100644 doc/links.rst
 create mode 100644 doc/references.rst

diff --git a/bob/bio/face/algorithm/__init__.py b/bob/bio/face/algorithm/__init__.py
index 63b18377..ae17f3c0 100644
--- a/bob/bio/face/algorithm/__init__.py
+++ b/bob/bio/face/algorithm/__init__.py
@@ -1,2 +1,5 @@
 from .GaborJet import GaborJet
 from .LGBPHS import LGBPHS
+
+# gets sphinx autodoc done right - don't remove it
+__all__ = [_ for _ in dir() if not _.startswith('_')]
diff --git a/bob/bio/face/config/extractor/eigenface.py b/bob/bio/face/config/extractor/eigenface.py
index 7fae79ed..f0f38a77 100644
--- a/bob/bio/face/config/extractor/eigenface.py
+++ b/bob/bio/face/config/extractor/eigenface.py
@@ -4,5 +4,5 @@ import bob.bio.face
 
 # compute eigenfaces using the training database
 extractor = bob.bio.face.extractor.Eigenface(
-    subspace_dimension = 100
+    subspace_dimension = .95
 )
diff --git a/bob/bio/face/config/extractor/grid_graph.py b/bob/bio/face/config/extractor/grid_graph.py
index 02b93c0a..f5741a01 100644
--- a/bob/bio/face/config/extractor/grid_graph.py
+++ b/bob/bio/face/config/extractor/grid_graph.py
@@ -4,9 +4,6 @@ import bob.bio.base
 import bob.bio.face
 import math
 
-# load the face cropping parameters
-cropper = bob.bio.base.load_resource("face-crop-eyes", "preprocessor")
-
 extractor = bob.bio.face.extractor.GridGraph(
     # Gabor parameters
     gabor_sigma = math.sqrt(2.) * math.pi,
@@ -15,7 +12,5 @@ extractor = bob.bio.face.extractor.GridGraph(
     normalize_gabor_jets = True,
 
     # setup of the fixed grid
-    node_distance = (4, 4),
-    first_node = (6, 6),
-    image_resolution = cropper.cropped_image_size
+    node_distance = (8, 8)
 )
diff --git a/bob/bio/face/extractor/Eigenface.py b/bob/bio/face/extractor/Eigenface.py
index ad8bb884..b5464cee 100644
--- a/bob/bio/face/extractor/Eigenface.py
+++ b/bob/bio/face/extractor/Eigenface.py
@@ -36,7 +36,18 @@ class Eigenface (Extractor):
 
     logger.info("  -> Training LinearMachine using PCA (SVD)")
     t = bob.learn.linear.PCATrainer()
-    self.machine, __eig_vals = t.train(data)
+    self.machine, variances = t.train(data)
+
+    # compute variance percentage, if desired
+    if isinstance(self.subspace_dimension, float):
+      cummulated = numpy.cumsum(variances) / numpy.sum(variances)
+      for index in range(len(cummulated)):
+        if cummulated[index] > self.subspace_dimension:
+          self.subspace_dimension = index
+          break
+      self.subspace_dimension = index
+      logger.info("  -> Keeping %d eigenvectors" % self.subspace_dimension)
+
     # Machine: get shape, then resize
     self.machine.resize(self.machine.shape[0], self.subspace_dimension)
     self.machine.save(bob.io.base.HDF5File(extractor_file, "w"))
diff --git a/bob/bio/face/extractor/GridGraph.py b/bob/bio/face/extractor/GridGraph.py
index 783521cd..c8a2a9ac 100644
--- a/bob/bio/face/extractor/GridGraph.py
+++ b/bob/bio/face/extractor/GridGraph.py
@@ -35,7 +35,6 @@ class GridGraph (Extractor):
 
       # setup of static grid
       node_distance = None,    # one or two integral values
-      image_resolution = None, # always two integral values
       first_node = None,       # one or two integral values, or None -> automatically determined
   ):
 
@@ -57,7 +56,6 @@ class GridGraph (Extractor):
         nodes_above_eyes = nodes_above_eyes,
         nodes_below_eyes = nodes_below_eyes,
         node_distance = node_distance,
-        image_resolution = image_resolution,
         first_node = first_node
     )
 
@@ -74,7 +72,7 @@ class GridGraph (Extractor):
 
     # create graph extractor
     if eyes is not None:
-      self.graph = bob.ip.gabor.Graph(
+      self._aligned_graph = bob.ip.gabor.Graph(
           righteye = [int(e) for e in eyes['reye']],
           lefteye = [int(e) for e in eyes['leye']],
           between = int(nodes_between_eyes),
@@ -83,43 +81,63 @@ class GridGraph (Extractor):
           below = int(nodes_below_eyes)
       )
     else:
-      if node_distance is None or image_resolution is None:
-        raise ValueError("Please specify either 'eyes' or the grid parameters 'first_node', 'last_node', and 'node_distance'!")
-      if isinstance(node_distance, (int, float)):
-         node_distance = (int(node_distance), int(node_distance))
-      if first_node is None:
+      if node_distance is None:
+        raise ValueError("Please specify either 'eyes' or the grid parameters 'node_distance' (and 'first_node')!")
+      self._aligned_graph = None
+      self._last_image_resolution = None
+      self.first_node = first_node
+      self.node_distance = node_distance
+      if isinstance(self.node_distance, (int, float)):
+         self.node_distance = (int(self.node_distance), int(self.node_distance))
+
+    self.normalize_jets = normalize_gabor_jets
+    self.trafo_image = None
+
+  def _extractor(self, image):
+    """Creates an extractor based on the given image."""
+
+    if self.trafo_image is None or self.trafo_image.shape[1:3] != image.shape:
+      # create trafo image
+      self.trafo_image = numpy.ndarray((self.gwt.number_of_wavelets, image.shape[0], image.shape[1]), numpy.complex128)
+
+    if self._aligned_graph is not None:
+      return self._aligned_graph
+
+    if self._last_image_resolution != image.shape:
+      self._last_image_resolution = image.shape
+      if self.first_node is None:
         first_node = [0,0]
         for i in (0,1):
-          offset = int((image_resolution[i] - int(image_resolution[i]/node_distance[i])*node_distance[i]) / 2)
-          if offset < node_distance[i]//2: # This is not tested, but should ALWAYS be the case.
-            offset += node_distance[i]//2
+          offset = int((image.shape[i] - int(image.shape[i]/self.node_distance[i])*self.node_distance[i]) / 2)
+          if offset < self.node_distance[i]//2: # This is not tested, but should ALWAYS be the case.
+            offset += self.node_distance[i]//2
           first_node[i] = offset
-      last_node = tuple([int(image_resolution[i] - max(first_node[i],1)) for i in (0,1)])
+      else:
+        first_node = self.first_node
+      last_node = tuple([int(image.shape[i] - max(first_node[i],1)) for i in (0,1)])
 
       # take the specified nodes
-      self.graph = bob.ip.gabor.Graph(
+      self._graph = bob.ip.gabor.Graph(
           first = first_node,
           last = last_node,
-          step = node_distance
+          step = self.node_distance
       )
 
-    self.normalize_jets = normalize_gabor_jets
-    self.trafo_image = None
+    return self._graph
+
 
   def __call__(self, image):
     assert image.ndim == 2
     assert isinstance(image, numpy.ndarray)
     assert image.dtype == numpy.float64
 
-    if self.trafo_image is None or self.trafo_image.shape[1:3] != image.shape:
-      # create trafo image
-      self.trafo_image = numpy.ndarray((self.gwt.number_of_wavelets, image.shape[0], image.shape[1]), numpy.complex128)
+    extractor = self._extractor(image)
 
     # perform Gabor wavelet transform
     self.gwt.transform(image, self.trafo_image)
 
     # extract face graph
-    jets = self.graph.extract(self.trafo_image)
+    jets = extractor.extract(self.trafo_image)
 
     # normalize the Gabor jets of the graph only
     if self.normalize_jets:
diff --git a/bob/bio/face/extractor/__init__.py b/bob/bio/face/extractor/__init__.py
index ee10aebc..0226aadf 100644
--- a/bob/bio/face/extractor/__init__.py
+++ b/bob/bio/face/extractor/__init__.py
@@ -2,3 +2,6 @@ from .DCTBlocks import DCTBlocks
 from .GridGraph import GridGraph
 from .LGBPHS import LGBPHS
 from .Eigenface import Eigenface
+
+# gets sphinx autodoc done right - don't remove it
+__all__ = [_ for _ in dir() if not _.startswith('_')]
diff --git a/bob/bio/face/preprocessor/FaceDetect.py b/bob/bio/face/preprocessor/FaceDetect.py
index e833c67c..76e959d6 100644
--- a/bob/bio/face/preprocessor/FaceDetect.py
+++ b/bob/bio/face/preprocessor/FaceDetect.py
@@ -45,6 +45,8 @@ class FaceDetect (Base):
       lowest_scale = lowest_scale
     )
 
+    assert face_cropper is not None
+
     self.sampler = bob.ip.facedetect.Sampler(scale_factor=scale_base, lowest_scale=lowest_scale, distance=distance)
     if cascade is None:
       self.cascade = bob.ip.facedetect.default_cascade()
diff --git a/bob/bio/face/preprocessor/__init__.py b/bob/bio/face/preprocessor/__init__.py
index 1b910737..c2241a86 100644
--- a/bob/bio/face/preprocessor/__init__.py
+++ b/bob/bio/face/preprocessor/__init__.py
@@ -6,3 +6,6 @@ from .TanTriggs import TanTriggs
 from .INormLBP import INormLBP
 from .HistogramEqualization import HistogramEqualization
 from .SelfQuotientImage import SelfQuotientImage
+
+# gets sphinx autodoc done right - don't remove it
+__all__ = [_ for _ in dir() if not _.startswith('_')]
diff --git a/bob/bio/face/script/baselines.py b/bob/bio/face/script/baselines.py
index 0cc241b1..0358684e 100755
--- a/bob/bio/face/script/baselines.py
+++ b/bob/bio/face/script/baselines.py
@@ -58,8 +58,9 @@ def command_line_arguments(command_line_parameters):
   parser.add_argument('-d', '--database', choices = available_databases, default = 'atnt', help = 'The database on which the baseline algorithm is executed.')
   # - the database to choose
   parser.add_argument('-b', '--baseline-directory', default = 'baselines', help = 'The sub-directory, where the baseline results are stored.')
-  # - the directory to write
-  parser.add_argument('-f', '--directory', help = 'The directory to write the data of the experiment into. If not specified, the default directories of the verify.py script are used (see ./bin/verify.py --help).')
+  # - the directories to write to
+  parser.add_argument('-T', '--temp-directory', help = 'The directory to write temporary the data of the experiment into. If not specified, the default directory of the verify.py script is used (see ./bin/verify.py --help).')
+  parser.add_argument('-R', '--result-directory', help = 'The directory to write the resulting score files of the experiment into. If not specified, the default directories of the verify.py script are used (see ./bin/verify.py --help).')
 
   # - use the Idiap grid -- option is only useful if you are at Idiap
   parser.add_argument('-g', '--grid', action = 'store_true', help = 'Execute the algorithm in the SGE grid.')
@@ -225,9 +226,11 @@ def main(command_line_parameters = None):
       if has_eval:
         command += ['--groups', 'dev', 'eval']
 
-      # set the directories, if desired; we set both directories to be identical.
-      if args.directory is not None:
-        command += ['--temp-directory', os.path.join(args.directory, args.database), '--result-directory', os.path.join(args.directory, args.database)]
+      # set the directories, if desired
+      if args.temp_directory is not None:
+        command += ['--temp-directory', os.path.join(args.temp_directory)]
+      if args.result_directory is not None:
+        command += ['--result-directory', os.path.join(args.result_directory)]
 
       # set the verbosity level
       if args.verbose:
@@ -249,17 +252,17 @@ def main(command_line_parameters = None):
 
     # get the base directory of the results
     is_idiap = os.path.isdir("/idiap")
-    if args.directory is None:
-      args.directory = "/idiap/user/%s/%s" % (os.environ["USER"], args.database) if is_idiap else "results"
-    if not os.path.exists(args.directory):
+    if args.result_directory is None:
+      args.result_directory = "/idiap/user/%s/%s" % (os.environ["USER"], args.database) if is_idiap else "results"
+    if not os.path.exists(args.result_directory):
       if not args.dry_run:
-        raise IOError("The result directory '%s' cannot be found. Please specify the --directory as it was specified during execution of the algorithms." % args.directory)
+        raise IOError("The result directory '%s' cannot be found. Please specify the --result-directory as it was specified during execution of the algorithms." % args.result_directory)
 
     # get the result directory of the database
-    result_dir = os.path.join(args.directory, args.baseline_directory)
+    result_dir = os.path.join(args.result_directory, args.baseline_directory)
     if not os.path.exists(result_dir):
       if not args.dry_run:
-        raise IOError("The result directory '%s' for the desired database cannot be found. Did you already run the experiments for this database?" % result_dir)
+        raise IOError("The result directory '%s' for the desired experiment cannot be found. Did you already run the experiments?" % result_dir)
 
     # iterate over the algorithms and collect the result files
     result_dev = []
diff --git a/bob/bio/face/test/test_extractors.py b/bob/bio/face/test/test_extractors.py
index 97fee729..41b657da 100644
--- a/bob/bio/face/test/test_extractors.py
+++ b/bob/bio/face/test/test_extractors.py
@@ -74,7 +74,7 @@ def test_graphs():
   assert not graph.requires_training
 
   # generate smaller extractor, using mixed tuple and int input for the node distance and first location
-  graph = bob.bio.face.extractor.GridGraph(node_distance = 24, image_resolution = data.shape)
+  graph = bob.bio.face.extractor.GridGraph(node_distance = 24)
 
   # extract features
   feature = graph(data)
@@ -104,7 +104,7 @@ def test_graphs():
     nodes_below_eyes = 7
   )
 
-  nodes = graph.graph.nodes
+  nodes = graph._extractor(data).nodes
   assert len(nodes) == 100
   assert numpy.allclose(nodes[22], eyes['reye'])
   assert numpy.allclose(nodes[27], eyes['leye'])
diff --git a/doc/baselines.rst b/doc/baselines.rst
new file mode 100644
index 00000000..97fc3a83
--- /dev/null
+++ b/doc/baselines.rst
@@ -0,0 +1,194 @@
+.. vim: set fileencoding=utf-8 :
+.. author: Manuel Günther <manuel.guenther@idiap.ch>
+.. date: Thu Sep 20 11:58:57 CEST 2012
+
+.. _baselines:
+
+=============================
+Executing Baseline Algorithms
+=============================
+
+The first thing you might want to do is to execute one of the baseline face recognition algorithms that are implemented in ``bob.bio``.
+
+Setting up your Database
+------------------------
+
+As mentioned in the documentation of :ref:`bob.bio.base <bob.bio.base>`, the image databases are not included in this package, so you have to download them.
+For example, you can easily download the images of the `AT&T database`_, for links to other utilizable image databases please read the :ref:`bob.bio.face.databases` section.
+
+By default, ``bob.bio`` does not know, where the images are located.
+Hence, before running experiments you have to specify the image database directories.
+How this is done is explained in more detail in the :ref:`bob.bio.base.installation`.
+
+
+Running Baseline Experiments
+----------------------------
+
+To run the baseline experiments, you can use the ``./bin/baselines.py`` script by just going to the console and typing:
+
+.. code-block:: sh
+
+   $ ./bin/baselines.py
+
+This script is a simple wrapper for the ``./bin/verify.py`` script that is explained in more detail in :ref:`bob.bio.base.experiments`.
+The ``./bin/baselines.py --help`` option shows you, which other options you have.
+Here is an almost complete extract:
+
+* ``--database``: The database and protocol you want to use.
+  By default this is set to the image database *atnt*.
+* ``--algorithms``: The recognition algorithms that you want to execute.
+  By default, only the *eigenface* algorithm is executed.
+* ``--all``: Execute all algorithms that are implemented.
+* ``--temp-directory``: The directory where temporary files of the experiments are put to.
+* ``--result-directory``: The directory where resulting score files of the experiments are put to.
+* ``--evaluate``: After running the experiments, the resulting score files will be evaluated, and the result is written to console.
+* ``--dry-run``: Instead of executing the algorithm (or the evaluation), only print the command that would have been executed.
+* ``--verbose``: Increase the verbosity level of the script.
+  By default, only the commands that are executed are printed, and the rest of the calculation runs quietly.
+  You can increase the verbosity by adding the ``--verbose`` parameter repeatedly (up to three times).
+
+Usually it is a good idea to have at least verbose level 2 (i.e., calling ``./bin/baselines.py --verbose --verbose``, or the short version ``./bin/baselines.py -vv``).
+
+Running in Parallel
+~~~~~~~~~~~~~~~~~~~
+
+To run the experiments in parallel, as usual you can define an SGE grid configuration, or run with parallel threads on the local machine.
+For the ``./bin/baselines.py`` script, the grid configuration is adapted to each of the algorithms.
+Hence, to run in the SGE grid, you can simply add the ``--grid`` command line option, without parameters.
+Similarly, to run the experiments in parallel on the local machine, simply add a ``--parallel <N>`` option, where ``<N>`` specifies the number of parallel jobs you want to execute.
+
+When running the algorithms from the :ref:`bob.bio.gmm <bob.bio.gmm>` package in parallel, the specialized scripts are executed.
+This will speed up the training of the UBM (and possible additional steps) tremendously.
+
+
+The Algorithms
+--------------
+
+The algorithms present an (incomplete) set of state-of-the-art face recognition algorithms. Here is the list of short-cuts:
+
+* ``eigenface``: The eigenface algorithm as proposed by [TP91]_. It uses the pixels as raw data, and applies a *Principal Component Analysis* (PCA) on it:
+
+  - preprocessor : :py:class:`bob.bio.face.preprocessor.FaceCrop`
+  - feature : :py:class:`bob.bio.base.extractor.Linearize`
+  - algorithm : :py:class:`bob.bio.base.algorithm.PCA`
+
+* ``lda``: The LDA algorithm applies a *Linear Discriminant Analysis* (LDA), here we use the combined PCA+LDA approach [ZKC+98]_:
+
+  - preprocessor : :py:class:`bob.bio.face.preprocessor.FaceCrop`
+  - feature : :py:class:`bob.bio.face.extractor.Eigenface`
+  - algorithm : :py:class:`bob.bio.base.algorithm.LDA`
+
+* ``gaborgraph``: This method extract grid graphs of Gabor jets from the images, and computes a Gabor phase based similarity [GHW12]_.
+
+  - preprocessor : :py:class:`bob.bio.face.preprocessor.INormLBP`
+  - feature : :py:class:`bob.bio.face.extractor.GridGraph`
+  - algorithm : :py:class:`bob.bio.face.algorithm.GaborJet`
+
+
+* ``lgbphs``: *Local Gabor Binary Pattern Histogram Sequences* (LGBPHS) [ZSG+05]_ are extracted from the images and compares using the histogram intersection measure:
+
+  - preprocessor : :py:class:`bob.bio.face.preprocessor.TanTriggs`
+  - feature : :py:class:`bob.bio.face.extractor.LGBPHS`
+  - algorithm : :py:class:`bob.bio.face.algorithm.LGBPHS`
+
+* ``plda``: *Probabilistic LDA* (PLDA) [Pri07]_ is a probabilistic generative version of the LDA, in its scalable formulation of [ESM+13]_.
+  Here, we also apply it on pixel-based representations of the image, though also other features should be possible.
+
+  - preprocessor : :py:class:`bob.bio.face.preprocessor.FaceCrop`
+  - feature : :py:class:`bob.bio.base.extractor.Linearize`
+  - algorithm : :py:class:`bob.bio.base.algorithm.PLDA`
+
+* ``bic``: In the *Bayesian Intrapersonal/Extrapersonal Classifier* (BIC) [MWP98]_, a gabor-grid-graph based similarity vector is classified to be intrapersonal (i.e., both images are from the same person) or extrapersonal, as explained in [GW09]_.
+
+  - preprocessor : :py:class:`bob.bio.face.preprocessor.FaceCrop`
+  - feature : :py:class:`bob.bio.face.extractor.GridGraph`
+  - algorithm : :py:class:`bob.bio.base.algorithm.BIC`
+
+.. note::
+  The ``plda`` algorithm is currently under construction and the setup is not yet useful.
+
+
+Further algorithms are available, when the :ref:`bob.bio.gmm <bob.bio.gmm>` package is installed:
+
+* ``gmm``: *Gaussian Mixture Models* (GMM) [MM09]_ are extracted from *Discrete Cosine Transform* (DCT) block features.
+
+  - preprocessor : :py:class:`bob.bio.face.preprocessor.TanTriggs`
+  - feature : :py:class:`bob.bio.face.extractor.DCTBlocks`
+  - algorithm : :py:class:`bob.bio.gmm.algorithm.GMM`
+
+* ``isv``: As an extension of the GMM algorithm, *Inter-Session Variability* (ISV) modeling [WMM+11]_ is used to learn what variations in images are introduced by identity changes and which not.
+
+  - preprocessor : :py:class:`bob.bio.face.preprocessor.TanTriggs`
+  - feature : :py:class:`bob.bio.face.extractor.DCTBlocks`
+  - algorithm : :py:class:`bob.bio.gmm.algorithm.ISV`
+
+* ``ivector``: Another extension of the GMM algorithm is *Total Variability* (TV) modeling [WM12]_ (aka. I-Vector), which tries to learn a subspace in the GMM super-vector space.
+
+  - preprocessor : :py:class:`bob.bio.face.preprocessor.TanTriggs`
+  - feature : :py:class:`bob.bio.face.extractor.DCTBlocks`
+  - algorithm : :py:class:`bob.bio.gmm.algorithm.IVector`
+
+.. note::
+  The ``ivector`` algorithm needs a lot of training data and fails on small databases such as the `AT&T database`_.
+
+
+Additionally, the following algorithms can be executed, when the :ref:`bob.bio.csu <bob.bio.csu>` package is installed.
+
+* ``lrpca``: In Local Region PCA [PBD+11]_, the face is sub-divided into local regions and a PCA is performed for each local region.
+
+  - preprocessor : :py:class:`bob.bio.csu.preprocessor.LRPCA`
+  - feature : :py:class:`bob.bio.csu.extractor.LRPCA`
+  - algorithm : :py:class:`bob.bio.csu.algorithm.LRPCA`
+
+* ``lda_ir``: The LDA-IR (a.k.a. CohortLDA [LBP+12]_) extracts color information from images after, and computes a PCA+LDA projection on two color layers.
+
+  - preprocessor : :py:class:`bob.bio.csu.preprocessor.LDAIR`
+  - feature : :py:class:`bob.bio.csu.extractor.LDAIR`
+  - algorithm : :py:class:`bob.bio.csu.algorithm.LDAIR`
+
+.. note::
+   The ``lrpca`` and ``ldair`` algorithms require hand-labeled eye locations.
+   Therefore, they can not be run on the default ``atnt`` database.
+
+.. _baseline_results:
+
+Baseline Results
+----------------
+
+To evaluate the results, a wrapper call to ``./bin/evaluate.py`` is produced by the ``./bin/baselines.py --evaluate`` command.
+Several types of evaluation can be achieved, see :ref:`bob.bio.base.evaluate` for details.
+Particularly, here we can enable ROC curves, DET plots, CMC curves and the computation of EER/HTER.
+Hence, the complete set of results of the baseline experiments are generated using:
+
+.. code-block:: sh
+
+  $ ./bin/baselines.py --all -vv --evaluate ROC DET CMC HTER
+
+If you specified other parameters for the execution of the algorithms, e.g., the ``--directory`` flag, you have to add these options here as well.
+If you ran only a sub-set of the available, the missing algorithms will just be skipped.
+The resulting files will be ``ROC.pdf``, ``DET.pdf`` and ``CMC.pdf``, and the HTER results are simply written to console.
+
+For the `AT&T database`_ the results should be as follows:
+
+.. image:: img/ROC.png
+  :width: 35%
+.. image:: img/DET.png
+  :width: 27%
+.. image:: img/CMC.png
+  :width: 35%
+
+
+.. table:: The HTER results of the baseline algorithms on the AT&T database
+
+  +-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+
+  |  eigenface  |     lda     |  gaborgraph |    lgbphs   |     gmm     |     isv     |    plda     |     bic     |
+  +=============+=============+=============+=============+=============+=============+=============+=============+
+  |   8.368%    |    9.763%   |   4.579%    |    8.500%   |    1.237%   |    0.053%   |    7.921%   |    3.526%   |
+  +-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+
+
+
+.. note::
+  The ``lrpca`` and ``lda_ir`` algorithms require hand-labeled eye positions to run.
+  Since the AT&T database does not provide eye positions, it is not possible to provide baseline results on AT&T for these two algorithms.
+
+.. include:: links.rst
diff --git a/doc/conf.py b/doc/conf.py
index 7d42f3e1..87fe2b21 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -86,7 +86,7 @@ release = distribution.version
 
 # List of patterns, relative to source directory, that match files and
 # directories to ignore when looking for source files.
-#exclude_patterns = ['**/links.rst']
+exclude_patterns = ['links.rst', 'references.rst']
 
 # The reST default role (used for this markup: `text`) to use for all documents.
 #default_role = None
@@ -133,12 +133,12 @@ if sphinx.__version__ >= "1.0":
 
 # The name of an image file (relative to this directory) to place at the top
 # of the sidebar.
-html_logo = ''
+html_logo = 'img/logo.png'
 
 # The name of an image file (within the static path) to use as favicon of the
 # docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
 # pixels large.
-html_favicon = ''
+html_favicon = 'img/favicon.ico'
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
@@ -246,7 +246,7 @@ autodoc_default_flags = ['members', 'undoc-members', 'inherited-members', 'show-
 
 # For inter-documentation mapping:
 from bob.extension.utils import link_documentation
-intersphinx_mapping = link_documentation(['python', 'numpy', 'bob.io.base', 'bob.db.verification.utils'])
+intersphinx_mapping = link_documentation(['python', 'numpy', 'bob.bio.gmm', 'bob.bio.csu'])
 
 
 def setup(app):
diff --git a/doc/img/CMC.png b/doc/img/CMC.png
new file mode 100644
index 0000000000000000000000000000000000000000..4adf6a233298de74b96cfeaa2c17d88ae49de7e7
GIT binary patch
literal 23763
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

literal 0
HcmV?d00001

diff --git a/doc/img/DET.png b/doc/img/DET.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8ef499c16c3c13b8f44073aae17727776b41371
GIT binary patch
literal 34253
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
J7b}^D{y)R2)5!n;

literal 0
HcmV?d00001

diff --git a/doc/img/ROC.png b/doc/img/ROC.png
new file mode 100644
index 0000000000000000000000000000000000000000..10825c3117f34bc8b78b174f28701e8b691ae902
GIT binary patch
literal 40785
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
CjIOKz

literal 0
HcmV?d00001

diff --git a/doc/img/favicon.ico b/doc/img/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..4cc3264302627d40868261add69eb755856611b6
GIT binary patch
literal 4286
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

literal 0
HcmV?d00001

diff --git a/doc/img/logo.png b/doc/img/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..b9dd573a01019afd1af58a881996930e5212699d
GIT binary patch
literal 11280
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

literal 0
HcmV?d00001

diff --git a/doc/implementation.rst b/doc/implementation.rst
new file mode 100644
index 00000000..76d9d4b7
--- /dev/null
+++ b/doc/implementation.rst
@@ -0,0 +1,197 @@
+
+======================
+Implementation Details
+======================
+
+Image preprocessing
+-------------------
+
+Image preprocessing is an important stage for face recognition.
+In :ref:`bob.bio.face <bob.bio.face>`, several different algorithms to perform photometric enhancement of facial images are implemented.
+These algorithms rely on facial images, which are aligned according to the eye locations, and scaled to a specific image resolution.
+
+Face cropping
+~~~~~~~~~~~~~
+
+However, for most of the image databases, in the original face images the faces are not aligned, but instead the eye locations are labeled by hand.
+Hence, before the photometric enhancement algorithms can be applied, faces must be aligned according to the hand-labeled eye locations.
+This can be achieved using the :py:class:`bob.bio.face.preprocessor.FaceCrop` class.
+It will take the image and the hand-labeled eye locations and crop the face according to some parameters, which can be defined in its constructor.
+
+So, now we have a preprocessors to perform face cropping, and some preprocessors to perform photometric enhancement.
+However, we might want to have a photometric enhancement *on top of* the aligned faces.
+In theory, there are several ways to achieve this:
+
+1. Copy the face alignment code into all photometric enhancement classes.
+
+   As copying code is generally a bad choice, we drop this option.
+
+
+2. Use the face cropping as a base class and derive the photometric enhancement classes from it.
+
+   This option is worth implementing, and this was the way, the FaceRecLib_ handled preprocessing.
+   However, it required to copy code inside the configuration files.
+   This means that, when we want to run on a different image resolution, we need to change all configuration files.
+   Option 2 dropped.
+
+
+3. Provide the face cropper as parameter to the photometric enhancement classes.
+
+   This option has the advantage that the configuration has to be written only once.
+   Also, we might change the face cropper to something else later, without needing to the the photometric enhancement code later on.
+   Option 3 accepted.
+
+Now, we have a closer look into how the image preprocessing is implemented.
+Let's take the example of the :py:class:`bob.bio.face.preprocessor.TanTriggs`.
+The constructor takes a ``face_cropper`` as parameter.
+This ``face_cropper`` can be ``None``, when the images are already aligned.
+It can also be a :py:class:`bob.bio.face.preprocessor.FaceCrop` object, which is contains the information, how faces are cropped.
+The :py:class:`bob.bio.face.preprocessor.TanTriggs` algorithm will use the ``face_cropper`` to crop the face, by passing the image and the annotations to the :py:meth:`bob.bio.face.preprocessor.FaceCrop.crop_face` function, perform the photometric enhancement on the cropped image, and return the result.
+
+So far, there is no advantage of option 2 over option 3, since the parameters for face cropping still have to be specified in the configuration file.
+But now comes the clue: The third option, how a ``face_cropper`` can be passed to the constructor is as a :ref:`Resource <bob.bio.face.preprocessors>` key, such as ``'face-crop-eyes'``.
+This will load the face cropping configuration from the registered resource, which has to be generated only once.
+So, to generate a TanTriggs preprocessor that performs face cropping, you can create:
+
+.. code-block:: py
+
+   preprocessor = bob.bio.face.preprocessor.TanTriggs(face_cropper = 'face-crop-eyes')
+
+
+Face detection
+~~~~~~~~~~~~~~
+
+Alright.
+Now if you have swallowed that, there comes the next step: face detection.
+Some of the databases do neither provide hand-labeled eye locations, nor are the images pre-cropped.
+However, we want to use the same algorithms on those images as well, so we have to detect the face (and the facial landmarks), crop the face and perform a photometric enhancement.
+So, image preprocessing becomes a three stage algorithm.
+
+How to combine the two stages, image alignment and photometric enhancement, we have seen before.
+Fortunately, the same technique can be applied for the :py:class:`bob.bio.face.preprocessor.FaceDetect`.
+The face detector takes as an input a ``face_cropper``, where we can use the same options to select a face cropper, just that we cannot pass ``None``.
+Interestingly, the face detector itself can be used as a ``face_cropper`` inside the photometric enhancement classes.
+Hence, to generate a TanTriggs preprocessor that performs face detection, crops the face and performs photometric enhancement, you can create:
+
+.. code-block:: py
+
+   preprocessor = bob.bio.face.preprocessor.TanTriggs(face_cropper = bob.bio.face.preprocessor.FaceDetect(face_cropper = 'face-crop-eyes', use_flandmark = True) )
+
+Or simply (using the face detector :ref:`Resource <bob.bio.face.preprocessors>`):
+
+.. code-block:: py
+
+   preprocessor = bob.bio.face.preprocessor.TanTriggs(face_cropper = 'face-crop-eyes')
+
+
+.. _bob.bio.face.resources:
+
+Registered Resources
+--------------------
+
+.. _bob.bio.face.databases:
+
+Databases
+~~~~~~~~~
+
+One important aspect of :ref:`bob.bio.face <bob.bio.face>` is the relatively large list of supported image data sets, including well-defined evaluation protocols.
+All databases rely on the :py:class:`bob.bio.base.database.DatabaseBob` interface, which in turn uses the :ref:`verification_databases`.
+Please check the link above for information on how to obtain the original data of those data sets.
+
+After downloading and extracting the original data of the data sets, it is necessary that the scripts know, where the data was installed.
+For this purpose, the ``./bin/verify.py`` script can read a special file, where those directories are stored, see :ref:`bob.bio.base.installation`.
+By default, this file is located in your home directory, but you can specify another file on command line.
+
+The other option is to change the directories directly inside the configuration files.
+Here is the list of files and replacement strings for all databases that are registered as resource, in alphabetical order:
+
+* The AT&T database of faces: ``'atnt'``
+
+  - Images: ``[YOUR_ATNT_DIRECTORY]``
+
+* AR face: ``'arface'``
+
+  - Images: ``[YOUR_ARFACE_DIRECTORY]``
+
+* BANCA (english): ``'banca'``
+
+  - Images: [YOUR_BANCA_DIRECTORY]
+
+* CAS-PEAL: ``'caspeal'``
+
+  - Images: ``[YOUR_CAS-PEAL_DIRECTORY]``
+
+* Face Recognition Grand Challenge v2 (FRGC): ``'frgc'``
+
+  - Complete directory: ``[YOUR_FRGC_DIRECTORY]``
+
+  .. note::
+     Due to implementation details, there will be a warning, when the FRGC database resource is loaded.
+     To avoid this warning, you have to modify the FRGC database configuration file.
+
+* The Good, the Bad and the Ugly (GBU): ``'gbu'``
+
+  - Images (taken from MBGC-V1): ``[YOUR_MBGC-V1_DIRECTORY]``
+
+* Labeled Faces in the Wild (LFW): ``'lfw-restricted'``, `'lfw-unrestricted'``
+
+  - Images (aligned with funneling): ``[YOUR_LFW_FUNNELED_DIRECTORY]``
+
+  .. note::
+     In the :ref:`bob.db.lfw <bob.db.lfw>` database interface, we provide automatically detected eye locations, which were detected on the funneled images.
+     Face cropping using these eye locations will only work with the correct images.
+     However, when using the face detector, all types of images will work.
+
+* MOBIO: ``'mobio-image'``, ``'mobio-male'`` ``'mobio-female'``
+
+  - Images (the .png images): ``[YOUR_MOBIO_IMAGE_DIRECTORY]``
+  - Annotations (eyes): ``[YOUR_MOBIO_ANNOTATION_DIRECTORY]``
+
+* Multi-PIE: ``'multipie'``, ``'multipie-pose'``
+
+  - Images: ``[YOUR_MULTI-PIE_IMAGE_DIRECTORY]``
+  - Annotations: ``[YOUR_MULTI-PIE_ANNOTATION_DIRECTORY]``
+
+* SC face: ``'scface'``
+
+  - Images: ``[YOUR_SC_FACE_DIRECTORY]``
+
+* XM2VTS: ``'xm2vts'``
+
+  - Images: ``[YOUR_XM2VTS_DIRECTORY]``
+
+
+You can use the ``./bin/databases.py`` script to list, which data directories are correctly set up.
+
+
+.. _bob.bio.face.preprocessors:
+
+Preprocessors
+~~~~~~~~~~~~~
+
+Photometric enhancement algorithms are -- by default -- registered without face cropping, as ``'base'`` (no enhancement), ``'histogram'`` (histogram equalization), ``'tan-triggs'``, ``'self-quotient'`` (self quotient image) and ``'inorm-lbp'``.
+These resources should only be used, when original images are already cropped (such as in the `AT&T database`_.
+
+The default face cropping is performed by aligning the eye locations such that the eyes (in subject perspective) are located at: right eye: ``(16, 15)``, left eye: ``(16, 48)``, and the image is cropped to resolution ``(80, 64)`` pixels.
+This cropper is registered under the resource key ``'face-crop-eyes'``.
+Based on this cropping, photometric enhancement resources have a common addition: ``'histogram-crop'``, ``'tan-triggs-crop'``, ``'self-quotient-crop'`` and ``'inorm-lbp-crop'``.
+
+For face detection, two resources are registered.
+The ``'face-detect'`` resource will detect the face and perform ``'face-crop-eyes'``, without detecting the eye locations (fixed locations are taken instead).
+Hence, the in-plane rotation of the face rotation not corrected by ``'face-detect'``.
+On the other hand, in ``'landmark-detect'``, face detection and landmark localization are performed, and the face is aligned using ``'face-crop-eyes'``.
+Photometric enhancement is only registered as resource after landmark localization: ``'histogram-landmark'``, ``'tan-triggs-landmark'``, ``'self-quotient-landmark'`` and ``'inorm-lbp-landmark'``.
+
+
+.. _bob.bio.face.extractors:
+
+Feature extractors
+~~~~~~~~~~~~~~~~~~
+
+Only four types of features are registered as resources here:
+
+* ``'dct-blocks'``: DCT blocks with 12 pixels and full overlap, extracting 35 DCT features per block
+* ``'eigenface'``: Pixel vectors projected to face space keeping 95 % variance
+* ``'grid-graph'``: Gabor jets in grid graphs, with 4 pixels distance between nodes
+
+.. include:: links.rst
diff --git a/doc/implemented.rst b/doc/implemented.rst
new file mode 100644
index 00000000..5ac328e0
--- /dev/null
+++ b/doc/implemented.rst
@@ -0,0 +1,58 @@
+.. _bob.bio.face.implemented:
+
+=================================
+Tools implemented in bob.bio.face
+=================================
+
+Summary
+-------
+
+Image Preprocessors
+~~~~~~~~~~~~~~~~~~~
+
+.. autosummary::
+   bob.bio.face.preprocessor.Base
+   bob.bio.face.preprocessor.FaceCrop
+   bob.bio.face.preprocessor.FaceDetect
+
+   bob.bio.face.preprocessor.TanTriggs
+   bob.bio.face.preprocessor.HistogramEqualization
+   bob.bio.face.preprocessor.SelfQuotientImage
+   bob.bio.face.preprocessor.INormLBP
+
+
+
+Image Feature Extractors
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. autosummary::
+   bob.bio.face.extractor.Eigenface
+   bob.bio.face.extractor.DCTBlocks
+   bob.bio.face.extractor.GridGraph
+   bob.bio.face.extractor.LGBPHS
+
+
+Face Recognition Algorithms
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. autosummary::
+   bob.bio.face.algorithm.GaborJet
+   bob.bio.face.algorithm.LGBPHS
+
+
+Preprocessors
+-------------
+
+.. automodule:: bob.bio.face.preprocessor
+
+Extractors
+----------
+
+.. automodule:: bob.bio.face.extractor
+
+Algorithms
+----------
+
+.. automodule:: bob.bio.face.algorithm
+
+.. include:: links.rst
diff --git a/doc/index.rst b/doc/index.rst
index 5c640a71..1ab16268 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -5,16 +5,55 @@
 .. _bob.bio.face:
 
 ===========================================
- Face recognition algorithms and databases
+ Face Recognition Algorithms and Databases
 ===========================================
 
+This package is part of the ``bob.bio`` packages, which provide open source tools to run comparable and reproducible biometric recognition experiments.
+In this package, tools for executing face recognition experiments are provided.
+This includes:
 
-Package Documentation
----------------------
+* Preprocessors to detect, align and photometrically enhance face images
+* Feature extractors that extract features from facial images
+* Recognition algorithms that are specialized on facial features, and
+* Facial image databases including their protocols.
 
-.. automodule:: bob.bio.face
+Additionally, a set of baseline algorithms are defined, which integrate well with the two other ``bob.bio`` packages:
 
-Databases
----------
+* :ref:`bob.bio.gmm <bob.bio.gmm>` defines algorithms based on Gaussian mixture models
+* :ref:`bob.bio.csu <bob.bio.csu>` provides wrapper classes of the `CSU Face Recognition Resources <http://www.cs.colostate.edu/facerec>`_ (only Python 2.7 compatible)
 
-.. automodule:: bob.bio.face.database
+For more detailed information about the structure of the ``bob.bio`` packages, please refer to the documentation of :ref:`bob.bio.base <bob.bio.base>`.
+Particularly, the installation of this and other ``bob.bio`` packages, please read the :ref:`bob.bio.base.installation`.
+
+In the following, we provide more detailed information about the particularities of this package only.
+
+===========
+Users Guide
+===========
+
+.. toctree::
+   :maxdepth: 2
+
+   baselines
+   implementation
+
+================
+Reference Manual
+================
+
+.. toctree::
+   :maxdepth: 2
+
+   implemented
+   py_api
+
+
+.. include:: references.rst
+
+ToDo-List
+=========
+
+This documentation is still under development.
+Here is a list of things that needs to be done:
+
+.. todolist::
diff --git a/doc/links.rst b/doc/links.rst
new file mode 100644
index 00000000..524d215f
--- /dev/null
+++ b/doc/links.rst
@@ -0,0 +1,23 @@
+.. vim: set fileencoding=utf-8 :
+.. author: Manuel Günther <manuel.guenther@idiap.ch>
+.. date: Thu Sep 20 11:58:57 CEST 2012
+
+.. This file contains all links we use for documentation in a centralized place
+
+.. _facereclib: http://pypi.python.org/pypi/facereclib
+.. _idiap: http://www.idiap.ch
+.. _github: http://www.github.com/idiap
+.. _bob: http://www.idiap.ch/software/bob
+.. _github bug reporting system: http://github.com/idiap/facereclib/issues
+.. _idiap at github: http://www.github.com/bioidiap
+.. _at&t database: http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html
+.. _bob's github page: http://idiap.github.com/bob
+.. _gridtk: http://github.com/idiap/gridtk
+.. _buildout: http://www.buildout.org
+.. _nist: http://www.nist.gov/itl/iad/ig/focs.cfm
+.. _pypi: http://pypi.python.org
+.. _sge: http://wiki.idiap.ch/linux/SunGridEngine
+.. _csu face recognition resources: http://www.cs.colostate.edu/facerec
+.. _xfacereclib.extension.csu: http://pypi.python.org/pypi/xfacereclib.extension.CSU
+.. _virtualbox: https://www.virtualbox.org
+.. _hdf5: http://www.hdfgroup.org/HDF5
diff --git a/doc/references.rst b/doc/references.rst
new file mode 100644
index 00000000..c9243106
--- /dev/null
+++ b/doc/references.rst
@@ -0,0 +1,33 @@
+.. vim: set fileencoding=utf-8 :
+.. author: Manuel Günther <manuel.guenther@idiap.ch>
+.. date: Thu Sep 20 11:58:57 CEST 2012
+
+==========
+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.
+.. [GHW12]   *M. Günther, D. Haufe and R.P. Würtz*. **Face recognition with disparity corrected Gabor phase differences**. In Artificial neural networks and machine learning, volume 7552 of Lecture Notes in Computer Science, pages 411-418. 9/2012.
+.. [ZSG+05]  *W. Zhang, S. Shan, W. Gao, X. Chen and H. Zhang*. **Local Gabor binary pattern histogram sequence (LGBPHS): a novel non-statistical model for face representation and recognition**. Computer Vision, IEEE International Conference on, 1:786-791, 2005.
+.. [MM09]    *C. McCool, S. Marcel*. **Parts-based face verification using local frequency bands**. In Advances in biometrics, volume 5558 of Lecture Notes in Computer Science. 2009.
+.. [WMM+12]  *R. Wallace, M. McLaren, C. McCool and S. Marcel*. **Cross-pollination of normalisation techniques from speaker to face authentication using Gaussian mixture models**. IEEE Transactions on Information Forensics and Security, 2012.
+.. [WMM+11]  *R. Wallace, M. McLaren, C. McCool and S. Marcel*. **Inter-session variability modelling and joint factor analysis for face authentication**. International Joint Conference on Biometrics. 2011.
+.. [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.
+
+.. [WM12]    *R. Wallace and M. McLaren*. **Total variability modelling for face verification**. IET Biometrics, vol.1, no.4, 188-199, 12/2012
+
+.. [TT10]    *X. Tan and B. Triggs*. **Enhanced local texture feature sets for face recognition under difficult lighting conditions**. IEEE Transactions on Image Processing, 19(6):1635-1650, 2010.
+.. [WLW04]   *H. Wang, S.Z. Li and Y. Wang*. **Face recognition under varying lighting conditions using self quotient image**. In IEEE International Conference on Automatic Face and Gesture Recognition (AFGR), pages 819-824. 2004.
+.. [HRM06]   *G. Heusch, Y. Rodriguez, and S. Marcel*. **Local Binary Patterns as an Image Preprocessing for Face Authentication**. In IEEE International Conference on Automatic Face and Gesture Recognition (AFGR), 2006.
+
+.. [WFK97]   *L. Wiskott, J.-M. Fellous, N. Krüger and C.v.d. Malsburg*. **Face recognition by elastic bunch graph matching**. IEEE Transactions on Pattern Analysis and Machine Intelligence, 19:775-779, 1997.
+.. [ZSQ+09]  *W. Zhang, S. Shan, L. Qing, X. Chen and W. Gao*. **Are Gabor phases really useless for face recognition?** Pattern Analysis & Applications, 12:301-307, 2009.
+.. [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.
+
+.. [GWM12]   *M. Günther, R. Wallace and S. Marcel*. **An Open Source Framework for Standardized Comparisons of Face Recognition Algorithms**. Computer Vision - ECCV 2012. Workshops and Demonstrations, LNCS, 7585, 547-556, 2012.
+
+.. [PBD+11]  *P.J. Phillips, J.R. Beveridge, B.A. Draper, G. Givens, A.J. O'Toole, D.S. Bolme, J. Dunlop, Y.M. Lui, H. Sahibzada and S. Weimer*. **An introduction to the Good, the Bad, & the Ugly face recognition challenge problem**. Automatic Face Gesture Recognition and Workshops (FG 2011), pages 346-353. 2011.
+.. [LBP+12]  *Y.M. Lui, D.S. Bolme, P.J. Phillips, J.R. Beveridge and B.A. Draper*. **Preliminary studies on the Good, the Bad, and the Ugly face recognition challenge problem**. Computer Vision and Pattern Recognition Workshops (CVPRW), pages 9-16. 2012.
-- 
GitLab