From 7cbba66fd254fb3699988cb645de827c0899e3e3 Mon Sep 17 00:00:00 2001
From: Manuel Guenther <manuel.guenther@idiap.ch>
Date: Tue, 2 Jun 2015 14:30:21 +0200
Subject: [PATCH] Added databases.

---
 bob/bio/face/config/database/__init__.py      |   0
 bob/bio/face/config/database/arface.py        |  14 ++
 bob/bio/face/config/database/atnt.py          |  13 ++
 bob/bio/face/config/database/banca_english.py |  15 ++
 bob/bio/face/config/database/caspeal.py       |  14 ++
 bob/bio/face/config/database/frgc.py          |  13 ++
 bob/bio/face/config/database/gbu.py           |  20 ++
 .../face/config/database/lfw_restricted.py    |  22 +++
 .../face/config/database/lfw_unrestricted.py  |  22 +++
 bob/bio/face/config/database/mobio_female.py  |  24 +++
 bob/bio/face/config/database/mobio_image.py   |  18 ++
 bob/bio/face/config/database/mobio_male.py    |  24 +++
 bob/bio/face/config/database/multipie.py      |  17 ++
 bob/bio/face/config/database/multipie_pose.py |  25 +++
 bob/bio/face/config/database/scface.py        |  15 ++
 bob/bio/face/config/database/xm2vts.py        |  15 ++
 bob/bio/face/test/test_databases.py           | 177 ++++++++++++++++++
 buildout.cfg                                  |  34 ++++
 setup.py                                      |  16 ++
 19 files changed, 498 insertions(+)
 create mode 100644 bob/bio/face/config/database/__init__.py
 create mode 100644 bob/bio/face/config/database/arface.py
 create mode 100644 bob/bio/face/config/database/atnt.py
 create mode 100644 bob/bio/face/config/database/banca_english.py
 create mode 100644 bob/bio/face/config/database/caspeal.py
 create mode 100644 bob/bio/face/config/database/frgc.py
 create mode 100644 bob/bio/face/config/database/gbu.py
 create mode 100644 bob/bio/face/config/database/lfw_restricted.py
 create mode 100644 bob/bio/face/config/database/lfw_unrestricted.py
 create mode 100644 bob/bio/face/config/database/mobio_female.py
 create mode 100644 bob/bio/face/config/database/mobio_image.py
 create mode 100644 bob/bio/face/config/database/mobio_male.py
 create mode 100644 bob/bio/face/config/database/multipie.py
 create mode 100644 bob/bio/face/config/database/multipie_pose.py
 create mode 100644 bob/bio/face/config/database/scface.py
 create mode 100644 bob/bio/face/config/database/xm2vts.py
 create mode 100644 bob/bio/face/test/test_databases.py

