diff --git a/.gitignore b/.gitignore
index ff60021cc3aeeec5397e7333dbbd566eb82d612e..7dbfa1b8da5cc504bf35ed9c7e5f039de0954fe1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,10 @@
-*~
-*.swp
 *.swo
-.installed.cfg
-bin/
-bob.docs.egg-info/
-develop-eggs/
+*.swp
+*~
+doc/bob/
 doc/bob.ap/
 doc/bob.bio.base/
+doc/bob.bio.caffe_face/
 doc/bob.bio.face/
 doc/bob.bio.gmm/
 doc/bob.bio.spear/
@@ -27,24 +25,30 @@ doc/bob.db.biosecure/
 doc/bob.db.biosecurid.face/
 doc/bob.db.casme2/
 doc/bob.db.caspeal/
+doc/bob.db.cbsr_nir_vis_2/
 doc/bob.db.cohface/
 doc/bob.db.cuhk_cufs/
+doc/bob.db.cuhk_cufsf/
 doc/bob.db.frgc/
 doc/bob.db.fv3d/
 doc/bob.db.gbu/
 doc/bob.db.hci_tagging/
 doc/bob.db.ijba/
+doc/bob.db.ijbc/
 doc/bob.db.iris/
 doc/bob.db.kboc16/
 doc/bob.db.lfw/
 doc/bob.db.livdet2013/
+doc/bob.db.maskattack/
 doc/bob.db.mnist/
 doc/bob.db.mobio/
 doc/bob.db.msu_mfsd_mod/
 doc/bob.db.multipie/
 doc/bob.db.nist_sre12/
+doc/bob.db.nivl/
 doc/bob.db.oulunpu/
 doc/bob.db.pericrosseye/
+doc/bob.db.pola_thermal/
 doc/bob.db.putvein/
 doc/bob.db.replay/
 doc/bob.db.replaymobile/
@@ -64,6 +68,7 @@ doc/bob.io.image/
 doc/bob.io.matlab/
 doc/bob.io.video/
 doc/bob.ip.base/
+doc/bob.ip.caffe_extractor/
 doc/bob.ip.color/
 doc/bob.ip.dlib/
 doc/bob.ip.draw/
@@ -71,10 +76,12 @@ doc/bob.ip.facedetect/
 doc/bob.ip.facelandmarks/
 doc/bob.ip.flandmark/
 doc/bob.ip.gabor/
+doc/bob.ip.mtcnn/
 doc/bob.ip.optflow.hornschunck/
 doc/bob.ip.optflow.liu/
 doc/bob.ip.qualitymeasure/
 doc/bob.ip.skincolorfilter/
+doc/bob.ip.tensorflow_extractor/
 doc/bob.learn.activation/
 doc/bob.learn.boosting/
 doc/bob.learn.em/
@@ -87,10 +94,9 @@ doc/bob.pad.base/
 doc/bob.pad.face/
 doc/bob.pad.vein/
 doc/bob.pad.voice/
+doc/bob.rppg.base/
 doc/bob.sp/
-doc/bob/
-doc/extra-intersphinx.txt
 doc/gridtk/
+doc/extra-intersphinx.txt
 doc/nitpick-exceptions.txt
-eggs/
 sphinx/
diff --git a/README.rst b/README.rst
index c9fd48ee66a028801f0c90e91de1c182897245f8..fc06fdc84891dd3942ca8604f4d85f1104f3ef31 100644
--- a/README.rst
+++ b/README.rst
@@ -11,6 +11,7 @@ Adding a new package
 To add a new package:
 
 * Make sure the package is **public** first. Do not add private packages here.
+* Make sure the package is in https://gitlab.idiap.ch/bob/bob first.
 * Add it in ``conda/meta.yaml`` and ``requirements.txt``.
 * Add it in ``doc/index.rst`` (you need to add it in several places in this file).
 * Add it in ``doc/readme_index.rst``.
diff --git a/conda/meta.yaml b/conda/meta.yaml
index 8b546e315c5c6b1978514fdd7daced39cf7c5dbc..1975ce5efff7e41412aa887b58708a484ce6ba87 100644
--- a/conda/meta.yaml
+++ b/conda/meta.yaml
@@ -16,6 +16,7 @@ requirements:
     - bob
     - bob.ap
     - bob.bio.base
+    - bob.bio.caffe_face
     - bob.bio.face
     - bob.bio.gmm
     - bob.bio.spear
