From 03490c0599ad2358da8c6579be1dfdcb88cdd2cd Mon Sep 17 00:00:00 2001 From: Guillaume HEUSCH <guillaume.heusch@idiap.ch> Date: Tue, 9 Oct 2018 22:34:25 +0200 Subject: [PATCH] added fargo database --- bob/bio/face/database/__init__.py | 3 ++ bob/bio/face/database/fargo.py | 57 +++++++++++++++++++++++++++++++ setup.py | 2 ++ 3 files changed, 62 insertions(+) create mode 100644 bob/bio/face/database/fargo.py diff --git a/bob/bio/face/database/__init__.py b/bob/bio/face/database/__init__.py index 252f5705..6d839b5f 100644 --- a/bob/bio/face/database/__init__.py +++ b/bob/bio/face/database/__init__.py @@ -20,6 +20,9 @@ from .scface import SCFaceBioDatabase from .replaymobile import ReplayMobileBioDatabase from .msu_mfsd_mod import MsuMfsdModBioDatabase +from .fargo import FargoBioDatabase + + # gets sphinx autodoc done right - don't remove it diff --git a/bob/bio/face/database/fargo.py b/bob/bio/face/database/fargo.py new file mode 100644 index 00000000..8ebc874e --- /dev/null +++ b/bob/bio/face/database/fargo.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python +# vim: set fileencoding=utf-8 : + +""" + FARGO database implementation of bob.bio.base.database.Database interface. + It is an extension of an SQL-based database interface, which directly talks to FARGO database, for + verification experiments (good to use in bob.bio.base framework). +""" + +import os +import bob.db.base + +from .database import FaceBioFile +from bob.bio.base.database import BioDatabase + + +class FargoBioDatabase(BioDatabase): + """ + FARGO database implementation of :py:class:`bob.bio.base.database.BioDatabase` interface. + It is an extension of the database interface, which directly talks to ATNT database, for + verification experiments (good to use in bob.bio.base framework). + """ + + def __init__( + self, + original_directory=None, + original_extension='.png', + protocol='mc-rgb', + **kwargs + ): + # call base class constructors to open a session to the database + super(FargoBioDatabase, self).__init__( + name='fargo', + original_directory=original_directory, + original_extension=original_extension, + protocol=protocol, + **kwargs) + + from bob.db.fargo.query import Database as LowLevelDatabase + self._db = LowLevelDatabase(original_directory, original_extension, protocol=protocol) + + def objects(self, groups=None, purposes=None, protocol=None, model_ids=None, **kwargs): + retval = self._db.objects(protocol=protocol, groups=groups, 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 model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): + return self._db.model_ids(groups=groups, protocol=protocol) + + def annotations(self, file): + + if self.annotation_directory is None: + return None + + annotation_file = os.path.join(self.annotation_directory, file.path + self.annotation_extension) + return bob.db.base.read_annotation_file(annotation_file, 'eyecenter') + + diff --git a/setup.py b/setup.py index 1d257edc..4aa35d51 100644 --- a/setup.py +++ b/setup.py @@ -136,6 +136,8 @@ setup( 'replay-img-spoof = bob.bio.face.config.database.replay:replay_spoof', 'replaymobile-img-licit = bob.bio.face.config.database.replaymobile:replaymobile_licit', 'replaymobile-img-spoof = bob.bio.face.config.database.replaymobile:replaymobile_spoof', + + 'fargo = bob.bio.face.config.database.fargo:database', ], 'bob.bio.annotator': [ -- GitLab