diff --git a/bob/bio/face/config/database/__init__.py b/bob/bio/face/config/database/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/bob/bio/face/config/database/arface.py b/bob/bio/face/config/database/arface.py
new file mode 100644
index 00000000..344fe278
--- /dev/null
+++ b/bob/bio/face/config/database/arface.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+
+import bob.db.arface
+import bob.bio.base
+
+arface_directory = "[YOUR_ARFACE_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBob(
+    database = bob.db.arface.Database(
+        original_directory = arface_directory
+    ),
+    name = 'arface',
+    protocol = 'all'
+)
diff --git a/bob/bio/face/config/database/atnt.py b/bob/bio/face/config/database/atnt.py
new file mode 100644
index 00000000..c5cf0433
--- /dev/null
+++ b/bob/bio/face/config/database/atnt.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+
+import bob.db.atnt
+import bob.bio.base
+
+atnt_directory = "[YOUR_ATNT_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBob(
+    database = bob.db.atnt.Database(
+        original_directory = atnt_directory
+    ),
+    name = 'atnt'
+)
diff --git a/bob/bio/face/config/database/banca_english.py b/bob/bio/face/config/database/banca_english.py
new file mode 100644
index 00000000..e8919ef3
--- /dev/null
+++ b/bob/bio/face/config/database/banca_english.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+
+import bob.db.banca
+import bob.bio.base
+
+banca_directory = "[YOUR_BANCA_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBobZT(
+    database = bob.db.banca.Database(
+        original_directory = banca_directory,
+        original_extension = '.ppm'
+    ),
+    name = "banca",
+    protocol = 'P'
+)
diff --git a/bob/bio/face/config/database/caspeal.py b/bob/bio/face/config/database/caspeal.py
new file mode 100644
index 00000000..677cffd7
--- /dev/null
+++ b/bob/bio/face/config/database/caspeal.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+
+import bob.db.caspeal
+import bob.bio.base
+
+caspeal_directory = "[YOUR_CAS-PEAL_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBob(
+    database = bob.db.caspeal.Database(
+        original_directory = caspeal_directory
+    ),
+    name = "caspeal",
+    protocol = 'lighting'
+)
diff --git a/bob/bio/face/config/database/frgc.py b/bob/bio/face/config/database/frgc.py
new file mode 100644
index 00000000..304fcb39
--- /dev/null
+++ b/bob/bio/face/config/database/frgc.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+
+import bob.db.frgc
+import bob.bio.base
+
+frgc_directory = "[YOUR_FRGC_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBob(
+    database = bob.db.frgc.Database(frgc_directory),
+    name = "frgc",
+    protocol = '2.0.1',
+    models_depend_on_protocol = True
+)
diff --git a/bob/bio/face/config/database/gbu.py b/bob/bio/face/config/database/gbu.py
new file mode 100644
index 00000000..f7fdc7f8
--- /dev/null
+++ b/bob/bio/face/config/database/gbu.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+
+import bob.db.gbu
+import bob.bio.base
+
+mbgc_v1_directory = "[YOUR_MBGC-V1_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBob(
+    database = bob.db.gbu.Database(
+        original_directory = mbgc_v1_directory
+    ),
+    name = "gbu",
+    protocol = 'Good',
+    models_depend_on_protocol = True,
+
+    all_files_options = { 'subworld': 'x2' },
+    extractor_training_options = { 'subworld': 'x2' },
+    projector_training_options = { 'subworld': 'x2' },
+    enroller_training_options = { 'subworld': 'x2' }
+)
diff --git a/bob/bio/face/config/database/lfw_restricted.py b/bob/bio/face/config/database/lfw_restricted.py
new file mode 100644
index 00000000..d8a95a23
--- /dev/null
+++ b/bob/bio/face/config/database/lfw_restricted.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+
+import bob.db.lfw
+import bob.bio.base
+
+lfw_directory = "[YOUR_LFW_FUNNELED_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBob(
+    database = bob.db.lfw.Database(
+        original_directory = lfw_directory,
+        annotation_type = 'funneled'
+    ),
+    name = 'lfw',
+    protocol = 'view1',
+    training_depends_on_protocol = True,
+    models_depend_on_protocol = True,
+
+    all_files_options = { 'world_type' : 'restricted' },
+    extractor_training_options = { 'world_type' : 'restricted' }, # 'subworld' : 'twofolds'
+    projector_training_options = { 'world_type' : 'restricted' }, # 'subworld' : 'twofolds'
+    enroller_training_options =  { 'world_type' : 'restricted' } # 'subworld' : 'twofolds'
+)
diff --git a/bob/bio/face/config/database/lfw_unrestricted.py b/bob/bio/face/config/database/lfw_unrestricted.py
new file mode 100644
index 00000000..2d626de6
--- /dev/null
+++ b/bob/bio/face/config/database/lfw_unrestricted.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+
+import bob.db.lfw
+import bob.bio.base
+
+lfw_directory = "[YOUR_LFW_FUNNELED_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBob(
+    database = bob.db.lfw.Database(
+        original_directory = lfw_directory,
+        annotation_type = 'funneled'
+    ),
+    name = 'lfw',
+    protocol = 'view1',
+    training_depends_on_protocol = True,
+    models_depend_on_protocol = True,
+
+    all_files_options = { 'world_type' : 'unrestricted' },
+    extractor_training_options = { 'world_type' : 'unrestricted' }, # 'subworld' : 'twofolds'
+    projector_training_options = { 'world_type' : 'unrestricted' }, # 'subworld' : 'twofolds'
+    enroller_training_options =  { 'world_type' : 'unrestricted' } # 'subworld' : 'twofolds'
+)
diff --git a/bob/bio/face/config/database/mobio_female.py b/bob/bio/face/config/database/mobio_female.py
new file mode 100644
index 00000000..e4a4fa2f
--- /dev/null
+++ b/bob/bio/face/config/database/mobio_female.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+
+import bob.db.mobio
+import bob.bio.base
+
+mobio_image_directory = "[YOUR_MOBIO_IMAGE_DIRECTORY]"
+mobio_annotation_directory = "[YOUR_MOBIO_ANNOTATION_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBobZT(
+    database = bob.db.mobio.Database(
+        original_directory = mobio_image_directory,
+        original_extension = ".png",
+        annotation_directory = mobio_annotation_directory,
+    ),
+    name = "mobio-female",
+    protocol = 'female',
+    models_depend_on_protocol = True,
+
+    all_files_options = { 'gender' : 'female' },
+    extractor_training_options = { 'gender' : 'female' },
+    projector_training_options = { 'gender' : 'female' },
+    enroller_training_options = { 'gender' : 'female' },
+    z_probe_options = { 'gender' : 'female' }
+)
diff --git a/bob/bio/face/config/database/mobio_image.py b/bob/bio/face/config/database/mobio_image.py
new file mode 100644
index 00000000..cfe979c8
--- /dev/null
+++ b/bob/bio/face/config/database/mobio_image.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+
+import bob.db.mobio
+import bob.bio.base
+
+mobio_image_directory = "[YOUR_MOBIO_IMAGE_DIRECTORY]"
+mobio_annotation_directory = "[YOUR_MOBIO_ANNOTATION_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBobZT(
+    database = bob.db.mobio.Database(
+        original_directory = mobio_image_directory,
+        original_extension = '.png',
+        annotation_directory = mobio_annotation_directory,
+    ),
+    name = "mobio",
+    protocol = 'male',
+    models_depend_on_protocol = True
+)
diff --git a/bob/bio/face/config/database/mobio_male.py b/bob/bio/face/config/database/mobio_male.py
new file mode 100644
index 00000000..cc92efe8
--- /dev/null
+++ b/bob/bio/face/config/database/mobio_male.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+
+import bob.db.mobio
+import bob.bio.base
+
+mobio_image_directory = "[YOUR_MOBIO_IMAGE_DIRECTORY]"
+mobio_annotation_directory = "[YOUR_MOBIO_ANNOTATION_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBobZT(
+    database = bob.db.mobio.Database(
+        original_directory = mobio_image_directory,
+        original_extension = ".png",
+        annotation_directory = mobio_annotation_directory,
+    ),
+    name = "mobio-male",
+    protocol = 'male',
+    models_depend_on_protocol = True,
+
+    all_files_options = { 'gender' : 'male' },
+    extractor_training_options = { 'gender' : 'male' },
+    projector_training_options = { 'gender' : 'male' },
+    enroller_training_options = { 'gender' : 'male' },
+    z_probe_options = { 'gender' : 'male' }
+)
diff --git a/bob/bio/face/config/database/multipie.py b/bob/bio/face/config/database/multipie.py
new file mode 100644
index 00000000..c8ba598b
--- /dev/null
+++ b/bob/bio/face/config/database/multipie.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+
+import bob.db.multipie
+import bob.bio.base
+
+multipie_image_directory = "[YOUR_MULTI-PIE_IMAGE_DIRECTORY]"
+multipie_annotation_directory = "[YOUR_MULTI-PIE_ANNOTATION_DIRECTORY]"
+
+database = bob.bio.base.database.DatabaseBobZT(
+    database = bob.db.multipie.Database(
+        original_directory = multipie_image_directory,
+        annotation_directory = multipie_annotation_directory
+    ),
+    name = "multipie",
+    protocol = 'U',
+    training_depends_on_protocol = True
+)
diff --git a/bob/bio/face/config/database/multipie_pose.py b/bob/bio/face/config/database/multipie_pose.py
new file mode 100644
index 00000000..c00f6900
--- /dev/null
+++ b/bob/bio/face/config/database/multipie_pose.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+
+import bob.db.multipie
+import bob.bio.base
+
+multipie_image_directory = "[YOUR_MULTI-PIE_IMAGE_DIRECTORY]"
+multipie_annotation_directory = "[YOUR_MULTI-PIE_ANNOTATION_DIRECTORY]"
+
+# here, we only want to have the cameras that are used in the P protocol
+cameras = ('24_0', '01_0', '20_0', '19_0', '04_1', '05_0', '05_1', '14_0', '13_0', '08_0', '09_0', '12_0', '11_0')
+
+database = bob.bio.base.database.DatabaseBobZT(
+    database = bob.db.multipie.Database(
+        original_directory = multipie_image_directory,
+        annotation_directory = multipie_annotation_directory
+    ),
+    name = "multipie-pose",
+    protocol = 'P',
+    training_depends_on_protocol = True,
+
+    all_files_options = {'cameras' : cameras},
+    extractor_training_options = {'cameras' : cameras},
+    projector_training_options = {'cameras' : cameras, 'world_sampling': 3, 'world_first': True},
+    enroller_training_options = {'cameras' : cameras}
+)
diff --git a/bob/bio/face/config/database/scface.py b/bob/bio/face/config/database/scface.py
new file mode 100644
index 00000000..e83fb655
--- /dev/null
+++ b/bob/bio/face/config/database/scface.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+
+import bob.db.scface
+import bob.bio.base
+
+scface_directory = "[YOUR_SC_FACE_DIRECTORY]"
+
+# setup for SCface database
+database = bob.bio.base.database.DatabaseBobZT(
+    database = bob.db.scface.Database(
+        original_directory = scface_directory
+    ),
+    name = 'scface',
+    protocol = 'combined'
+)
diff --git a/bob/bio/face/config/database/xm2vts.py b/bob/bio/face/config/database/xm2vts.py
new file mode 100644
index 00000000..b75a1950
--- /dev/null
+++ b/bob/bio/face/config/database/xm2vts.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+
+import bob.db.xm2vts
+import bob.bio.base
+
+xm2vts_directory = "[YOUR_XM2VTS_IMAGE_DIRECTORY]"
+
+# setup for XM2VTS
+database = bob.bio.base.database.DatabaseBob(
+    database = bob.db.xm2vts.Database(
+        original_directory = xm2vts_directory
+    ),
+    name = "xm2vts",
+    protocol = 'lp1'
+)
diff --git a/bob/bio/face/test/test_databases.py b/bob/bio/face/test/test_databases.py
new file mode 100644
index 00000000..6bfc93e8
--- /dev/null
+++ b/bob/bio/face/test/test_databases.py
@@ -0,0 +1,177 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# @author: Manuel Guenther <Manuel.Guenther@idiap.ch>
+# @date: Thu May 24 10:41:42 CEST 2012
+#
+# Copyright (C) 2011-2012 Idiap Research Institute, Martigny, Switzerland
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, version 3 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+import os
+from nose.plugins.skip import SkipTest
+
+import bob.bio.base
+
+def _check_database(database, groups = ('dev',), protocol = None, training_depends = False, models_depend = False):
+  assert isinstance(database, bob.bio.base.database.DatabaseBob)
+
+  if protocol: database.protocol = protocol
+  assert len(database.all_files()) > 0
+  assert len(database.training_files('train_extractor')) > 0
+  assert len(database.training_files('train_enroller', arrange_by_client = True)) > 0
+
+  for group in groups:
+    model_ids = database.model_ids(group)
+    assert len(model_ids) > 0
+    assert database.client_id_from_model_id(model_ids[0]) is not None
+    assert len(database.enroll_files(model_ids[0], group)) > 0
+    assert len(database.probe_files(model_ids[0], group)) > 0
+
+  assert database.training_depends_on_protocol == training_depends
+  assert database.models_depend_on_protocol == models_depend
+
+
+def _check_database_zt(database, groups = ('dev', 'eval'), protocol = None, training_depends = False, models_depend = False):
+  _check_database(database, groups, protocol, training_depends, models_depend)
+  assert isinstance(database, bob.bio.base.database.DatabaseBobZT)
+  for group in groups:
+    t_model_ids = database.t_model_ids(group)
+    assert len(t_model_ids) > 0
+    assert database.client_id_from_model_id(t_model_ids[0]) is not None
+    assert len(database.t_enroll_files(t_model_ids[0], group)) > 0
+    assert len(database.z_probe_files(group)) > 0
+
+
+def _check_annotations(database):
+  for file in database.all_files():
+    annotations = database.annotations(file)
+    if annotations is not None:
+      assert isinstance(annotations, dict)
+      assert 'reye' in annotations
+      assert 'leye' in annotations
+
+
+
+def test_arface():
+  database = bob.bio.base.load_resource('arface', 'database')
+  try:
+    _check_database(database, groups=('dev', 'eval'))
+    _check_annotations(database)
+  except IOError as e:
+    raise SkipTest("The database could not queried; probably the db.sql3 file is missing. Here is the import error: '%s'" % e)
+
+
+def test_atnt():
+  _check_database(bob.bio.base.load_resource('atnt', 'database'))
+
+
+def test_banca():
+  database = bob.bio.base.load_resource('banca', 'database')
+  try:
+    _check_database_zt(database)
+    _check_annotations(database)
+  except IOError as e:
+    raise SkipTest("The database could not be queried; probably the db.sql3 file is missing. Here is the import error: '%s'" % e)
+
+
+def test_caspeal():
+  database = bob.bio.base.load_resource('caspeal', 'database')
+  try:
+    _check_database(database)
+    _check_database(database, protocol = 'aging')
+    _check_annotations(database)
+  except IOError as e:
+    raise SkipTest("The database could not queried; probably the db.sql3 file is missing. Here is the import error: '%s'" % e)
+
+
+def test_frgc():
+  try:
+    database = bob.bio.base.load_resource('frgc', 'database')
+  except ValueError as e:
+    raise SkipTest("The database could not be opened, probably the original directory is wrong. Here is the value error: '%s'" % e)
+  _check_database(database, models_depend = True)
+  _check_database(database, protocol = '2.0.2', models_depend = True)
+  _check_annotations(database)
+
+
+def test_gbu():
+  database = bob.bio.base.load_resource('gbu', 'database')
+  try:
+    _check_database(database, models_depend=True)
+    _check_database(database, protocol = 'Bad', models_depend=True)
+    _check_database(database, protocol = 'Ugly', models_depend=True)
+    _check_annotations(database)
+  except IOError as e:
+    raise SkipTest("The database could not queried; probably the db.sql3 file is missing. Here is the import error: '%s'" % e)
+
+
+def test_lfw():
+  database = bob.bio.base.load_resource('lfw-restricted', 'database')
+  try:
+    _check_database(database, training_depends = True, models_depend = True)
+    _check_database(database, groups = ('dev', 'eval'), protocol = 'fold1', training_depends = True, models_depend = True)
+    _check_database(bob.bio.base.load_resource('lfw-unrestricted', 'database'), training_depends = True, models_depend = True)
+    _check_annotations(database)
+  except IOError as e:
+    raise SkipTest("The database could not queried; probably the db.sql3 file is missing. Here is the import error: '%s'" % e)
+
+
+def test_mobio():
+  database = bob.bio.base.load_resource('mobio-image', 'database')
+  try:
+    _check_database_zt(database, models_depend=True)
+    _check_database_zt(database, protocol = 'female', models_depend=True)
+    _check_database_zt(bob.bio.base.load_resource('mobio-male', 'database'), models_depend=True)
+    _check_database_zt(bob.bio.base.load_resource('mobio-female', 'database'), models_depend=True)
+  except IOError as e:
+    raise SkipTest("The database could not be queried; probably the db.sql3 file is missing. Here is the import error: '%s'" % e)
+
+  try:
+    _check_annotations(database)
+  except IOError as e:
+    raise SkipTest("The annotations could not be queried; probably the annotation files are missing. Here is the import error: '%s'" % e)
+
+
+def test_multipie():
+#  raise SkipTest('This test definitely takes too much time. If you want the tests enabled, please disable this exception temporarily.')
+  database = bob.bio.base.load_resource('multipie', 'database')
+  try:
+    _check_database_zt(database, training_depends = True)
+    _check_database_zt(bob.bio.base.load_resource('multipie-pose', 'database'), training_depends = True)
+  except IOError as e:
+    raise SkipTest("The database could not queried; probably the db.sql3 file is missing. Here is the import error: '%s'" % e)
+
+  try:
+    _check_annotations(database)
+  except IOError as e:
+    raise SkipTest("The annotations could not be queried; probably the annotation files are missing. Here is the import error: '%s'" % e)
+
+
+def test_scface():
+  database = bob.bio.base.load_resource('scface', 'database')
+  try:
+    _check_database_zt(database)
+    _check_annotations(database)
+  except IOError as e:
+    raise SkipTest("The database could not be queried; probably the db.sql3 file is missing. Here is the import error: '%s'" % e)
+
+
+def test_xm2vts():
+  database = bob.bio.base.load_resource('xm2vts', 'database')
+  try:
+    _check_database(database, groups=('dev', 'eval'))
+    _check_database(database, groups=('dev', 'eval'), protocol = 'darkened-lp1')
+    _check_annotations(database)
+  except IOError as e:
+    raise SkipTest("The database could not be queried; probably the db.sql3 file is missing. Here is the import error: '%s'" % e)
diff --git a/buildout.cfg b/buildout.cfg
index 303ea632..efb2ca04 100644
--- a/buildout.cfg
+++ b/buildout.cfg
@@ -5,6 +5,17 @@
 [buildout]
 parts = scripts
 eggs = bob.bio.face