@@ -36,23 +37,30 @@ requirements:
     - bob.db.biosecurid.face
     - bob.db.casme2
     - bob.db.caspeal
+    - bob.db.cbsr_nir_vis_2
     - bob.db.cohface
     - bob.db.cuhk_cufs
+    - bob.db.cuhk_cufsf
     - bob.db.frgc
     - bob.db.fv3d
     - bob.db.gbu
     - bob.db.hci_tagging
     - bob.db.ijba
+    - bob.db.ijbc
     - bob.db.iris
     - bob.db.kboc16
     - bob.db.lfw
     - bob.db.livdet2013
+    - bob.db.maskattack
     - bob.db.mnist
     - bob.db.mobio
     - bob.db.msu_mfsd_mod
     - bob.db.multipie
+    - bob.db.nist_sre12
+    - bob.db.nivl
     - bob.db.oulunpu
     - bob.db.pericrosseye
+    - bob.db.pola_thermal
     - bob.db.putvein
     - bob.db.replay
     - bob.db.replaymobile
@@ -72,6 +80,7 @@ requirements:
     - bob.io.matlab
     - bob.io.video
     - bob.ip.base
+    - bob.ip.caffe_extractor
     - bob.ip.color
     - bob.ip.dlib
     - bob.ip.draw
@@ -79,10 +88,12 @@ requirements:
     - bob.ip.facelandmarks
     - bob.ip.flandmark
     - bob.ip.gabor
+    - bob.ip.mtcnn
     - bob.ip.optflow.hornschunck
     - bob.ip.optflow.liu
     - bob.ip.qualitymeasure
     - bob.ip.skincolorfilter
+    - bob.ip.tensorflow_extractor
     - bob.learn.activation
     - bob.learn.boosting
     - bob.learn.em
@@ -95,6 +106,7 @@ requirements:
     - bob.pad.face
     - bob.pad.vein
     - bob.pad.voice
+    - bob.rppg.base
     - bob.sp
     - gridtk
 
diff --git a/doc/index.rst b/doc/index.rst
index 1bdcf80b7fd172f9501dba5757dba4ac6a5bd2ec..12032ff2ed54bf1392af18d2b8c1879c5b5c6b73 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -40,6 +40,9 @@ Signal, Audio, Image and Video Processing
 * :ref:`bob.ip.dlib`
 * :ref:`bob.ip.qualitymeasure`
 * :ref:`bob.ip.skincolorfilter`
+* :ref:`bob.ip.mtcnn`
+* :ref:`bob.ip.caffe_extractor`
+* :ref:`bob.ip.tensorflow_extractor`
 
 Machine Learning
 ----------------
@@ -73,6 +76,10 @@ Biometric Recognition
 * :ref:`bob.bio.vein`
 * :ref:`bob.bio.video`
 * :ref:`bob.bio.gmm`
+* :ref:`bob.ip.caffe_extractor`
+* :ref:`bob.ip.tensorflow_extractor`
+* :ref:`bob.bio.caffe_face`
+
 
 Presentation Attack Detection (anti-spoofing)
 ---------------------------------------------
@@ -82,6 +89,13 @@ Presentation Attack Detection (anti-spoofing)
 * :ref:`bob.pad.vein`
 * :ref:`bob.pad.voice`
 
+
+Remote Heart Rate Measurement
+-----------------------------
+
+* :ref:`bob.rppg.base`
+
+
 Database Interfaces
 -------------------
 
@@ -97,23 +111,30 @@ Database Interfaces
 * :ref:`bob.db.biosecurid.face`
 * :ref:`bob.db.casme2`
 * :ref:`bob.db.caspeal`
+* :ref:`bob.db.cbsr_nir_vis_2`
 * :ref:`bob.db.cohface`
 * :ref:`bob.db.cuhk_cufs`
+* :ref:`bob.db.cuhk_cufsf`
 * :ref:`bob.db.frgc`
 * :ref:`bob.db.fv3d`
 * :ref:`bob.db.gbu`
 * :ref:`bob.db.hci_tagging`
 * :ref:`bob.db.ijba`
+* :ref:`bob.db.ijbc`
 * :ref:`bob.db.iris`
 * :ref:`bob.db.kboc16`
 * :ref:`bob.db.lfw`
 * :ref:`bob.db.livdet2013`
