From 6405fa0f780b96e9f9d06d16b6fb4d8f6362ad03 Mon Sep 17 00:00:00 2001 From: Tiago Freitas Pereira <tiagofrepereira@gmail.com> Date: Wed, 17 Jun 2020 17:07:08 +0200 Subject: [PATCH] Updated FaceCrop and FaceDetect --- bob/bio/face/config/database/mobio_male.py | 15 +++++++++++++++ bob/bio/face/preprocessor/FaceCrop.py | 15 ++++++++------- bob/bio/face/preprocessor/FaceDetect.py | 15 +++++++-------- bob/bio/face/test/test_baselines.py | 2 +- setup.py | 6 ++---- 5 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 bob/bio/face/config/database/mobio_male.py 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..ee41b246 --- /dev/null +++ b/bob/bio/face/config/database/mobio_male.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python + +from bob.bio.face.database import MobioBioDatabase +from bob.bio.base.pipelines.vanilla_biometrics import DatabaseConnector +from bob.extension import rc + +database = DatabaseConnector( + MobioBioDatabase( + original_directory=rc["bob.db.mobio.directory"], + annotation_directory=rc["bob.db.mobio.annotation_directory"], + original_extension=".png", + protocol="mobile0-male", + ) +) + diff --git a/bob/bio/face/preprocessor/FaceCrop.py b/bob/bio/face/preprocessor/FaceCrop.py index 96c24fa8..6c0eea38 100644 --- a/bob/bio/face/preprocessor/FaceCrop.py +++ b/bob/bio/face/preprocessor/FaceCrop.py @@ -11,7 +11,7 @@ from .Base import Base logger = logging.getLogger("bob.bio.face") from sklearn.utils import check_array - +from bob.pipelines.sample import SampleBatch class FaceCrop(Base): """Crops the face according to the given annotations. @@ -335,16 +335,17 @@ class FaceCrop(Base): # crop face return self.data_type(self.crop_face(image, annot)) - X = check_array(X, allow_nd=True) + if isinstance(X, SampleBatch): + + if annotations is None: + return [_crop(data) for data in X] + else: + return [_crop(data, annot) for data, annot in zip(X, annotations)] - if isinstance(annotations, list): - cropped_images = [] - for image, annot in zip(X, annotations): - cropped_images.append(_crop(image, annot)) - return cropped_images else: return _crop(X, annotations) + def __getstate__(self): d = dict(self.__dict__) d.pop("mask_rng") diff --git a/bob/bio/face/preprocessor/FaceDetect.py b/bob/bio/face/preprocessor/FaceDetect.py index 57dc29c7..e6d883aa 100644 --- a/bob/bio/face/preprocessor/FaceDetect.py +++ b/bob/bio/face/preprocessor/FaceDetect.py @@ -10,7 +10,7 @@ import numpy from .Base import Base from .utils import load_cropper_only from sklearn.utils import check_array - +from bob.pipelines.sample import SampleBatch import logging logger = logging.getLogger("bob.bio.face") @@ -225,14 +225,13 @@ class FaceDetect(Base): return self.data_type(image) - X = check_array(X, allow_nd=True) - cropped_images = [] + if isinstance(X, SampleBatch): + + if annotations is None: + return [_crop(data) for data in X] + else: + return [_crop(data, annot) for data, annot in zip(X, annotations)] - if isinstance(annotations, list): - cropped_images = [] - for image, annot in zip(X, annotations): - cropped_images.append(_crop(image, annot)) - return cropped_images else: return _crop(X, annotations) diff --git a/bob/bio/face/test/test_baselines.py b/bob/bio/face/test/test_baselines.py index 8a6cea0d..effdcdfa 100644 --- a/bob/bio/face/test/test_baselines.py +++ b/bob/bio/face/test/test_baselines.py @@ -62,7 +62,7 @@ def run_baseline(baseline, samples_for_training=[]): probes = get_fake_sample_set(purpose="probe") # Regular pipeline - pipeline = load_resource(baseline, "baseline") + pipeline = load_resource(baseline, "pipeline") scores = pipeline(samples_for_training, biometric_references, probes) assert len(scores) == 1 assert len(scores[0]) == 1 diff --git a/setup.py b/setup.py index c00a75d9..a6b6e056 100644 --- a/setup.py +++ b/setup.py @@ -115,9 +115,7 @@ setup( '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:mobio_image', - 'mobio-male = bob.bio.face.config.database.mobio:mobio_male', # MOBIO gender-dependent training - 'mobio-female = bob.bio.face.config.database.mobio:mobio_female', # MOBIO gender-dependent training + 'mobio-male = bob.bio.face.config.database.mobio_male:database', 'msu-mfsd-mod-licit = bob.bio.face.config.database.msu_mfsd_mod:msu_mfsd_mod_licit', 'msu-mfsd-mod-spoof = bob.bio.face.config.database.msu_mfsd_mod:msu_mfsd_mod_spoof', 'multipie = bob.bio.face.config.database.multipie:database', @@ -149,7 +147,7 @@ setup( ], #baselines - 'bob.bio.baseline':[ + 'bob.bio.pipeline':[ 'facenet_sanderberg = bob.bio.face.config.baseline.facenet_sanderberg:pipeline', 'inception_resnetv1_casiawebface = bob.bio.face.config.baseline.inception_resnetv1_casiawebface:pipeline', 'inception_resnetv2_casiawebface = bob.bio.face.config.baseline.inception_resnetv2_casiawebface:pipeline', -- GitLab