+       bob.db.arface
+       bob.db.banca
+       bob.db.caspeal
+       bob.db.gbu
+       bob.db.frgc
+       bob.db.gbu
+       bob.db.lfw
+       bob.db.mobio
+       bob.db.multipie
+       bob.db.scface
+       bob.db.xm2vts
        gridtk
        
 extensions = bob.buildout
@@ -33,6 +44,17 @@ develop = src/bob.extension
           src/bob.learn.boosting
           src/bob.ip.facedetect
           src/bob.ip.flandmark
+          src/bob.db.arface
+          src/bob.db.banca
+          src/bob.db.caspeal
+          src/bob.db.gbu
+          src/bob.db.frgc
+          src/bob.db.gbu
+          src/bob.db.lfw
+          src/bob.db.mobio
+          src/bob.db.multipie
+          src/bob.db.scface
+          src/bob.db.xm2vts
           .
 
 ; options for bob.buildout
@@ -65,6 +87,18 @@ bob.learn.boosting = git https://github.com/bioidiap/bob.learn.boosting
 bob.ip.facedetect = git https://github.com/bioidiap/bob.ip.facedetect
 bob.ip.flandmark = git https://github.com/bioidiap/bob.ip.flandmark
 
+bob.db.arface = git https://github.com/bioidiap/bob.db.arface
+bob.db.banca = git https://github.com/bioidiap/bob.db.banca
+bob.db.caspeal = git https://github.com/bioidiap/bob.db.caspeal
+bob.db.gbu = git https://github.com/bioidiap/bob.db.gbu 
+bob.db.frgc = git https://github.com/bioidiap/bob.db.frgc 
+bob.db.gbu = git https://github.com/bioidiap/bob.db.gbu
+bob.db.lfw = git https://github.com/bioidiap/bob.db.lfw 
+bob.db.mobio = git https://github.com/bioidiap/bob.db.mobio
+bob.db.multipie = git https://github.com/bioidiap/bob.db.multipie
+bob.db.scface = git https://github.com/bioidiap/bob.db.scface
+bob.db.xm2vts = git https://github.com/bioidiap/bob.db.xm2vts
+
 
 [scripts]
 recipe = bob.buildout:scripts