+* :ref:`bob.db.maskattack`
 * :ref:`bob.db.mnist`
 * :ref:`bob.db.mobio`
 * :ref:`bob.db.msu_mfsd_mod`
 * :ref:`bob.db.multipie`
+* :ref:`bob.db.nist_sre12`
+* :ref:`bob.db.nivl`
 * :ref:`bob.db.oulunpu`
 * :ref:`bob.db.pericrosseye`
+* :ref:`bob.db.pola_thermal`
 * :ref:`bob.db.putvein`
 * :ref:`bob.db.replay`
 * :ref:`bob.db.replaymobile`
@@ -128,6 +149,7 @@ Database Interfaces
 * :ref:`bob.db.youtube`
 
 
+
 Index of all Packages
 =====================
 
@@ -138,6 +160,7 @@ Index of all Packages
    bob <bob/doc/index.rst>
    bob.ap <bob.ap/doc/index.rst>
    bob.bio.base <bob.bio.base/doc/index.rst>
+   bob.bio.caffe_face <bob.bio.caffe_face/README.rst>
    bob.bio.face <bob.bio.face/doc/index.rst>
    bob.bio.gmm <bob.bio.gmm/doc/index.rst>
    bob.bio.spear <bob.bio.spear/doc/index.rst>
@@ -158,23 +181,30 @@ Index of all Packages
    bob.db.biosecurid.face <bob.db.biosecurid.face/doc/index.rst>
    bob.db.casme2 <bob.db.casme2/doc/index.rst>
    bob.db.caspeal <bob.db.caspeal/doc/index.rst>
+   bob.db.cbsr_nir_vis_2 <bob.db.cbsr_nir_vis_2/README.rst>
    bob.db.cohface <bob.db.cohface/doc/index.rst>
    bob.db.cuhk_cufs <bob.db.cuhk_cufs/doc/index.rst>
+   bob.db.cuhk_cufsf <bob.db.cuhk_cufsf/README.rst>
    bob.db.frgc <bob.db.frgc/doc/index.rst>
    bob.db.fv3d <bob.db.fv3d/doc/index.rst>
    bob.db.gbu <bob.db.gbu/doc/index.rst>
    bob.db.hci_tagging <bob.db.hci_tagging/doc/index.rst>
    bob.db.ijba <bob.db.ijba/doc/index.rst>
+   bob.db.ijbc <bob.db.ijbc/README.rst>
    bob.db.iris <bob.db.iris/doc/index.rst>
    bob.db.kboc16 <bob.db.kboc16/doc/index.rst>
    bob.db.lfw <bob.db.lfw/doc/index.rst>
    bob.db.livdet2013 <bob.db.livdet2013/doc/index.rst>
+   bob.db.maskattack <bob.db./doc/index.rst>
    bob.db.mnist <bob.db.mnist/doc/index.rst>
    bob.db.mobio <bob.db.mobio/doc/index.rst>
    bob.db.msu_mfsd_mod <bob.db.msu_mfsd_mod/doc/index.rst>
    bob.db.multipie <bob.db.multipie/doc/index.rst>
+   bob.db.nist_sre12 <bob.db.nist_sre12/doc/index.rst>
+   bob.db.nivl <bob.db.nivl/README.rst>
    bob.db.oulunpu <bob.db.oulunpu/doc/index.rst>
    bob.db.pericrosseye <bob.db.pericrosseye/doc/index.rst>
+   bob.db.pola_thermal<bob.db.pola_thermal/README.rst>
    bob.db.putvein <bob.db.putvein/doc/index.rst>
    bob.db.replay <bob.db.replay/doc/index.rst>
    bob.db.replaymobile <bob.db.replaymobile/doc/index.rst>
@@ -194,6 +224,7 @@ Index of all Packages
    bob.io.matlab <bob.io.matlab/doc/index.rst>
    bob.io.video <bob.io.video/doc/index.rst>
    bob.ip.base <bob.ip.base/doc/index.rst>
+   bob.ip.caffe_extractor <bob.ip.caffe_extractor/README.rst>
    bob.ip.color <bob.ip.color/doc/index.rst>
    bob.ip.dlib <bob.ip.dlib/doc/index.rst>
    bob.ip.draw <bob.ip.draw/doc/index.rst>
@@ -201,9 +232,11 @@ Index of all Packages
    bob.ip.facelandmarks <bob.ip.facelandmarks/doc/index.rst>
    bob.ip.flandmark <bob.ip.flandmark/doc/index.rst>
    bob.ip.gabor <bob.ip.gabor/doc/index.rst>
