From 42800e57fa4089d04aa94441160ae22bc96bc153 Mon Sep 17 00:00:00 2001
From: Olegs NIKISINS <onikisins@italix03.idiap.ch>
Date: Mon, 2 Oct 2017 11:00:41 +0200
Subject: [PATCH] Updated the main doc on anomaly detection PAD for Aggregated
 Db, some doc for VideoSparseCoding preprocessor

---
 .../face/preprocessor/VideoSparseCoding.py    |  29 ++
 ...qm_anomaly_detection_aggr_db_grandtest.pdf | Bin 0 -> 20029 bytes
 ...qm_anomaly_detection_aggr_db_ph_ph_vid.pdf | Bin 0 -> 20037 bytes
 ...m_anomaly_detection_aggr_db_vid_vid_ph.pdf | Bin 0 -> 19931 bytes
 doc/index.rst                                 |   1 +
 doc/other_pad_algorithms.rst                  | 366 ++++++++++++++++++
 doc/resources.rst                             |  29 ++
 7 files changed, 425 insertions(+)
 create mode 100644 doc/img/ROC_iqm_anomaly_detection_aggr_db_grandtest.pdf
 create mode 100644 doc/img/ROC_iqm_anomaly_detection_aggr_db_ph_ph_vid.pdf
 create mode 100644 doc/img/ROC_iqm_anomaly_detection_aggr_db_vid_vid_ph.pdf
 create mode 100644 doc/other_pad_algorithms.rst

diff --git a/bob/pad/face/preprocessor/VideoSparseCoding.py b/bob/pad/face/preprocessor/VideoSparseCoding.py
index d4484adb..944ca82e 100644
--- a/bob/pad/face/preprocessor/VideoSparseCoding.py
+++ b/bob/pad/face/preprocessor/VideoSparseCoding.py
@@ -718,6 +718,35 @@ class VideoSparseCoding(Preprocessor, object):
     def comp_hist_of_sparse_codes(self, frames, method):
         """
         Compute the histograms of sparse codes.
+
+        **Parameters:**
+
+        ``frame_container`` : FrameContainer
+            FrameContainer containing the frames with sparse codes for the
+            frontal, horizontal and vertical patches. Each frame is a 3D array.
+            The dimensionality of array is:
+            (``3`` x ``n_samples`` x ``n_words_in_the_dictionary``).
+            First array [0,:,:] contains frontal sparse codes.
+            Second array [1,:,:] contains horizontal sparse codes.
+            Third array [2,:,:] contains vertical sparse codes.
+
+        ``method`` : :py:class:`str`
+            Name of the method to be used for combining the sparse codes into
+            a single feature vector. Two options are possible: "mean" and
+            "hist". If "mean" is selected the mean for ``n_samples`` dimension
+            is first computed. The resulting vectors for various types of
+            patches are then concatenated into a single feature vector.
+            If "hist" is selected, the values in the input array are first
+            binarized setting all non-zero elements to one. The rest of the
+            process is similar to the "mean" combination method.
+
+        **Returns:**
+
+        ``frame_container`` : FrameContainer
+            FrameContainer containing the frames with sparse codes for the
+            frontal, horizontal and vertical patches. Each frame is a 3D array.
+            The dimensionality of array is:
+            (``3`` x ``n_samples`` x ``n_words_in_the_dictionary``).
         """
 
         histograms = []
diff --git a/doc/img/ROC_iqm_anomaly_detection_aggr_db_grandtest.pdf b/doc/img/ROC_iqm_anomaly_detection_aggr_db_grandtest.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2175b5b169aadd33c6e78a66654f0c0bde764724
GIT binary patch
literal 20029
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

literal 0
HcmV?d00001

diff --git a/doc/img/ROC_iqm_anomaly_detection_aggr_db_ph_ph_vid.pdf b/doc/img/ROC_iqm_anomaly_detection_aggr_db_ph_ph_vid.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..802a0369db76fbc2d0facb533f4d4ea46707bddd
GIT binary patch
literal 20037
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

literal 0
HcmV?d00001

