Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
bob
bob.bio.face
Commits
bf618295
Commit
bf618295
authored
Jun 01, 2021
by
Amir MOHAMMADI
Browse files
Merge branch 'refactor-cropping' into 'master'
Refactor baseline config helpers See merge request
!119
parents
ddee3e69
43eedd1f
Pipeline
#51146
passed with stages
in 28 minutes
Changes
24
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
bob/bio/face/__init__.py
View file @
bf618295
...
...
@@ -4,6 +4,7 @@ from . import algorithm
from
.
import
script
from
.
import
database
from
.
import
annotator
from
.
import
utils
from
.
import
test
...
...
bob/bio/face/config/baseline/arcface_insightface.py
View file @
bf618295
from
bob.bio.face.embeddings.mxnet_models
import
ArcFaceInsightFace
from
bob.bio.face.config.baseline.helpers
import
embedding_transformer_112x112
from
bob.bio.base.pipelines.vanilla_biometrics
import
(
Distance
,
VanillaBiometricsPipeline
,
)
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
memory_demanding
=
(
database
.
memory_demanding
if
hasattr
(
database
,
"memory_demanding"
)
else
False
)
else
:
annotation_type
=
None
fixed_positions
=
None
memory_demanding
=
False
from
bob.bio.face.utils
import
lookup_config_from_database
from
bob.bio.face.config.baseline.templates
import
arcface_baseline
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_database
(
locals
().
get
(
"database"
)
)
def
load
(
annotation_type
,
fixed_positions
=
None
):
transformer
=
embedding_transformer_112x112
(
ArcFaceInsightFace
(
memory_demanding
=
memory_demanding
),
annotation_type
,
fixed_positions
,
color_channel
=
"rgb"
,
)
algorithm
=
Distance
()
return
VanillaBiometricsPipeline
(
transformer
,
algorithm
)
return
arcface_baseline
(
embedding
=
ArcFaceInsightFace
(
memory_demanding
=
memory_demanding
),
annotation_type
=
annotation_type
,
fixed_positions
=
fixed_positions
,
)
pipeline
=
load
(
annotation_type
,
fixed_positions
)
...
...
bob/bio/face/config/baseline/dummy.py
View file @
bf618295
...
...
@@ -5,21 +5,17 @@ from bob.bio.base.pipelines.vanilla_biometrics import (
VanillaBiometricsPipeline
,
)
from
bob.pipelines.transformers
import
SampleLinearize
from
bob.bio.face.utils
import
lookup_config_from_database
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
else
:
annotation_type
=
None
fixed_positions
=
None
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_database
()
import
bob.ip.color
from
sklearn.base
import
TransformerMixin
,
BaseEstimator
class
ToGray
(
TransformerMixin
,
BaseEstimator
):
class
ToGray
(
TransformerMixin
,
BaseEstimator
):
def
transform
(
self
,
X
,
annotations
=
None
):
return
[
bob
.
ip
.
color
.
rgb_to_gray
(
data
)[
0
:
10
,
0
:
10
]
for
data
in
X
]
return
[
bob
.
ip
.
color
.
rgb_to_gray
(
data
)[
0
:
10
,
0
:
10
]
for
data
in
X
]
def
_more_tags
(
self
):
return
{
"stateless"
:
True
,
"requires_fit"
:
False
}
...
...
@@ -34,9 +30,7 @@ def load(annotation_type, fixed_positions=None):
transformer
=
make_pipeline
(
wrap
(
[
"sample"
],
ToGray
(),
transform_extra_arguments
=
transform_extra_arguments
,
[
"sample"
],
ToGray
(),
transform_extra_arguments
=
transform_extra_arguments
,
),
SampleLinearize
(),
)
...
...
bob/bio/face/config/baseline/facenet_sanderberg.py
View file @
bf618295
from
bob.bio.face.embeddings.tf2_inception_resnet
import
(
FaceNetSanderberg_20170512_110547
,
)
from
bob.bio.face.config.baseline.helpers
import
embedding_transformer_160x160
from
bob.bio.base.pipelines.vanilla_biometrics
import
(
Distance
,
VanillaBiometricsPipeline
,
)
memory_demanding
=
False
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
memory_demanding
=
(
database
.
memory_demanding
if
hasattr
(
database
,
"memory_demanding"
)
else
False
)
from
bob.bio.face.utils
import
lookup_config_from_database
from
bob.bio.face.config.baseline.templates
import
facenet_baseline
el
se
:
annotation_type
=
None
fixed_positions
=
None
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_databa
se
(
locals
().
get
(
"database"
)
)
def
load
(
annotation_type
,
fixed_positions
=
None
):
transformer
=
embedding_transformer_160x160
(
FaceNetSanderberg_20170512_110547
(
memory_demanding
=
memory_demanding
),
annotation_type
,
fixed_positions
,
return
facenet_baseline
(
embedding
=
FaceNetSanderberg_20170512_110547
(
memory_demanding
=
memory_demanding
),
annotation_type
=
annotation_type
,
fixed_positions
=
fixed_positions
,
)
algorithm
=
Distance
()
return
VanillaBiometricsPipeline
(
transformer
,
algorithm
)
pipeline
=
load
(
annotation_type
,
fixed_positions
)
...
...
bob/bio/face/config/baseline/gabor_graph.py
View file @
bf618295
...
...
@@ -3,7 +3,11 @@ from bob.bio.base.pipelines.vanilla_biometrics import (
VanillaBiometricsPipeline
,
BioAlgorithmLegacy
,
)
from
bob.bio.face.config.baseline.helpers
import
crop_80x64
from
bob.bio.face.utils
import
(
lookup_config_from_database
,
legacy_default_cropping
,
make_cropper
,
)
import
math
import
numpy
as
np
import
bob.bio.face
...
...
@@ -17,20 +21,9 @@ import logging
logger
=
logging
.
getLogger
(
__name__
)
#### SOLVING IF THERE'S ANY DATABASE INFORMATION
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
else
:
annotation_type
=
None
fixed_positions
=
None
def
get_cropper
(
annotation_type
,
fixed_positions
=
None
):
# Cropping
face_cropper
,
transform_extra_arguments
=
crop_80x64
(
annotation_type
,
fixed_positions
,
color_channel
=
"gray"
)
return
face_cropper
,
transform_extra_arguments
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_database
(
locals
().
get
(
"database"
)
)
def
get_pipeline
(
face_cropper
,
transform_extra_arguments
):
...
...
@@ -80,9 +73,22 @@ def get_pipeline(face_cropper, transform_extra_arguments):
def
load
(
annotation_type
,
fixed_positions
=
None
):
####### SOLVING THE FACE CROPPER TO BE USED ##########
face_cropper
,
transform_extra_arguments
=
get_cropper
(
annotation_type
,
fixed_positions
# Define cropped positions
CROPPED_IMAGE_HEIGHT
=
80
CROPPED_IMAGE_WIDTH
=
CROPPED_IMAGE_HEIGHT
*
4
//
5
cropped_image_size
=
(
CROPPED_IMAGE_HEIGHT
,
CROPPED_IMAGE_WIDTH
)
cropped_positions
=
legacy_default_cropping
(
cropped_image_size
,
annotation_type
)
# Cropping
face_cropper
,
transform_extra_arguments
=
make_cropper
(
cropped_image_size
=
cropped_image_size
,
cropped_positions
=
cropped_positions
,
fixed_positions
=
fixed_positions
,
color_channel
=
"gray"
,
annotator
=
"mtcnn"
,
)
return
get_pipeline
(
face_cropper
,
transform_extra_arguments
)
...
...
bob/bio/face/config/baseline/inception_resnetv1_casiawebface.py
View file @
bf618295
from
bob.bio.face.embeddings.tf2_inception_resnet
import
(
InceptionResnetv1_Casia_CenterLoss_2018
,
)
from
bob.bio.face.config.baseline.helpers
import
embedding_transformer_160x160
from
bob.bio.base.pipelines.vanilla_biometrics
import
(
Distance
,
VanillaBiometricsPipeline
,
)
memory_demanding
=
False
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
memory_demanding
=
(
database
.
memory_demanding
if
hasattr
(
database
,
"memory_demanding"
)
else
False
)
from
bob.bio.face.utils
import
lookup_config_from_database
from
bob.bio.face.config.baseline.templates
import
facenet_baseline
el
se
:
annotation_type
=
None
fixed_positions
=
None
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_databa
se
(
locals
().
get
(
"database"
)
)
def
load
(
annotation_type
,
fixed_positions
=
None
):
transformer
=
embedding_transformer_160x160
(
InceptionResnetv1_Casia_CenterLoss_2018
(
memory_demanding
=
memory_demanding
),
annotation_type
,
fixed_positions
,
return
facenet_baseline
(
embedding
=
InceptionResnetv1_Casia_CenterLoss_2018
(
memory_demanding
=
memory_demanding
),
annotation_type
=
annotation_type
,
fixed_positions
=
fixed_positions
,
)
algorithm
=
Distance
()
return
VanillaBiometricsPipeline
(
transformer
,
algorithm
)
pipeline
=
load
(
annotation_type
,
fixed_positions
)
transformer
=
pipeline
.
transformer
bob/bio/face/config/baseline/inception_resnetv1_msceleb.py
View file @
bf618295
from
bob.bio.face.embeddings.tf2_inception_resnet
import
(
InceptionResnetv1_MsCeleb_CenterLoss_2018
,
)
from
bob.bio.face.config.baseline.helpers
import
embedding_transformer_160x160
from
bob.bio.base.pipelines.vanilla_biometrics
import
(
Distance
,
VanillaBiometricsPipeline
,
)
from
bob.bio.face.utils
import
lookup_config_from_database
from
bob.bio.face.config.baseline.templates
import
facenet_baseline
memory_demanding
=
False
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
memory_demanding
=
(
database
.
memory_demanding
if
hasattr
(
database
,
"memory_demanding"
)
else
False
)
el
se
:
annotation_type
=
None
fixed_positions
=
None
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_databa
se
(
locals
().
get
(
"database"
)
)
def
load
(
annotation_type
,
fixed_positions
=
None
):
transformer
=
embedding_transformer_160x160
(
InceptionResnetv1_MsCeleb_CenterLoss_2018
(
memory_demanding
=
memory_demanding
),
annotation_type
,
fixed_positions
,
return
facenet_baseline
(
embedding
=
InceptionResnetv1_MsCeleb_CenterLoss_2018
(
memory_demanding
=
memory_demanding
),
annotation_type
=
annotation_type
,
fixed_positions
=
fixed_positions
,
)
algorithm
=
Distance
()
return
VanillaBiometricsPipeline
(
transformer
,
algorithm
)
pipeline
=
load
(
annotation_type
,
fixed_positions
)
transformer
=
pipeline
.
transformer
bob/bio/face/config/baseline/inception_resnetv2_casiawebface.py
View file @
bf618295
from
bob.bio.face.embeddings.tf2_inception_resnet
import
(
InceptionResnetv2_Casia_CenterLoss_2018
,
)
from
bob.bio.face.config.baseline.helpers
import
embedding_transformer_160x160
from
bob.bio.base.pipelines.vanilla_biometrics
import
(
Distance
,
VanillaBiometricsPipeline
,
)
from
bob.bio.face.utils
import
lookup_config_from_database
from
bob.bio.face.config.baseline.templates
import
facenet_baseline
memory_demanding
=
False
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
memory_demanding
=
(
database
.
memory_demanding
if
hasattr
(
database
,
"memory_demanding"
)
else
False
)
el
se
:
annotation_type
=
None
fixed_positions
=
None
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_databa
se
(
locals
().
get
(
"database"
)
)
def
load
(
annotation_type
,
fixed_positions
=
None
):
transformer
=
embedding_transformer_160x160
(
InceptionResnetv2_Casia_CenterLoss_2018
(
memory_demanding
=
memory_demanding
),
annotation_type
,
fixed_positions
,
return
facenet_baseline
(
embedding
=
InceptionResnetv2_Casia_CenterLoss_2018
(
memory_demanding
=
memory_demanding
),
annotation_type
=
annotation_type
,
fixed_positions
=
fixed_positions
,
)
algorithm
=
Distance
()
return
VanillaBiometricsPipeline
(
transformer
,
algorithm
)
pipeline
=
load
(
annotation_type
,
fixed_positions
)
transformer
=
pipeline
.
transformer
bob/bio/face/config/baseline/inception_resnetv2_msceleb.py
View file @
bf618295
from
bob.bio.face.embeddings.tf2_inception_resnet
import
(
InceptionResnetv2_MsCeleb_CenterLoss_2018
,
)
from
bob.bio.face.config.baseline.helpers
import
embedding_transformer_160x160
from
bob.bio.base.pipelines.vanilla_biometrics
import
(
Distance
,
VanillaBiometricsPipeline
,
)
memory_demanding
=
False
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
from
bob.bio.face.utils
import
lookup_config_from_database
from
bob.bio.face.config.baseline.templates
import
facenet_baseline
memory_demanding
=
(
database
.
memory_demanding
if
hasattr
(
database
,
"memory_demanding"
)
else
False
)
else
:
annotation_type
=
None
fixed_positions
=
None
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_database
(
locals
().
get
(
"database"
)
)
def
load
(
annotation_type
,
fixed_positions
=
None
):
transformer
=
embedding_transformer_160x160
(
InceptionResnetv2_MsCeleb_CenterLoss_2018
(
memory_demanding
=
memory_demanding
),
annotation_type
,
fixed_positions
,
return
facenet_baseline
(
embedding
=
InceptionResnetv2_MsCeleb_CenterLoss_2018
(
memory_demanding
=
memory_demanding
),
annotation_type
=
annotation_type
,
fixed_positions
=
fixed_positions
,
)
algorithm
=
Distance
()
return
VanillaBiometricsPipeline
(
transformer
,
algorithm
)
pipeline
=
load
(
annotation_type
,
fixed_positions
)
transformer
=
pipeline
.
transformer
bob/bio/face/config/baseline/lda.py
View file @
bf618295
...
...
@@ -3,7 +3,11 @@ from bob.bio.base.pipelines.vanilla_biometrics import (
VanillaBiometricsPipeline
,
BioAlgorithmLegacy
,
)
from
bob.bio.face.config.baseline.helpers
import
crop_80x64
from
bob.bio.face.utils
import
(
lookup_config_from_database
,
legacy_default_cropping
,
make_cropper
,
)
import
numpy
as
np
import
bob.bio.face
from
sklearn.pipeline
import
make_pipeline
...
...
@@ -18,20 +22,27 @@ import logging
logger
=
logging
.
getLogger
(
__name__
)
#### SOLVING IF THERE'S ANY DATABASE INFORMATION
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
else
:
annotation_type
=
None
fixed_positions
=
None
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_database
(
locals
().
get
(
"database"
)
)
####### SOLVING THE FACE CROPPER TO BE USED ##########
def
load
(
annotation_type
,
fixed_positions
=
None
):
# Define cropped positions
CROPPED_IMAGE_HEIGHT
=
80
CROPPED_IMAGE_WIDTH
=
CROPPED_IMAGE_HEIGHT
*
4
//
5
cropped_image_size
=
(
CROPPED_IMAGE_HEIGHT
,
CROPPED_IMAGE_WIDTH
)
cropped_positions
=
legacy_default_cropping
(
cropped_image_size
,
annotation_type
)
# Cropping
face_cropper
,
transform_extra_arguments
=
crop_80x64
(
annotation_type
,
fixed_positions
,
color_channel
=
"gray"
face_cropper
,
transform_extra_arguments
=
make_cropper
(
cropped_image_size
=
cropped_image_size
,
cropped_positions
=
cropped_positions
,
fixed_positions
=
fixed_positions
,
color_channel
=
"gray"
,
annotator
=
"mtcnn"
,
)
preprocessor
=
bob
.
bio
.
face
.
preprocessor
.
TanTriggs
(
...
...
bob/bio/face/config/baseline/lgbphs.py
View file @
bf618295
...
...
@@ -3,7 +3,11 @@ from bob.bio.base.pipelines.vanilla_biometrics import (
VanillaBiometricsPipeline
,
BioAlgorithmLegacy
,
)
from
bob.bio.face.config.baseline.helpers
import
crop_80x64
from
bob.bio.face.utils
import
(
lookup_config_from_database
,
legacy_default_cropping
,
make_cropper
,
)
import
math
import
numpy
as
np
import
bob.bio.face
...
...
@@ -13,20 +17,9 @@ import bob.math
#### SOLVING IF THERE'S ANY DATABASE INFORMATION
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
else
:
annotation_type
=
None
fixed_positions
=
None
def
get_cropper
(
annotation_type
,
fixed_positions
=
None
):
# Cropping
face_cropper
,
transform_extra_arguments
=
crop_80x64
(
annotation_type
,
fixed_positions
,
color_channel
=
"gray"
)
return
face_cropper
,
transform_extra_arguments
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_database
(
locals
().
get
(
"database"
)
)
def
get_pipeline
(
face_cropper
,
transform_extra_arguments
):
...
...
@@ -70,10 +63,22 @@ def get_pipeline(face_cropper, transform_extra_arguments):
def
load
(
annotation_type
,
fixed_positions
=
None
):
# Define cropped positions
CROPPED_IMAGE_HEIGHT
=
80
CROPPED_IMAGE_WIDTH
=
CROPPED_IMAGE_HEIGHT
*
4
//
5
cropped_image_size
=
(
CROPPED_IMAGE_HEIGHT
,
CROPPED_IMAGE_WIDTH
)
cropped_positions
=
legacy_default_cropping
(
cropped_image_size
,
annotation_type
)
####### SOLVING THE FACE CROPPER TO BE USED ##########
face_cropper
,
transform_extra_arguments
=
get_cropper
(
annotation_type
,
fixed_positions
# Cropping
face_cropper
,
transform_extra_arguments
=
make_cropper
(
cropped_image_size
=
cropped_image_size
,
cropped_positions
=
cropped_positions
,
fixed_positions
=
fixed_positions
,
color_channel
=
"gray"
,
annotator
=
"mtcnn"
,
)
return
get_pipeline
(
face_cropper
,
transform_extra_arguments
)
...
...
bob/bio/face/config/baseline/mobilenetv2_msceleb_arcface_2021.py
View file @
bf618295
from
bob.bio.face.embeddings.mobilenet_v2
import
MobileNetv2_MsCeleb_ArcFace_2021
from
bob.bio.face.config.baseline.helpers
import
embedding_transformer_112x112
from
bob.bio.base.pipelines.vanilla_biometrics
import
(
Distance
,
VanillaBiometricsPipeline
,
)
from
bob.bio.face.utils
import
lookup_config_from_database
from
bob.bio.face.config.baseline.templates
import
arcface_baseline
memory_demanding
=
False
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
memory_demanding
=
(
database
.
memory_demanding
if
hasattr
(
database
,
"memory_demanding"
)
else
False
)
else
:
annotation_type
=
None
fixed_positions
=
None
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_database
(
locals
().
get
(
"database"
)
)
def
load
(
annotation_type
,
fixed_positions
=
None
):
transformer
=
embedding_transformer_112x112
(
MobileNetv2_MsCeleb_ArcFace_2021
(
memory_demanding
=
memory_demanding
),
annotation_type
,
fixed_positions
,
)
algorithm
=
Distance
()
return
VanillaBiometricsPipeline
(
transformer
,
algorithm
)
return
arcface_baseline
(
embedding
=
MobileNetv2_MsCeleb_ArcFace_2021
(
memory_demanding
=
memory_demanding
),
annotation_type
=
annotation_type
,
fixed_positions
=
fixed_positions
,
)
pipeline
=
load
(
annotation_type
,
fixed_positions
)
...
...
bob/bio/face/config/baseline/resnet50_msceleb_arcface_2021.py
View file @
bf618295
from
bob.bio.face.embeddings.resnet50
import
Resnet50_MsCeleb_ArcFace_2021
from
bob.bio.face.config.baseline.helpers
import
embedding_transformer_112x112
from
bob.bio.base.pipelines.vanilla_biometrics
import
(
Distance
,
VanillaBiometricsPipeline
,
)
from
bob.bio.face.utils
import
lookup_config_from_database
from
bob.bio.face.config.baseline.templates
import
arcface_baseline
memory_demanding
=
False
if
"database"
in
locals
():
annotation_type
=
database
.
annotation_type
fixed_positions
=
database
.
fixed_positions
memory_demanding
=
(
database
.
memory_demanding
if
hasattr
(
database
,
"memory_demanding"
)
else
False
)
else
:
annotation_type
=
None
fixed_positions
=
None
annotation_type
,
fixed_positions
,
memory_demanding
=
lookup_config_from_database
(
locals
().
get
(
"database"
)
)
def
load
(
annotation_type
,
fixed_positions
=
None
):
transformer
=
embedding_transformer_112x112
(
Resnet50_MsCeleb_ArcFace_2021
(
memory_demanding
=
memory_demanding
),
annotation_type
,
fixed_positions
,
return
arcface_baseline
(
embedding
=
Resnet50_MsCeleb_ArcFace_2021
(
memory_demanding
=
memory_demanding
),
annotation_type
=
annotation_type
,
fixed_positions
=
fixed_positions
,
)
algorithm
=
Distance
()
return
VanillaBiometricsPipeline
(
transformer
,
algorithm
)
pipeline
=
load
(
annotation_type
,
fixed_positions
)
transformer
=
pipeline
.
transformer
bob/bio/face/config/baseline/resnet50_vgg2_arcface_2021.py
View file @
bf618295
from
bob.bio.face.embeddings.resnet50
import
Resnet50_VGG2_ArcFace_2021
from
bob.bio.face.config.baseline.helpers
import
embedding_transformer_112x112