+   bob.ip.mtcnn <bob.ip.mtcnn/README.rst>
    bob.ip.optflow.hornschunck <bob.ip.optflow.hornschunck/doc/index.rst>
    bob.ip.optflow.liu <bob.ip.optflow.liu/doc/index.rst>
    bob.ip.qualitymeasure <bob.ip.qualitymeasure/doc/index.rst>
+   bob.ip.tensorflow_extractor <bob.ip.tensorflow_extractor/README.rst>
    bob.ip.skincolorfilter <bob.ip.skincolorfilter/doc/index.rst>
    bob.learn.activation <bob.learn.activation/doc/index.rst>
    bob.learn.boosting <bob.learn.boosting/doc/index.rst>
@@ -218,5 +251,6 @@ Index of all Packages
    bob.pad.vein <bob.pad.vein/doc/index.rst>
    bob.pad.voice <bob.pad.voice/doc/index.rst>
    bob.sp <bob.sp/doc/index.rst>
+   bob.rppg.base <bob.rppg.base/README.rst>
    gridtk <gridtk/doc/index.rst>
    readme_index.rst
diff --git a/doc/plot/convolve.py b/doc/plot/convolve.py
new file mode 120000
index 0000000000000000000000000000000000000000..22956a994debd9077627ce0b49ee829c75efdf31
--- /dev/null
+++ b/doc/plot/convolve.py
@@ -0,0 +1 @@
+../bob.ip.caffe_extractor/doc/plot/convolve.py
\ No newline at end of file
diff --git a/doc/readme_index.rst b/doc/readme_index.rst
index face733d6245a927fb115a702562a23462aca81b..ac42c054438af73d7373153f8673b049ca0e0228 100644
--- a/doc/readme_index.rst
+++ b/doc/readme_index.rst
@@ -10,6 +10,7 @@ README of all Packages
    bob <bob/README.rst>
    bob.ap <bob.ap/README.rst>
    bob.bio.base <bob.bio.base/README.rst>
+   bob.bio.caffe_face <bob.bio.caffe_face/README.rst>
    bob.bio.face <bob.bio.face/README.rst>
    bob.bio.gmm <bob.bio.gmm/README.rst>
    bob.bio.spear <bob.bio.spear/README.rst>
@@ -30,23 +31,30 @@ README of all Packages
    bob.db.biosecurid.face <bob.db.biosecurid.face/README.rst>
    bob.db.casme2 <bob.db.casme2/README.rst>
    bob.db.caspeal <bob.db.caspeal/README.rst>
+   bob.db.cbsr_nir_vis_2 <bob.db.cbsr_nir_vis_2/README.rst>
    bob.db.cohface <bob.db.cohface/README.rst>
    bob.db.cuhk_cufs <bob.db.cuhk_cufs/README.rst>
+   bob.db.cuhk_cufsf <bob.db.cuhk_cufsf/README.rst>
    bob.db.frgc <bob.db.frgc/README.rst>
    bob.db.fv3d <bob.db.fv3d/README.rst>
    bob.db.gbu <bob.db.gbu/README.rst>
    bob.db.hci_tagging <bob.db.hci_tagging/README.rst>
    bob.db.ijba <bob.db.ijba/README.rst>
+   bob.db.ijbc <bob.db.ijbc/README.rst>
    bob.db.iris <bob.db.iris/README.rst>
    bob.db.kboc16 <bob.db.kboc16/README.rst>
    bob.db.lfw <bob.db.lfw/README.rst>
    bob.db.livdet2013 <bob.db.livdet2013/README.rst>
+   bob.db.maskattack <bob.db.maskattack/README.rst>
    bob.db.mnist <bob.db.mnist/README.rst>
    bob.db.mobio <bob.db.mobio/README.rst>
    bob.db.msu_mfsd_mod <bob.db.msu_mfsd_mod/README.rst>
    bob.db.multipie <bob.db.multipie/README.rst>
+   bob.db.nist_sre12 <bob.db.nist_sre12/README.rst>
+   bob.db.nivl <bob.db.nivl/README.rst>
    bob.db.oulunpu <bob.db.oulunpu/README.rst>
    bob.db.pericrosseye <bob.db.pericrosseye/README.rst>