diff --git a/doc/img/ROC_iqm_anomaly_detection_aggr_db_vid_vid_ph.pdf b/doc/img/ROC_iqm_anomaly_detection_aggr_db_vid_vid_ph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..52bfea975f7d4b3070df1c63c8d5bd27008629dc
GIT binary patch
literal 19931
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
MLUwjpbveTS151U-&j0`b

literal 0
HcmV?d00001

diff --git a/doc/index.rst b/doc/index.rst
index fda461ea..f06c8df2 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -22,6 +22,7 @@ Users Guide
 
    installation
    baselines
+   other_pad_algorithms
    references
    resources
    api
diff --git a/doc/other_pad_algorithms.rst b/doc/other_pad_algorithms.rst
new file mode 100644
index 00000000..ac7efc11
--- /dev/null
+++ b/doc/other_pad_algorithms.rst
@@ -0,0 +1,366 @@
+
+
+.. _bob.pad.face.other_pad_algorithms:
+
+
+===============================
+ Executing Other Algorithms
+===============================
+
+This section explains how to execute face presentation attack detection (PAD) algorithms implemented
+in ``bob.pad.face``.
+
+.. warning::
+
+   Algorithms introduced in this section might be in the process of publishing. Therefore, it is not
+   allowed to publish results introduced in this section without permission of the owner of the package.
+   If you are planning to use the results from this section, please contact the owner of the package first.
+   Please check the ``setup.py`` for contact information.
+
+
+Running face PAD Experiments
+------------------------------
+
+To run the PAD experiments, the ``spoof.py`` script located in ``bin`` directory is used.
+To see the description of the script you can type in the console:
+
+.. code-block:: sh
+
+   $ spoof.py --help
+
+This script is explained in more detail in :ref:`bob.pad.base.experiments`.
+
+Usually it is a good idea to have at least verbose level 2 (i.e., calling
+``spoof.py --verbose --verbose``, or the short version ``spoof.py
+-vv``).
+
+.. note:: **Running in Parallel**
+
+   To run the experiments in parallel, you can define an SGE grid or local host
+   (multi-processing) configurations as explained in
+   :ref:`running_in_parallel`.
+
+   In short, to run in the Idiap SGE grid, you can simply add the ``--grid``
+   command line option, with grid configuration parameters. To run 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.
+
+
+Database setups and face PAD algorithms are encoded using
+:ref:`bob.bio.base.configuration-files`, all stored inside the package root, in
+the directory ``bob/pad/face/config``. Documentation for each resource
+is available on the section :ref:`bob.pad.face.resources`.
+
+.. warning::
+
+   You **cannot** run experiments just by executing the command line
+   instructions described in this guide. You **need first** to procure yourself
+   the raw data files that correspond to *each* database used here in order to
+   correctly run experiments with those data. Biometric data is considered
+   private date and, under EU regulations, cannot be distributed without a
+   consent or license. You may consult our
+   :ref:`bob.pad.face.resources.databases` resources section for checking
+   currently supported databases and accessing download links for the raw data
+   files.
+
+   Once the raw data files have been downloaded, particular attention should be
+   given to the directory locations of those. Unpack the databases carefully
+   and annotate the root directory where they have been unpacked.
+
+   Then, carefully read the *Databases* section of
+   :ref:`bob.pad.base.installation` on how to correctly setup the
+   ``~/.bob_bio_databases.txt`` file.
+
+   Use the following keywords on the left side of the assignment (see
+   :ref:`bob.pad.face.resources.databases`):
+
+   .. code-block:: text
+
+      [YOUR_REPLAY_ATTACK_DIRECTORY] = /complete/path/to/replayattack-database/
+
+   Notice it is rather important to use the strings as described above,
+   otherwise ``bob.pad.base`` will not be able to correctly load your images.
+
+   Once this step is done, you can proceed with the instructions below.
+
+
+------------
+
+
+.. _bob.pad.face.other_pad_algorithms.aggregated_db:
+
+Anomaly detection based PAD on Aggregated Database
+--------------------------------------------------------
+
+This section summarizes the results of *anomaly detection* based face PAD experiments on the Aggregated Database.
+The description of the database-related settings, which are used to run face PAD algorithms on the Aggregated Db is given here :ref:`bob.pad.face.resources.databases.aggregated_db`. To understand the settings in more details you can check the corresponding configuration file : ``bob/pad/face/config/aggregated_db.py``.
+
+------------
+
+
+Results for *grandtest* protocol
+========================================================================
+
+This section summarizes the evaluation results on the **grandtest** protocol of the Aggregated database for the following face PAD algorithms (for more details click on the corresponding algorithm):
+
+- :ref:`bob.pad.face.resources.face_pad.qm_one_class_gmm`,
+- :ref:`bob.pad.face.resources.face_pad.qm_one_class_svm_aggregated_db`,
+- :ref:`bob.pad.face.resources.face_pad.qm_lr`,
+- :ref:`bob.pad.face.resources.face_pad.qm_svm_aggregated_db`.
+
+For a more detailed understanding of above pipe-lines you can also check corresponding configuration files:
+
+- ``bob/pad/face/config/qm_one_class_gmm.py``,
+- ``bob/pad/face/config/qm_one_class_svm_aggregated_db.py``,
+- ``bob/pad/face/config/qm_lr.py``,
+- ``bob/pad/face/config/qm_svm_aggregated_db.py``.
+
+To run above algorithms on the :ref:`bob.pad.face.resources.databases.aggregated_db` database, using the ``grandtest`` protocol, execute the following:
+
+.. code-block:: sh
+
+    $ spoof.py aggregated-db qm-one-class-gmm \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_1>
+
+    $ spoof.py aggregated-db qm-one-class-svm-aggregated-db \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_2>
+
+    $ spoof.py aggregated-db qm-lr \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_3>
+
+    $ spoof.py aggregated-db qm-svm-aggregated-db \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_4>
+
+.. tip::
+
+    If you are in `idiap`_ you can use SGE grid to speed-up the calculations.
+    Simply add ``--grid idiap`` argument to the above command. For example:
+
+
+To evaluate the results computing EER, HTER and plotting ROC you can use the
+following command:
+
+.. code-block:: sh
+
+    ./bin/evaluate.py \
+    --dev-files \
+    <PATH_TO_STORE_THE_RESULTS_1>/grandtest/scores/scores-dev  \
+    <PATH_TO_STORE_THE_RESULTS_2>/grandtest/scores/scores-dev  \
+    <PATH_TO_STORE_THE_RESULTS_3>/grandtest/scores/scores-dev  \
+    <PATH_TO_STORE_THE_RESULTS_4>/grandtest/scores/scores-dev  \
+    --eval-files \
+    <PATH_TO_STORE_THE_RESULTS_1>/grandtest/scores/scores-eval \
+    <PATH_TO_STORE_THE_RESULTS_2>/grandtest/scores/scores-eval \
+    <PATH_TO_STORE_THE_RESULTS_3>/grandtest/scores/scores-eval \
+    <PATH_TO_STORE_THE_RESULTS_4>/grandtest/scores/scores-eval \
+    --legends \
+    "IQM + one-class GMM + Aggregated Db" \
+    "IQM + one-class SVM + Aggregated Db" \
+    "IQM + two-class LR  + Aggregated Db" \
+    "IQM + two-class SVM + Aggregated Db" \
+    -F 7 \
+    --criterion EER \
+    --roc <PATH_TO_STORE_THE_RESULTS>/ROC.pdf
+
+The EER/HTER errors for the :ref:`bob.pad.face.resources.databases.aggregated_db` database are summarized in the Table below:
+
++------------------------+----------+----------+
+|      Algorithm         |  EER,\%  |  HTER,\% |
++========================+==========+==========+
+|   IQM + one-class GMM  |  19.336  |  20.769  |
++------------------------+----------+----------+
+|   IQM + one-class SVM  |  28.137  |  34.776  |
++------------------------+----------+----------+
+|   IQM + two-class LR   |  10.354  |  11.856  |
++------------------------+----------+----------+
+|   IQM + two-class SVM  |  12.710  |  15.253  |
++------------------------+----------+----------+
+
+The ROC curves for the particular experiment can be downloaded from here:
+
+:download:`ROC curve <img/ROC_iqm_anomaly_detection_aggr_db_grandtest.pdf>`
+
+------------
+
+
+Results for *photo-photo-video* protocol
+========================================================================
+
+This section summarizes the evaluation results on the **photo-photo-video** protocol of the Aggregated database for the following face PAD algorithms (for more details click on the corresponding algorithm):
+
+- :ref:`bob.pad.face.resources.face_pad.qm_one_class_gmm`,
+- :ref:`bob.pad.face.resources.face_pad.qm_one_class_svm_aggregated_db`,
+- :ref:`bob.pad.face.resources.face_pad.qm_lr`,
+- :ref:`bob.pad.face.resources.face_pad.qm_svm_aggregated_db`.
+
+For a more detailed understanding of above pipe-lines you can also check corresponding configuration files:
+
+- ``bob/pad/face/config/qm_one_class_gmm.py``,
+- ``bob/pad/face/config/qm_one_class_svm_aggregated_db.py``,
+- ``bob/pad/face/config/qm_lr.py``,
+- ``bob/pad/face/config/qm_svm_aggregated_db.py``.
+
+To run above algorithms on the :ref:`bob.pad.face.resources.databases.aggregated_db` database, using the ``photo-photo-video`` protocol, execute the following:
+
+.. code-block:: sh
+
+    $ spoof.py aggregated-db qm-one-class-gmm \
+    --protocol photo-photo-video \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_1>
+
+    $ spoof.py aggregated-db qm-one-class-svm-aggregated-db \
+    --protocol photo-photo-video \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_2>
+
+    $ spoof.py aggregated-db qm-lr \
+    --protocol photo-photo-video \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_3>
+
+    $ spoof.py aggregated-db qm-svm-aggregated-db \
+    --protocol photo-photo-video \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_4>
+
+.. tip::
+
+    If you are in `idiap`_ you can use SGE grid to speed-up the calculations.
+    Simply add ``--grid idiap`` argument to the above command. For example:
+
+
+To evaluate the results computing EER, HTER and plotting ROC you can use the
+following command:
+
+.. code-block:: sh
+
+    ./bin/evaluate.py \
+    --dev-files \
+    <PATH_TO_STORE_THE_RESULTS_1>/photo-photo-video/scores/scores-dev  \
+    <PATH_TO_STORE_THE_RESULTS_2>/photo-photo-video/scores/scores-dev  \
+    <PATH_TO_STORE_THE_RESULTS_3>/photo-photo-video/scores/scores-dev  \
+    <PATH_TO_STORE_THE_RESULTS_4>/photo-photo-video/scores/scores-dev  \
+    --eval-files \
+    <PATH_TO_STORE_THE_RESULTS_1>/photo-photo-video/scores/scores-eval \
+    <PATH_TO_STORE_THE_RESULTS_2>/photo-photo-video/scores/scores-eval \
+    <PATH_TO_STORE_THE_RESULTS_3>/photo-photo-video/scores/scores-eval \
+    <PATH_TO_STORE_THE_RESULTS_4>/photo-photo-video/scores/scores-eval \
+    --legends \
+    "IQM + one-class GMM + Aggregated Db" \
+    "IQM + one-class SVM + Aggregated Db" \
+    "IQM + two-class LR  + Aggregated Db" \
+    "IQM + two-class SVM + Aggregated Db" \
+    -F 7 \
+    --criterion EER \
+    --roc <PATH_TO_STORE_THE_RESULTS>/ROC.pdf
+
+The EER/HTER errors for the :ref:`bob.pad.face.resources.databases.aggregated_db` database are summarized in the Table below:
+
++------------------------+----------+----------+
+|      Algorithm         |  EER,\%  |  HTER,\% |
++========================+==========+==========+
+|   IQM + one-class GMM  |  22.075  |  14.470  |
++------------------------+----------+----------+
+|   IQM + one-class SVM  |  35.537  |  24.317  |
++------------------------+----------+----------+
+|   IQM + two-class LR   |  10.184  |  30.132  |
++------------------------+----------+----------+
+|   IQM + two-class SVM  |  10.527  |  21.926  |
++------------------------+----------+----------+
+
+The ROC curves for the particular experiment can be downloaded from here:
+
+:download:`ROC curve <img/ROC_iqm_anomaly_detection_aggr_db_ph_ph_vid.pdf>`
+
+------------
+
+
+Results for *video-video-photo* protocol
+========================================================================
+
+This section summarizes the evaluation results on the **video-video-photo** protocol of the Aggregated database for the following face PAD algorithms (for more details click on the corresponding algorithm):
+
+- :ref:`bob.pad.face.resources.face_pad.qm_one_class_gmm`,
+- :ref:`bob.pad.face.resources.face_pad.qm_one_class_svm_aggregated_db`,
+- :ref:`bob.pad.face.resources.face_pad.qm_lr`,
+- :ref:`bob.pad.face.resources.face_pad.qm_svm_aggregated_db`.
+
+For a more detailed understanding of above pipe-lines you can also check corresponding configuration files:
+
+- ``bob/pad/face/config/qm_one_class_gmm.py``,
+- ``bob/pad/face/config/qm_one_class_svm_aggregated_db.py``,
+- ``bob/pad/face/config/qm_lr.py``,
+- ``bob/pad/face/config/qm_svm_aggregated_db.py``.
+
+To run above algorithms on the :ref:`bob.pad.face.resources.databases.aggregated_db` database, using the ``video-video-photo`` protocol, execute the following:
+
+.. code-block:: sh
+
+    $ spoof.py aggregated-db qm-one-class-gmm \
+    --protocol video-video-photo \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_1>
+
+    $ spoof.py aggregated-db qm-one-class-svm-aggregated-db \
+    --protocol video-video-photo \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_2>
+
+    $ spoof.py aggregated-db qm-lr \
+    --protocol video-video-photo \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_3>
+
+    $ spoof.py aggregated-db qm-svm-aggregated-db \
+    --protocol video-video-photo \
+    --sub-directory <PATH_TO_STORE_THE_RESULTS_4>
+
+.. tip::
+
+    If you are in `idiap`_ you can use SGE grid to speed-up the calculations.
+    Simply add ``--grid idiap`` argument to the above command. For example:
+
+
+To evaluate the results computing EER, HTER and plotting ROC you can use the
+following command:
+
+.. code-block:: sh
+
+    ./bin/evaluate.py \
+    --dev-files \
+    <PATH_TO_STORE_THE_RESULTS_1>/video-video-photo/scores/scores-dev  \
+    <PATH_TO_STORE_THE_RESULTS_2>/video-video-photo/scores/scores-dev  \
+    <PATH_TO_STORE_THE_RESULTS_3>/video-video-photo/scores/scores-dev  \
+    <PATH_TO_STORE_THE_RESULTS_4>/video-video-photo/scores/scores-dev  \
+    --eval-files \
+    <PATH_TO_STORE_THE_RESULTS_1>/video-video-photo/scores/scores-eval \
+    <PATH_TO_STORE_THE_RESULTS_2>/video-video-photo/scores/scores-eval \
+    <PATH_TO_STORE_THE_RESULTS_3>/video-video-photo/scores/scores-eval \
+    <PATH_TO_STORE_THE_RESULTS_4>/video-video-photo/scores/scores-eval \
+    --legends \
+    "IQM + one-class GMM + Aggregated Db" \
+    "IQM + one-class SVM + Aggregated Db" \
+    "IQM + two-class LR  + Aggregated Db" \
+    "IQM + two-class SVM + Aggregated Db" \
+    -F 7 \
+    --criterion EER \
+    --roc <PATH_TO_STORE_THE_RESULTS>/ROC.pdf
+
+The EER/HTER errors for the :ref:`bob.pad.face.resources.databases.aggregated_db` database are summarized in the Table below:
+
++------------------------+----------+----------+
+|      Algorithm         |  EER,\%  |  HTER,\% |
++========================+==========+==========+
+|   IQM + one-class GMM  |  13.503  |  29.794  |
++------------------------+----------+----------+
+|   IQM + one-class SVM  |  18.234  |  39.502  |
++------------------------+----------+----------+
+|   IQM + two-class LR   |  1.499   |  30.268  |
++------------------------+----------+----------+
+|   IQM + two-class SVM  |  1.422   |  24.901  |
++------------------------+----------+----------+
+
+The ROC curves for the particular experiment can be downloaded from here:
+
+:download:`ROC curve <img/ROC_iqm_anomaly_detection_aggr_db_vid_vid_ph.pdf>`
+
+------------
+
+
+.. include:: links.rst
+
+
diff --git a/doc/resources.rst b/doc/resources.rst
index ca93b11a..971e96de 100644
--- a/doc/resources.rst
+++ b/doc/resources.rst
@@ -135,3 +135,32 @@ Frame differences based features (motion analysis) + SVM for Aggregated Database
 
 .. automodule:: bob.pad.face.config.frame_diff_svm_aggregated_db
    :members:
+
+
+.. _bob.pad.face.resources.face_pad.qm_lr:
+
+Image Quality Measures as features of facial region + Logistic Regression
+============================================================================================================================
+
+.. automodule:: bob.pad.face.config.qm_lr
+   :members:
+
+
+.. _bob.pad.face.resources.face_pad.qm_one_class_gmm:
+
+Image Quality Measures as features of facial region + GMM-based one-class classifier (anomaly detector)
+============================================================================================================================
+
+.. automodule:: bob.pad.face.config.qm_one_class_gmm
+   :members:
+
+
+.. _bob.pad.face.resources.face_pad.qm_one_class_svm_aggregated_db:
+
+Image Quality Measures as features of facial region + one-class SVM classifier (anomaly detector) for Aggregated Database
+============================================================================================================================
+
+.. automodule:: bob.pad.face.config.qm_one_class_svm_aggregated_db
+   :members:
+
+
-- 
GitLab