diff --git a/setup.py b/setup.py
index 7f000b62..9e516f8d 100644
--- a/setup.py
+++ b/setup.py
@@ -106,6 +106,22 @@ setup(
       ],
 
       'bob.bio.database': [
+        'atnt              = bob.bio.face.config.database.atnt:database',
+        'arface            = bob.bio.face.config.database.arface:database',
+        'banca             = bob.bio.face.config.database.banca_english:database',
+        'caspeal           = bob.bio.face.config.database.caspeal:database',
+        'frgc              = bob.bio.face.config.database.frgc:database',
+        'gbu               = bob.bio.face.config.database.gbu:database',
+        'lfw-restricted    = bob.bio.face.config.database.lfw_restricted:database',
+        'lfw-unrestricted  = bob.bio.face.config.database.lfw_unrestricted:database',
+        'mobio-image       = bob.bio.face.config.database.mobio_image:database',
+        'mobio-male        = bob.bio.face.config.database.mobio_male:database', # MOBIO gender-dependent training
+        'mobio-female      = bob.bio.face.config.database.mobio_female:database', # MOBIO gender-dependent training
+        'multipie          = bob.bio.face.config.database.multipie:database',
+        'multipie-pose     = bob.bio.face.config.database.multipie_pose:database',
+        'scface            = bob.bio.face.config.database.scface:database',
+        'xm2vts            = bob.bio.face.config.database.xm2vts:database',
+
       ],
 
       'bob.bio.preprocessor': [
-- 
GitLab