+   bob.db.pola_thermal <bob.db.pola_thermal/README.rst>
    bob.db.putvein <bob.db.putvein/README.rst>
    bob.db.replay <bob.db.replay/README.rst>
    bob.db.replaymobile <bob.db.replaymobile/README.rst>
@@ -66,6 +74,7 @@ README of all Packages
    bob.io.matlab <bob.io.matlab/README.rst>
    bob.io.video <bob.io.video/README.rst>
    bob.ip.base <bob.ip.base/README.rst>
+   bob.ip.caffe_extractor <bob.ip.caffe_extractor/README.rst>
    bob.ip.color <bob.ip.color/README.rst>
    bob.ip.dlib <bob.ip.dlib/README.rst>
    bob.ip.draw <bob.ip.draw/README.rst>
@@ -73,10 +82,12 @@ README of all Packages
    bob.ip.facelandmarks <bob.ip.facelandmarks/README.rst>
    bob.ip.flandmark <bob.ip.flandmark/README.rst>
    bob.ip.gabor <bob.ip.gabor/README.rst>
+   bob.ip.mtcnn <bob.ip.mtcnn/README.rst>
    bob.ip.optflow.hornschunck <bob.ip.optflow.hornschunck/README.rst>
    bob.ip.optflow.liu <bob.ip.optflow.liu/README.rst>
    bob.ip.qualitymeasure <bob.ip.qualitymeasure/README.rst>
    bob.ip.skincolorfilter <bob.ip.skincolorfilter/README.rst>
+   bob.ip.tensorflow_extractor <bob.ip.tensorflow_extractor/README.rst>
    bob.learn.activation <bob.learn.activation/README.rst>
    bob.learn.boosting <bob.learn.boosting/README.rst>
    bob.learn.em <bob.learn.em/README.rst>
@@ -89,5 +100,6 @@ README of all Packages
    bob.pad.face <bob.pad.face/README.rst>
    bob.pad.vein <bob.pad.vein/README.rst>
    bob.pad.voice <bob.pad.voice/README.rst>
+   bob.rppg.base <bob.rppg.base/README.rst>
    bob.sp <bob.sp/README.rst>
    gridtk <gridtk/README.rst>
diff --git a/requirements.txt b/requirements.txt
index e1c09251be80ddbaf5e0ecf4766d4c8943576844..f1abd65f9cec5bc2e94192914933803f5443d3f2 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,7 @@
 bob
 bob.ap
 bob.bio.base
+bob.bio.caffe_face
 bob.bio.face
 bob.bio.gmm
 bob.bio.spear
@@ -21,23 +22,30 @@ bob.db.biosecure
 bob.db.biosecurid.face
 bob.db.casme2
 bob.db.caspeal
+bob.db.cbsr_nir_vis_2
 bob.db.cohface
 bob.db.cuhk_cufs
+bob.db.cuhk_cufsf
 bob.db.frgc
 bob.db.fv3d
 bob.db.gbu
 bob.db.hci_tagging
 bob.db.ijba
+bob.db.ijbc
 bob.db.iris
 bob.db.kboc16
 bob.db.lfw
 bob.db.livdet2013
+bob.db.maskattack
 bob.db.mnist
 bob.db.mobio
 bob.db.msu_mfsd_mod
 bob.db.multipie
+bob.db.nist_sre12
+bob.db.nivl
 bob.db.oulunpu
 bob.db.pericrosseye
+bob.db.pola_thermal
 bob.db.putvein
 bob.db.replay
 bob.db.replaymobile
@@ -57,6 +65,7 @@ bob.io.image
 bob.io.matlab
 bob.io.video
 bob.ip.base
+bob.ip.caffe_extractor
 bob.ip.color
 bob.ip.dlib
 bob.ip.draw
@@ -64,10 +73,12 @@ bob.ip.facedetect
 bob.ip.facelandmarks
 bob.ip.flandmark
 bob.ip.gabor
+bob.ip.mtcnn
 bob.ip.optflow.hornschunck
 bob.ip.optflow.liu
 bob.ip.qualitymeasure
 bob.ip.skincolorfilter
+bob.ip.tensorflow_extractor
 bob.learn.activation
 bob.learn.boosting
 bob.learn.em
@@ -80,5 +91,6 @@ bob.pad.base
 bob.pad.face
 bob.pad.vein
 bob.pad.voice
+bob.rppg.base
 bob.sp
 gridtk