From aa4903a731e7c5140078b9d8cbd6f5490472f431 Mon Sep 17 00:00:00 2001 From: Tiago Freitas Pereira <tiagofrepereira@gmail.com> Date: Sat, 10 Sep 2016 13:42:26 +0200 Subject: [PATCH] [refactoring2016] Moved highlevel interface to bob.bio.face --- .gitlab-ci.yml | 2 +- bob/bio/face/config/database/__init__.py | 0 bob/bio/face/config/database/arface.py | 11 ++ bob/bio/face/config/database/atnt.py | 9 ++ bob/bio/face/config/database/banca_english.py | 12 ++ bob/bio/face/config/database/caspeal.py | 11 ++ bob/bio/face/config/database/frgc.py | 11 ++ bob/bio/face/config/database/gbu.py | 17 +++ .../face/config/database/lfw_restricted.py | 19 +++ .../face/config/database/lfw_unrestricted.py | 20 +++ bob/bio/face/config/database/mobio_female.py | 21 ++++ bob/bio/face/config/database/mobio_image.py | 19 +++ bob/bio/face/config/database/mobio_male.py | 22 ++++ bob/bio/face/config/database/multipie.py | 13 ++ bob/bio/face/config/database/multipie_pose.py | 24 ++++ bob/bio/face/config/database/scface.py | 10 ++ bob/bio/face/config/database/xm2vts.py | 10 ++ bob/bio/face/database/__init__.py | 21 ++++ bob/bio/face/database/arface.py | 36 ++++++ bob/bio/face/database/atnt.py | 36 ++++++ bob/bio/face/database/banca.py | 47 ++++++++ bob/bio/face/database/caspeal.py | 36 ++++++ bob/bio/face/database/cuhk_cufs.py | 47 ++++++++ bob/bio/face/database/database.py | 23 ++++ bob/bio/face/database/frgc.py | 37 ++++++ bob/bio/face/database/gbu.py | 36 ++++++ bob/bio/face/database/ijba.py | 36 ++++++ bob/bio/face/database/lfw.py | 37 ++++++ bob/bio/face/database/mobio.py | 49 ++++++++ bob/bio/face/database/multipie.py | 48 ++++++++ bob/bio/face/database/replay.py | 114 ++++++++++++++++++ bob/bio/face/database/scface.py | 47 ++++++++ bob/bio/face/database/xm2vts.py | 36 ++++++ .../face/script/display_face_annotations.py | 2 +- bob/bio/face/test/test_databases.py | 4 +- buildout-dev.cfg | 79 ++++++++++++ setup.py | 26 ++-- 37 files changed, 1011 insertions(+), 17 deletions(-) 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/database/__init__.py create mode 100644 bob/bio/face/database/arface.py create mode 100644 bob/bio/face/database/atnt.py create mode 100644 bob/bio/face/database/banca.py create mode 100644 bob/bio/face/database/caspeal.py create mode 100644 bob/bio/face/database/cuhk_cufs.py create mode 100644 bob/bio/face/database/database.py create mode 100644 bob/bio/face/database/frgc.py create mode 100644 bob/bio/face/database/gbu.py create mode 100644 bob/bio/face/database/ijba.py create mode 100644 bob/bio/face/database/lfw.py create mode 100644 bob/bio/face/database/mobio.py create mode 100644 bob/bio/face/database/multipie.py create mode 100644 bob/bio/face/database/replay.py create mode 100644 bob/bio/face/database/scface.py create mode 100644 bob/bio/face/database/xm2vts.py create mode 100644 buildout-dev.cfg diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f26a01e9..0add73b2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,7 +33,7 @@ variables: variables: &build_variables BOB_DOCUMENTATION_SERVER: "http://www.idiap.ch/software/bob/docs/latest/bob/%s/master/" script: - - ./bin/buildout + - ./bin/buildout -c buildout-dev.cfg - if [ -x ./bin/bob_dbmanage.py ]; then ./bin/bob_dbmanage.py all download --force; fi - ./bin/sphinx-build doc sphinx - ./bin/python setup.py bdist_wheel --python-tag ${WHEEL_TAG} 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..3bae0e88 --- /dev/null +++ b/bob/bio/face/config/database/arface.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +from bob.bio.face.database import ARFaceBioDatabase + +arface_directory = "[YOUR_ARFACE_DIRECTORY]" + +database = ARFaceBioDatabase( + original_directory=arface_directory, + original_extension=".png", + 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..95c38b30 --- /dev/null +++ b/bob/bio/face/config/database/atnt.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python + +from bob.bio.face.database import AtntBioDatabase + +atnt_directory = "[YOUR_ATNT_DIRECTORY]" + +database = AtntBioDatabase( + original_directory=atnt_directory, +) 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..53fbc36a --- /dev/null +++ b/bob/bio/face/config/database/banca_english.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python + +from bob.bio.face.database import BancaBioDatabase + +banca_directory = "[YOUR_BANCA_DIRECTORY]" + +database = BancaBioDatabase( + original_directory=banca_directory, + original_extension=".ppm", + 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..f4fd257a --- /dev/null +++ b/bob/bio/face/config/database/caspeal.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +from bob.bio.face.database import CaspealBioDatabase + +caspeal_directory = "[YOUR_CAS-PEAL_DIRECTORY]" + +database = CaspealBioDatabase( + original_directory=caspeal_directory, + 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..f351cea4 --- /dev/null +++ b/bob/bio/face/config/database/frgc.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python + +from bob.bio.face.database import FRGCBioDatabase + +frgc_directory = "[YOUR_FRGC_DIRECTORY]" + +database = FRGCBioDatabase( + original_directory=frgc_directory, + 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..c74b3b3c --- /dev/null +++ b/bob/bio/face/config/database/gbu.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python + +from bob.bio.face.database import GBUBioDatabase + +mbgc_v1_directory = "[YOUR_MBGC-V1_DIRECTORY]" + +database = GBUBioDatabase( + original_directory=mbgc_v1_directory, + 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..373aac0c --- /dev/null +++ b/bob/bio/face/config/database/lfw_restricted.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python + +from bob.bio.face.database import LFWBioDatabase + +lfw_directory = "[YOUR_LFW_FUNNELED_DIRECTORY]" + +database = LFWBioDatabase( + original_directory=lfw_directory, + annotation_type='funneled', + + 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..db4ecb9e --- /dev/null +++ b/bob/bio/face/config/database/lfw_unrestricted.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python + +from bob.bio.face.database import LFWBioDatabase + +lfw_directory = "[YOUR_LFW_FUNNELED_DIRECTORY]" + +database = LFWBioDatabase( + original_directory=lfw_directory, + annotation_type='funneled', + + 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..9e472b67 --- /dev/null +++ b/bob/bio/face/config/database/mobio_female.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python + +from bob.bio.face.database import MobioBioDatabase + +mobio_image_directory = "[YOUR_MOBIO_IMAGE_DIRECTORY]" +mobio_annotation_directory = "[YOUR_MOBIO_ANNOTATION_DIRECTORY]" + +database = MobioBioDatabase( + original_directory=mobio_image_directory, + original_extension=".png", + annotation_directory=mobio_annotation_directory, + + 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..3ac114ac --- /dev/null +++ b/bob/bio/face/config/database/mobio_image.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python + +from bob.bio.face.database import MobioBioDatabase + +mobio_image_directory = "[YOUR_MOBIO_IMAGE_DIRECTORY]" +mobio_annotation_directory = "[YOUR_MOBIO_ANNOTATION_DIRECTORY]" + +database = MobioBioDatabase( + original_directory=mobio_image_directory, + original_extension=".png", + annotation_directory=mobio_annotation_directory, + + 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..6d572d7d --- /dev/null +++ b/bob/bio/face/config/database/mobio_male.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python + +from bob.bio.face.database import MobioBioDatabase + +mobio_image_directory = "[YOUR_MOBIO_IMAGE_DIRECTORY]" +mobio_annotation_directory = "[YOUR_MOBIO_ANNOTATION_DIRECTORY]" + +database = MobioBioDatabase( + original_directory=mobio_image_directory, + original_extension=".png", + annotation_directory=mobio_annotation_directory, + + 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..405c60aa --- /dev/null +++ b/bob/bio/face/config/database/multipie.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python + +from bob.bio.face.database import MultipieBioDatabase + +multipie_image_directory = "[YOUR_MULTI-PIE_IMAGE_DIRECTORY]" +multipie_annotation_directory = "[YOUR_MULTI-PIE_ANNOTATION_DIRECTORY]" + +database = MultipieBioDatabase( + original_directory=multipie_image_directory, + annotation_directory=multipie_annotation_directory, + 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..3260f0e0 --- /dev/null +++ b/bob/bio/face/config/database/multipie_pose.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python + + +from bob.bio.face.database import MultipieBioDatabase + +# 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') + +multipie_image_directory = "[YOUR_MULTI-PIE_IMAGE_DIRECTORY]" +multipie_annotation_directory = "[YOUR_MULTI-PIE_ANNOTATION_DIRECTORY]" + +database = MultipieBioDatabase( + original_directory=multipie_image_directory, + annotation_directory=multipie_annotation_directory, + 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..6fd8e7ea --- /dev/null +++ b/bob/bio/face/config/database/scface.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python + +from bob.bio.face.database import SCFaceBioDatabase + +scface_directory = "[YOUR_SC_FACE_DIRECTORY]" + +database = SCFaceBioDatabase( + original_directory=scface_directory, + 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..e9cb98a0 --- /dev/null +++ b/bob/bio/face/config/database/xm2vts.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python + +from bob.bio.face.database import XM2VTSBioDatabase + +xm2vts_directory = "[YOUR_XM2VTS_DIRECTORY]" + +database = XM2VTSBioDatabase( + original_directory=xm2vts_directory, + protocol='lp1' +) diff --git a/bob/bio/face/database/__init__.py b/bob/bio/face/database/__init__.py new file mode 100644 index 00000000..c74a3abf --- /dev/null +++ b/bob/bio/face/database/__init__.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : + + +from .mobio import MobioBioDatabase +from .replay import ReplayBioDatabase +from .atnt import AtntBioDatabase +from .banca import BancaBioDatabase +from .gbu import GBUBioDatabase +from .arface import ARFaceBioDatabase +from .caspeal import CaspealBioDatabase +from .lfw import LFWBioDatabase +from .multipie import MultipieBioDatabase +from .ijba import IJBABioDatabase +from .xm2vts import XM2VTSBioDatabase +from .frgc import FRGCBioDatabase +from .cuhk_cufs import CUHK_CUFSBioDatabase +from .scface import SCFaceBioDatabase + +# gets sphinx autodoc done right - don't remove it +__all__ = [_ for _ in dir() if not _.startswith('_')] diff --git a/bob/bio/face/database/arface.py b/bob/bio/face/database/arface.py new file mode 100644 index 00000000..0165931b --- /dev/null +++ b/bob/bio/face/database/arface.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + ARFACE database implementation of bob.bio.base.database.ZTDatabase interface. + It is an extension of an SQL-based database interface, which directly talks to ARFACE database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class ARFaceBioDatabase(BioDatabase): + """ + Implements verification API for querying ARFACE database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(ARFaceBioDatabase, self).__init__(name='arface', **kwargs) + + from bob.db.arface.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] diff --git a/bob/bio/face/database/atnt.py b/bob/bio/face/database/atnt.py new file mode 100644 index 00000000..16226a94 --- /dev/null +++ b/bob/bio/face/database/atnt.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Amir Mohammadi <amir.mohammadi@idiap.ch> +# Wed 13 Jul 16:43:22 CEST 2016 + +""" + Atnt database implementation of bob.bio.base.database.Database interface. + It is an extension of an SQL-based database interface, which directly talks to Atnt database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class AtntBioDatabase(BioDatabase): + """ + Implements verification API for querying Atnt database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(AtntBioDatabase, self).__init__(name='atnt', **kwargs) + + from bob.db.atnt.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(f) for f in retval] diff --git a/bob/bio/face/database/banca.py b/bob/bio/face/database/banca.py new file mode 100644 index 00000000..45de3dda --- /dev/null +++ b/bob/bio/face/database/banca.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + BANCA database implementation of bob.bio.base.database.ZTDatabase interface. + It is an extension of an SQL-based database interface, which directly talks to Banca database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import ZTBioDatabase, BioFile + + +class BancaBioDatabase(ZTBioDatabase): + """ + Implements verification API for querying Banca database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(BancaBioDatabase, self).__init__(name='banca', **kwargs) + + from bob.db.banca.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def tmodel_ids_with_protocol(self, protocol=None, groups=None, **kwargs): + return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] + + def tobjects(self, groups=None, protocol=None, model_ids=None, **kwargs): + retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] + + def zobjects(self, groups=None, protocol=None, **kwargs): + retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] diff --git a/bob/bio/face/database/caspeal.py b/bob/bio/face/database/caspeal.py new file mode 100644 index 00000000..d1568408 --- /dev/null +++ b/bob/bio/face/database/caspeal.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + CASPEAL database implementation of bob.bio.base.database.Database interface. + It is an extension of an SQL-based database interface, which directly talks to CASPEAL database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class CaspealBioDatabase(BioDatabase): + """ + Implements verification API for querying Caspeal database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(CaspealBioDatabase, self).__init__(name='caspeal', **kwargs) + + from bob.db.caspeal.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] diff --git a/bob/bio/face/database/cuhk_cufs.py b/bob/bio/face/database/cuhk_cufs.py new file mode 100644 index 00000000..62ed153d --- /dev/null +++ b/bob/bio/face/database/cuhk_cufs.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + CUHK_CUFS database implementation of bob.bio.base.database.ZTDatabase interface. + It is an extension of an SQL-based database interface, which directly talks to CUHK_CUFS database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import ZTBioDatabase, BioFile + + +class CUHK_CUFSBioDatabase(ZTBioDatabase): + """ + Implements verification API for querying CUHK_CUFS database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(CUHK_CUFSBioDatabase, self).__init__(name='cuhk_cufs', **kwargs) + + from bob.db.cuhk_cufs.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol="search_split1_p2s", **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def tmodel_ids_with_protocol(self, protocol="search_split1_p2s", groups=None, **kwargs): + return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs) + + def objects(self, groups=None, protocol="search_split1_p2s", purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval] + + def tobjects(self, groups=None, protocol="search_split1_p2s", model_ids=None, **kwargs): + retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs) + return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval] + + def zobjects(self, groups=None, protocol="search_split1_p2s", **kwargs): + retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs) + return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval] diff --git a/bob/bio/face/database/database.py b/bob/bio/face/database/database.py new file mode 100644 index 00000000..8b001459 --- /dev/null +++ b/bob/bio/face/database/database.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Wed 20 July 14:43:22 CEST 2016 + +""" + Verification API for bob.db.voxforge +""" + +from bob.bio.base.database.file import BioFile + + +class FaceBioFile(BioFile): + def __init__(self, f): + """ + Initializes this File object with an File equivalent for + VoxForge database. + """ + super(FaceBioFile, self).__init__(client_id=f.client_id, path=f.path, file_id=f.id) + + self.__f = f + + diff --git a/bob/bio/face/database/frgc.py b/bob/bio/face/database/frgc.py new file mode 100644 index 00000000..b6d8ac7a --- /dev/null +++ b/bob/bio/face/database/frgc.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + FRGC database implementation of bob.bio.base.database.Database interface. + It is an extension of an SQL-based database interface, which directly talks to FRGC database, for + verification experiments (good to use in bob.bio.base framework). +""" + + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class FRGCBioDatabase(BioDatabase): + """ + Implements verification API for querying FRGC database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(FRGCBioDatabase, self).__init__(name='frgc', **kwargs) + + from bob.db.frgc.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval] diff --git a/bob/bio/face/database/gbu.py b/bob/bio/face/database/gbu.py new file mode 100644 index 00000000..0e8eab53 --- /dev/null +++ b/bob/bio/face/database/gbu.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + GBU database implementation of bob.bio.base.database.ZTDatabase interface. + It is an extension of an SQL-based database interface, which directly talks to GBU database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class GBUBioDatabase(BioDatabase): + """ + Implements verification API for querying gbu database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(GBUBioDatabase, self).__init__(name='GBU', **kwargs) + + from bob.db.gbu.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] diff --git a/bob/bio/face/database/ijba.py b/bob/bio/face/database/ijba.py new file mode 100644 index 00000000..711b11f3 --- /dev/null +++ b/bob/bio/face/database/ijba.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + IJBA database implementation of bob.bio.base.database.Database interface. + It is an extension of an SQL-based database interface, which directly talks to IJBA database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class IJBABioDatabase(BioDatabase): + """ + Implements verification API for querying IJBA database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(IJBABioDatabase, self).__init__(name='ijba', **kwargs) + + from bob.db.ijba.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol="search_split1", **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol="search_split1", purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval] diff --git a/bob/bio/face/database/lfw.py b/bob/bio/face/database/lfw.py new file mode 100644 index 00000000..c4039f80 --- /dev/null +++ b/bob/bio/face/database/lfw.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + LFW database implementation of bob.bio.base.database.Database interface. + It is an extension of an SQL-based database interface, which directly talks to LFW database, for + verification experiments (good to use in bob.bio.base framework). +""" + + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class LFWBioDatabase(BioDatabase): + """ + Implements verification API for querying LFW database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(LFWBioDatabase, self).__init__(name='lfw', **kwargs) + + from bob.db.lfw.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] diff --git a/bob/bio/face/database/mobio.py b/bob/bio/face/database/mobio.py new file mode 100644 index 00000000..d7d4fd32 --- /dev/null +++ b/bob/bio/face/database/mobio.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Amir Mohammadi <amir.mohammadi@idiap.ch> +# Wed 13 Jul 16:43:22 CEST 2016 + +""" + MOBIO database implementation of bob.bio.base.database.ZTDatabase interface. + It is an extension of an SQL-based database interface, which directly talks to Mobio database, for + verification experiments (good to use in bob.bio.base framework). +""" + + +from .database import FaceBioFile +from bob.bio.base.database import ZTBioDatabase, BioFile + + +class MobioBioDatabase(ZTBioDatabase): + """ + Implements verification API for querying Mobio database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(MobioBioDatabase, self).__init__(name='mobio', + **kwargs) + + from bob.db.mobio.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, gender=None): + return self.__db.model_ids(groups=groups, protocol=protocol, gender=gender) + + def tmodel_ids_with_protocol(self, protocol=None, groups=None, **kwargs): + return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(f) for f in retval] + + def tobjects(self, groups=None, protocol=None, model_ids=None, **kwargs): + retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs) + return [FaceBioFile(f) for f in retval] + + def zobjects(self, groups=None, protocol=None, **kwargs): + retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs) + return [FaceBioFile(f) for f in retval] diff --git a/bob/bio/face/database/multipie.py b/bob/bio/face/database/multipie.py new file mode 100644 index 00000000..ac726e5f --- /dev/null +++ b/bob/bio/face/database/multipie.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + Multipie database implementation of bob.bio.base.database.Database interface. + It is an extension of an SQL-based database interface, which directly talks to Multipie database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import ZTBioDatabase, BioFile + + +class MultipieBioDatabase(ZTBioDatabase): + """ + Implements verification API for querying MULTIPIE database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(MultipieBioDatabase, self).__init__(name='multipie', **kwargs) + + from bob.db.multipie.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [BioFile(client_id=f.client_id, path=f.path, file_id=f.id) for f in retval] + + def tmodel_ids_with_protocol(self, protocol=None, groups=None, **kwargs): + return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs) + + def tobjects(self, groups=None, protocol=None, model_ids=None, **kwargs): + retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] + + def zobjects(self, groups=None, protocol=None, **kwargs): + retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] + diff --git a/bob/bio/face/database/replay.py b/bob/bio/face/database/replay.py new file mode 100644 index 00000000..a9f5555c --- /dev/null +++ b/bob/bio/face/database/replay.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Pavel Korshunov <pavel.korshunov@idiap.ch> +# Mon 12 Oct 14:43:22 CEST 2015 + +""" + Replay attack database implementation of bob.bio.base.database.BioDatabase interface. + It is an extension of an SQL-based database interface, which directly talks to Replay database, for + verification experiments (good to use in bob.bio.base framework). + It also implements a kind of hack so that you can run vulnerability analysis with it. +""" + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class ReplayBioDatabase(BioDatabase): + """ + Implements verification API for querying Replay database. + """ + __doc__ = __doc__ + + def __init__(self, **kwargs): + # call base class constructors to open a session to the database + super(ReplayBioDatabase, self).__init__(name='replay', **kwargs) + + from bob.db.replay import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + self.low_level_group_names = ('train', 'devel', 'test') + self.high_level_group_names = ('world', 'dev', 'eval') + + def protocol_names(self): + """Returns all registered protocol names + Here I am going to hack and double the number of protocols + with -licit and -spoof. This is done for running vulnerability + analysis""" + names = [p.name + '-licit' for p in self.__db.protocols()] + names += [p.name + '-spoof' for p in self.__db.protocols()] + return names + + def groups(self): + return self.convert_names_to_highlevel( + self.__db.groups(), self.low_level_group_names, self.high_level_group_names) + + def annotations(self, file): + """Will return the bounding box annotation of all frames of the video.""" + # fn = 10 # 10th frame number + annots = file.bbx(directory=self.original_directory) + # bob uses the (y, x) format + annotations = dict() + for i in range(annots.shape[0]): + topleft = (annots[i][2], annots[i][1]) + bottomright = (annots[i][2] + annots[i][4], annots[i][1] + annots[i][3]) + annotations[str(i)] = {'topleft': topleft, 'bottomright': bottomright} + return annotations + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + # since the low-level API does not support verification straight-forward-ly, we improvise. + files = self.objects(groups=groups, protocol=protocol) + return sorted(set(f.client_id for f in files)) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + if protocol == '.': + protocol = None + protocol = self.check_parameter_for_validity(protocol, "protocol", self.protocol_names(), 'grandtest-licit') + groups = self.check_parameters_for_validity(groups, "group", self.groups(), self.groups()) + purposes = self.check_parameters_for_validity(purposes, "purpose", ('enroll', 'probe'), ('enroll', 'probe')) + purposes = list(purposes) + groups = self.convert_names_to_lowlevel( + groups, self.low_level_group_names, self.high_level_group_names) + + # protocol licit is not defined in the low level API + # so do a hack here. + if '-licit' in protocol: + # for licit we return the grandtest protocol + protocol = protocol.replace('-licit', '') + # The low-level API has only "attack", "real", "enroll" and "probe" + # should translate to "real" or "attack" depending on the protocol. + # enroll does not to change. + if 'probe' in purposes: + purposes.remove('probe') + purposes.append('real') + if len(purposes) == 1: + # making the model_ids to None will return all clients which make + # the impostor data also available. + model_ids = None + elif model_ids: + raise NotImplementedError( + 'Currently returning both enroll and probe for specific ' + 'client(s) in the licit protocol is not supported. ' + 'Please specify one purpose only.') + elif '-spoof' in protocol: + protocol = protocol.replace('-spoof', '') + # you need to replace probe with attack and real for the spoof protocols. + # I am adding the real here also to create positives scores also. + if 'probe' in purposes: + purposes.remove('probe') + purposes.append('attack') + + # now, query the actual Replay database + objects = self.__db.objects(groups=groups, protocol=protocol, cls=purposes, clients=model_ids, **kwargs) + + # make sure to return BioFile representation of a file, not the database one + # also make sure you replace client ids with spoof/metatdata1/metadata2/... + retval = [] + for f in objects: + if f.is_real(): + retval.append(FaceBioFile(f)) + else: + temp = FaceBioFile(f) + temp.client_id = 'attack' + retval.append(temp) + return retval diff --git a/bob/bio/face/database/scface.py b/bob/bio/face/database/scface.py new file mode 100644 index 00000000..9a9f799c --- /dev/null +++ b/bob/bio/face/database/scface.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + SCFace database implementation of bob.bio.base.database.ZTDatabase interface. + It is an extension of an SQL-based database interface, which directly talks to SCFace database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import ZTBioDatabase, BioFile + + +class SCFaceBioDatabase(ZTBioDatabase): + """ + Implements verification API for querying SCFace database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(SCFaceBioDatabase, self).__init__(name='scface', **kwargs) + + from bob.db.scface.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def tmodel_ids_with_protocol(self, protocol=None, groups=None, **kwargs): + return self.__db.tmodel_ids(protocol=protocol, groups=groups, **kwargs) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] + + def tobjects(self, groups=None, protocol=None, model_ids=None, **kwargs): + retval = self.__db.tobjects(groups=groups, protocol=protocol, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] + + def zobjects(self, groups=None, protocol=None, **kwargs): + retval = self.__db.zobjects(groups=groups, protocol=protocol, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] diff --git a/bob/bio/face/database/xm2vts.py b/bob/bio/face/database/xm2vts.py new file mode 100644 index 00000000..6666bf59 --- /dev/null +++ b/bob/bio/face/database/xm2vts.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : +# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> +# Sat 20 Aug 15:43:10 CEST 2016 + +""" + XM2VTS database implementation of bob.bio.base.database.Database interface. + It is an extension of an SQL-based database interface, which directly talks to XM2VTS database, for + verification experiments (good to use in bob.bio.base framework). +""" + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase, BioFile + + +class XM2VTSBioDatabase(BioDatabase): + """ + Implements verification API for querying XM2VTS database. + """ + + def __init__( + self, + **kwargs + ): + # call base class constructors to open a session to the database + super(XM2VTSBioDatabase, self).__init__(name='xm2vts', **kwargs) + + from bob.db.xm2vts.query import Database as LowLevelDatabase + self.__db = LowLevelDatabase() + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self.__db.model_ids(groups=groups, protocol=protocol) + + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + retval = self.__db.objects(groups=groups, protocol=protocol, purposes=purposes, model_ids=model_ids, **kwargs) + return [FaceBioFile(BioFile(client_id=f.client_id, path=f.path, file_id=f.id)) for f in retval] diff --git a/bob/bio/face/script/display_face_annotations.py b/bob/bio/face/script/display_face_annotations.py index b0202f63..6421c020 100644 --- a/bob/bio/face/script/display_face_annotations.py +++ b/bob/bio/face/script/display_face_annotations.py @@ -55,7 +55,7 @@ def main(command_line_parameters=None): # load database database = bob.bio.base.load_resource("".join(args.database), "database") # replace directories - if isinstance(database, bob.bio.db.BioDatabase): + if isinstance(database, bob.bio.base.database.BioDatabase): database.replace_directories(args.database_directories_file) # get all files diff --git a/bob/bio/face/test/test_databases.py b/bob/bio/face/test/test_databases.py index 53d159c4..d6dacb9f 100644 --- a/bob/bio/face/test/test_databases.py +++ b/bob/bio/face/test/test_databases.py @@ -26,7 +26,7 @@ from bob.bio.base.test.utils import db_available def _check_database(database, groups=('dev',), protocol=None, training_depends=False, models_depend=False): - assert isinstance(database, bob.bio.db.BioDatabase) + assert isinstance(database, bob.bio.base.database.BioDatabase) # load the directories if 'HOME' in os.environ: @@ -52,7 +52,7 @@ def _check_database(database, groups=('dev',), protocol=None, training_depends=F 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.db.ZTBioDatabase) + assert isinstance(database, bob.bio.base.database.ZTBioDatabase) for group in groups: t_model_ids = database.t_model_ids(group) assert len(t_model_ids) > 0 diff --git a/buildout-dev.cfg b/buildout-dev.cfg new file mode 100644 index 00000000..67f6a74e --- /dev/null +++ b/buildout-dev.cfg @@ -0,0 +1,79 @@ +; vim: set fileencoding=utf-8 : +; Manuel Guenther <manuel.guenther@idiap.ch> +; Thu Oct 9 16:51:06 CEST 2014 + +[buildout] +parts = scripts +eggs = bob.bio.face + bob.db.arface + bob.db.banca + bob.db.caspeal + 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 + mr.developer +auto-checkout = * +develop = src/bob.extension + src/bob.db.base + src/bob.db.atnt + src/bob.bio.base + src/bob.db.arface + src/bob.db.banca + src/bob.db.caspeal + 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 +debug = true +verbose = true +newest = false + +[sources] +bob.extension = git https://gitlab.idiap.ch/bob/bob.extension +;bob.blitz = git https://gitlab.idiap.ch/bob/bob.blitz +;bob.core = git https://gitlab.idiap.ch/bob/bob.core +;bob.io.base = git https://gitlab.idiap.ch/bob/bob.io.base +;bob.io.image = git https://gitlab.idiap.ch/bob/bob.io.image +;bob.learn.activation = git https://gitlab.idiap.ch/bob/bob.learn.activation +;bob.math = git https://gitlab.idiap.ch/bob/bob.math +;bob.sp = git https://gitlab.idiap.ch/bob/bob.sp +;bob.ip.base = git https://gitlab.idiap.ch/bob/bob.ip.base +;bob.ip.color = git https://gitlab.idiap.ch/bob/bob.ip.color +;bob.ip.draw = git https://gitlab.idiap.ch/bob/bob.ip.draw +;bob.ip.gabor = git https://gitlab.idiap.ch/bob/bob.ip.gabor +;bob.learn.linear = git https://gitlab.idiap.ch/bob/bob.learn.linear +;bob.learn.em = git https://gitlab.idiap.ch/bob/bob.learn.em +;bob.measure = git https://gitlab.idiap.ch/bob/bob.measure +bob.db.base = git https://gitlab.idiap.ch/bob/bob.db.base +bob.db.atnt = git https://gitlab.idiap.ch/bob/bob.db.atnt +bob.bio.base = git git@gitlab.idiap.ch:bob/bob.bio.base branch=issue-8-remove-database-configuration +;bob.learn.boosting = git https://gitlab.idiap.ch/bob/bob.learn.boosting +;bob.ip.facedetect = git https://gitlab.idiap.ch/bob/bob.ip.facedetect +;bob.ip.flandmark = git https://gitlab.idiap.ch/bob/bob.ip.flandmark +bob.db.arface = git https://gitlab.idiap.ch/bob/bob.db.arface +bob.db.banca = git https://gitlab.idiap.ch/bob/bob.db.banca +bob.db.caspeal = git https://gitlab.idiap.ch/bob/bob.db.caspeal +bob.db.frgc = git https://gitlab.idiap.ch/bob/bob.db.frgc +bob.db.gbu = git https://gitlab.idiap.ch/bob/bob.db.gbu +bob.db.lfw = git https://gitlab.idiap.ch/bob/bob.db.lfw +bob.db.mobio = git https://gitlab.idiap.ch/bob/bob.db.mobio +bob.db.multipie = git https://gitlab.idiap.ch/bob/bob.db.multipie +bob.db.scface = git https://gitlab.idiap.ch/bob/bob.db.scface +bob.db.xm2vts = git https://gitlab.idiap.ch/bob/bob.db.xm2vts + +[scripts] +recipe = bob.buildout:scripts +dependent-scripts = true diff --git a/setup.py b/setup.py index 03bd32d2..30b08122 100644 --- a/setup.py +++ b/setup.py @@ -108,19 +108,19 @@ setup( ], 'bob.bio.database': [ - 'arface = bob.bio.db.default_configs.arface:database', - 'banca = bob.bio.db.default_configs.banca_english:database', - 'caspeal = bob.bio.db.default_configs.caspeal:database', - 'frgc = bob.bio.db.default_configs.frgc:database', - 'gbu = bob.bio.db.default_configs.gbu:database', - 'lfw-restricted = bob.bio.db.default_configs.lfw_restricted:database', - 'lfw-unrestricted = bob.bio.db.default_configs.lfw_unrestricted:database', - 'mobio-male = bob.bio.db.default_configs.mobio_male:database', # MOBIO gender-dependent training - 'mobio-female = bob.bio.db.default_configs.mobio_female:database', # MOBIO gender-dependent training - 'multipie = bob.bio.db.default_configs.multipie:database', - 'multipie-pose = bob.bio.db.default_configs.multipie_pose:database', - 'scface = bob.bio.db.default_configs.scface:database', - 'xm2vts = bob.bio.db.default_configs.xm2vts: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-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