Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
bob.pad.face
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
bob
bob.pad.face
Merge requests
!115
Port databases to the new csv format
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Port databases to the new csv format
new-db
into
master
Overview
0
Commits
4
Pipelines
4
Changes
27
Merged
Amir MOHAMMADI
requested to merge
new-db
into
master
4 years ago
Overview
0
Commits
4
Pipelines
4
Changes
1
Expand
Depends on
bob.pipelines!62 (merged)
and
bob.pad.base!82 (merged)
Edited
3 years ago
by
Amir MOHAMMADI
0
0
Merge request reports
Compare
version 3
version 3
7b83407b
3 years ago
version 2
f83ac86a
4 years ago
version 1
9a3f8488
4 years ago
master (base)
and
latest version
latest version
3664d386
4 commits,
3 years ago
version 3
7b83407b
3 commits,
3 years ago
version 2
f83ac86a
2 commits,
4 years ago
version 1
9a3f8488
1 commit,
4 years ago
Show latest version
1 file
+
2
−
2
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
bob/pad/face/test/test_databases.py
+
157
−
166
Options
@@ -5,184 +5,175 @@
from
nose.plugins.skip
import
SkipTest
import
bob.bio.base
from
bob.bio.base.test.utils
import
db_available
@db_available
(
'
replay
'
)
# the name of the package
def
test_replay
():
# replay-attack is the name of the entry point
replay_database_instance
=
bob
.
bio
.
base
.
load_resource
(
'
replay-attack
'
,
'
database
'
,
preferred_package
=
'
bob.pad.face
'
,
package_prefix
=
'
bob.pad.
'
).
database
def
test_replayattack
():
database
=
bob
.
bio
.
base
.
load_resource
(
"
replay-attack
"
,
"
database
"
,
preferred_package
=
"
bob.pad.face
"
,
package_prefix
=
"
bob.pad.
"
,
)
assert
database
.
protocols
()
==
[
'
digitalphoto
'
,
'
grandtest
'
,
'
highdef
'
,
'
mobile
'
,
'
photo
'
,
'
print
'
,
'
smalltest
'
,
'
video
'
]
assert
database
.
groups
()
==
[
"
dev
"
,
"
eval
"
,
"
train
"
]
assert
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
]))
==
1200
assert
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
]))
==
720
assert
len
(
database
.
samples
(
groups
=
[
"
train
"
]))
==
360
assert
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
]))
==
1200
assert
(
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
],
purposes
=
"
real
"
))
==
200
)
assert
(
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
],
purposes
=
"
attack
"
))
==
1000
)
sample
=
database
.
sort
(
database
.
samples
())[
0
]
try
:
assert
sample
.
annotations
[
"
0
"
]
==
{
"
bottomright
"
:
[
213
,
219
],
"
topleft
"
:
[
58
,
108
],
"
leye
"
:
[
118
,
190
],
"
reye
"
:
[
117
,
137
],
"
mouthleft
"
:
[
177
,
144
],
"
mouthright
"
:
[
180
,
183
],
"
nose
"
:
[
152
,
164
],
}
assert
sample
.
data
.
shape
==
(
20
,
3
,
240
,
320
)
assert
sample
.
data
[
0
][
0
,
0
,
0
]
==
8
except
RuntimeError
as
e
:
raise
SkipTest
(
e
)
assert
len
(
replay_database_instance
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
]))
==
1200
assert
len
(
replay_database_instance
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
]))
==
720
assert
len
(
replay_database_instance
.
objects
(
groups
=
[
'
train
'
]))
==
360
assert
len
(
replay_database_instance
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
],
protocol
=
'
grandtest
'
))
==
1200
assert
len
(
replay_database_instance
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
],
protocol
=
'
grandtest
'
,
purposes
=
'
real
'
))
==
200
assert
len
(
replay_database_instance
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
],
protocol
=
'
grandtest
'
,
purposes
=
'
attack
'
))
==
1000
except
IOError
as
e
:
raise
SkipTest
(
"
The database could not be queried; probably the db.sql3 file is missing. Here is the error:
'
%s
'"
%
e
)
@db_available
(
'
replaymobile
'
)
def
test_replaymobile
():
replaymobile
=
bob
.
bio
.
base
.
load_resource
(
'
replay-mobile
'
,
'
database
'
,
preferred_package
=
'
bob.pad.face
'
,
package_prefix
=
'
bob.pad.
'
).
database
database
=
bob
.
bio
.
base
.
load_resource
(
"
replay-mobile
"
,
"
database
"
,
preferred_package
=
"
bob.pad.face
"
,
package_prefix
=
"
bob.pad.
"
,
)
assert
database
.
protocols
()
==
[
"
grandtest
"
,
"
mattescreen
"
,
"
print
"
]
assert
database
.
groups
()
==
[
"
dev
"
,
"
eval
"
,
"
train
"
]
assert
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
]))
==
1030
assert
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
]))
==
728
assert
len
(
database
.
samples
(
groups
=
[
"
train
"
]))
==
312
assert
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
]))
==
1030
assert
(
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
],
purposes
=
"
real
"
))
==
390
)
assert
(
len
(
database
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
],
purposes
=
"
attack
"
))
==
640
)
sample
=
database
.
sort
(
database
.
samples
())[
0
]
try
:
assert
len
(
replaymobile
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
]))
==
1030
assert
len
(
replaymobile
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
]))
==
728
assert
len
(
replaymobile
.
objects
(
groups
=
[
'
train
'
]))
==
312
assert
len
(
replaymobile
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
],
protocol
=
'
grandtest
'
))
==
1030
assert
len
(
replaymobile
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
],
protocol
=
'
grandtest
'
,
purposes
=
'
real
'
))
==
390
assert
len
(
replaymobile
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
],
protocol
=
'
grandtest
'
,
purposes
=
'
attack
'
))
==
640
except
IOError
as
e
:
raise
SkipTest
(
"
The database could not be queried; probably the db.sql3 file is missing. Here is the error:
'
%s
'"
%
e
)
assert
sample
.
annotations
[
"
0
"
]
==
{
"
bottomright
"
:
[
760
,
498
],
"
topleft
"
:
[
374
,
209
],
"
leye
"
:
[
518
,
417
],
"
reye
"
:
[
522
,
291
],
"
mouthleft
"
:
[
669
,
308
],
"
mouthright
"
:
[
666
,
407
],
"
nose
"
:
[
585
,
358
],
}
assert
sample
.
data
.
shape
==
(
20
,
3
,
720
,
1280
)
assert
sample
.
data
[
0
][
0
,
0
,
0
]
==
13
except
RuntimeError
as
e
:
raise
SkipTest
(
e
)
# Test the maskattack database
@db_available
(
'
maskattack
'
)
def
test_maskattack
():
maskattack
=
bob
.
bio
.
base
.
load_resource
(
'
maskattack
'
,
'
database
'
,
preferred_package
=
'
bob.pad.face
'
,
package_prefix
=
'
bob.pad.
'
).
database
try
:
# all real sequences: 2 sessions, 5 recordings for 17 individuals
assert
len
(
maskattack
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
],
purposes
=
'
real
'
))
==
170
# all attacks: 1 session, 5 recordings for 17 individuals
assert
len
(
maskattack
.
objects
(
groups
=
[
'
train
'
,
'
dev
'
,
'
eval
'
],
purposes
=
'
attack
'
))
==
85
# training real: 7 subjects, 2 sessions, 5 recordings
assert
len
(
maskattack
.
objects
(
groups
=
[
'
train
'
],
purposes
=
'
real
'
))
==
70
# training real: 7 subjects, 1 session, 5 recordings
assert
len
(
maskattack
.
objects
(
groups
=
[
'
train
'
],
purposes
=
'
attack
'
))
==
35
# dev and test contains the same number of sequences:
# real: 5 subjects, 2 sessions, 5 recordings
# attack: 5 subjects, 1 sessions, 5 recordings
assert
len
(
maskattack
.
objects
(
groups
=
[
'
dev
'
],
purposes
=
'
real
'
))
==
50
assert
len
(
maskattack
.
objects
(
groups
=
[
'
eval
'
],
purposes
=
'
real
'
))
==
50
assert
len
(
maskattack
.
objects
(
groups
=
[
'
dev
'
],
purposes
=
'
attack
'
))
==
25
assert
len
(
maskattack
.
objects
(
groups
=
[
'
eval
'
],
purposes
=
'
attack
'
))
==
25
except
IOError
as
e
:
raise
SkipTest
(
"
The database could not be queried; probably the db.sql3 file is missing. Here is the error:
'
%s
'"
%
e
)
"
maskattack
"
,
"
database
"
,
preferred_package
=
"
bob.pad.face
"
,
package_prefix
=
"
bob.pad.
"
,
)
# all real sequences: 2 sessions, 5 recordings for 17 individuals
assert
(
len
(
maskattack
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
],
purposes
=
"
real
"
))
==
170
)
# all attacks: 1 session, 5 recordings for 17 individuals
assert
(
len
(
maskattack
.
samples
(
groups
=
[
"
train
"
,
"
dev
"
,
"
eval
"
],
purposes
=
"
attack
"
))
==
85
)
# training real: 7 subjects, 2 sessions, 5 recordings
assert
len
(
maskattack
.
samples
(
groups
=
[
"
train
"
],
purposes
=
"
real
"
))
==
70
# training real: 7 subjects, 1 session, 5 recordings
assert
len
(
maskattack
.
samples
(
groups
=
[
"
train
"
],
purposes
=
"
attack
"
))
==
35
# dev and test contains the same number of sequences:
# real: 5 subjects, 2 sessions, 5 recordings
# attack: 5 subjects, 1 sessions, 5 recordings
assert
len
(
maskattack
.
samples
(
groups
=
[
"
dev
"
],
purposes
=
"
real
"
))
==
50
assert
len
(
maskattack
.
samples
(
groups
=
[
"
eval
"
],
purposes
=
"
real
"
))
==
50
assert
len
(
maskattack
.
samples
(
groups
=
[
"
dev
"
],
purposes
=
"
attack
"
))
==
25
assert
len
(
maskattack
.
samples
(
groups
=
[
"
eval
"
],
purposes
=
"
attack
"
))
==
25
# Test the casiasurf database
@db_available
(
'
casiasurf
'
)
def
test_casiasurf
():
# def test_casiasurf():
# casiasurf = bob.bio.base.load_resource(
# "casiasurf",
# "database",
# preferred_package="bob.pad.face",
# package_prefix="bob.pad.",
# )
# assert len(casiasurf.samples(groups=["train"], purposes="real")) == 8942
# assert len(casiasurf.samples(groups=["train"], purposes="attack")) == 20324
# assert len(casiasurf.samples(groups=("dev",), purposes=("real",))) == 2994
# assert len(casiasurf.samples(groups=("dev",), purposes=("attack",))) == 6614
# assert (
# len(casiasurf.samples(groups=("dev",), purposes=("real", "attack"))) == 9608
# )
# assert len(casiasurf.samples(groups=("eval",), purposes=("real",))) == 17458
# assert len(casiasurf.samples(groups=("eval",), purposes=("attack",))) == 40252
# assert (
# len(casiasurf.samples(groups=("eval",), purposes=("real", "attack")))
# == 57710
# )
def
test_casiasurf_color_protocol
():
casiasurf
=
bob
.
bio
.
base
.
load_resource
(
'
casiasurf
'
,
'
database
'
,
preferred_package
=
'
bob.pad.face
'
,
package_prefix
=
'
bob.pad.
'
).
database
try
:
assert
len
(
casiasurf
.
object
s
(
groups
=
[
'
train
'
],
purposes
=
'
real
'
))
==
8942
assert
len
(
casiasurf
.
object
s
(
groups
=
[
'
train
'
],
purposes
=
'
attack
'
))
==
20324
assert
len
(
casiasurf
.
object
s
(
groups
=
(
'
dev
'
,),
purposes
=
(
'
real
'
,)))
==
2994
assert
len
(
casiasurf
.
object
s
(
groups
=
(
'
dev
'
,),
purposes
=
(
'
attack
'
,)))
==
6614
assert
len
(
casiasurf
.
objects
(
groups
=
(
'
dev
'
,),
purposes
=
(
'
real
'
,
'
attack
'
)))
==
9608
assert
len
(
casiasurf
.
object
s
(
groups
=
(
'
eval
'
,),
purposes
=
(
'
real
'
,
)))
==
1745
8
assert
len
(
casiasurf
.
objects
(
groups
=
(
'
eval
'
,),
purposes
=
(
'
attack
'
,)))
==
40252
assert
len
(
casiasurf
.
object
s
(
groups
=
(
'
eval
'
,),
purposes
=
(
'
real
'
,
'
attack
'
)))
==
57710
except
IOError
as
e
:
raise
SkipTest
(
"
The database could not be queried; probably the db.sql3 file is missing. Here is the error:
'
%s
'"
%
e
)
@db_available
(
'
casia_fasd
'
)
"
casiasurf
-color
"
,
"
database
"
,
preferred_package
=
"
bob.pad.face
"
,
package_prefix
=
"
bob.pad.
"
,
)
assert
len
(
casiasurf
.
sample
s
(
groups
=
[
"
train
"
],
purposes
=
"
real
"
))
==
8942
assert
len
(
casiasurf
.
sample
s
(
groups
=
[
"
train
"
],
purposes
=
"
attack
"
))
==
20324
assert
len
(
casiasurf
.
sample
s
(
groups
=
(
"
dev
"
,),
purposes
=
(
"
real
"
,)))
==
2994
assert
len
(
casiasurf
.
sample
s
(
groups
=
(
"
dev
"
,),
purposes
=
(
"
attack
"
,)))
==
6614
assert
(
len
(
casiasurf
.
sample
s
(
groups
=
(
"
dev
"
,),
purposes
=
(
"
real
"
,
"
attack
"
)))
==
960
8
)
assert
len
(
casiasurf
.
sample
s
(
groups
=
(
"
eval
"
,),
purposes
=
(
"
real
"
,
)))
==
17458
assert
len
(
casiasurf
.
samples
(
groups
=
(
"
eval
"
,),
purposes
=
(
"
attack
"
,)))
==
40252
assert
(
len
(
casiasurf
.
samples
(
groups
=
(
"
eval
"
,),
purposes
=
(
"
real
"
,
"
attack
"
)))
==
57710
)
def
test_casia_fasd
():
casia_fasd
=
bob
.
bio
.
base
.
load_resource
(
'
casiafasd
'
,
'
database
'
,
preferred_package
=
'
bob.pad.face
'
,
package_prefix
=
'
bob.pad.
'
).
database
assert
len
(
casia_fasd
.
objects
())
==
600
assert
len
(
casia_fasd
.
objects
(
purposes
=
'
real
'
))
==
150
assert
len
(
casia_fasd
.
objects
(
purposes
=
'
attack
'
))
==
450
assert
len
(
casia_fasd
.
objects
(
groups
=
(
'
train
'
,
'
dev
'
)))
==
240
assert
len
(
casia_fasd
.
objects
(
groups
=
'
train
'
))
==
180
assert
len
(
casia_fasd
.
objects
(
groups
=
'
dev
'
))
==
60
assert
len
(
casia_fasd
.
objects
(
groups
=
'
eval
'
))
==
360
# test annotations since they are shipped with bob.db.casia_fasd
f
=
[
f
for
f
in
casia_fasd
.
objects
()
if
f
.
path
==
'
train_release/1/2
'
][
0
]
assert
len
(
f
.
annotations
)
==
132
a
=
f
.
annotations
[
'
0
'
]
oracle
=
{
'
topleft
'
:
(
102
,
214
),
'
bottomright
'
:
(
242
,
354
),
'
reye
'
:
(
151.0
,
249.0
),
'
leye
'
:
(
151.0
,
319.0
)}
assert
a
==
oracle
,
a
@db_available
(
'
casia_fasd
'
)
def
test_casia_fasd_frames
():
casia_fasd
=
bob
.
bio
.
base
.
load_resource
(
'
casiafasd
'
,
'
database
'
,
preferred_package
=
'
bob.pad.face
'
,
package_prefix
=
'
bob.pad.
'
).
database
# test frame loading if the db original files are available
try
:
files
=
casia_fasd
.
objects
()[:
12
]
for
f
in
files
:
for
frame
in
f
.
frames
:
assert
frame
.
shape
==
(
3
,
1280
,
720
)
break
except
(
IOError
,
RuntimeError
)
as
e
:
raise
SkipTest
(
"
The database original files are missing. To run this test run
"
"
``bob config set bob.db.casia_fasd.directory
"
"
/path/to/casia_fasd_files`` in a terminal to point to the
"
"
original files on your computer. . Here is the error:
'
%s
'"
%
e
)
"
casiafasd
"
,
"
database
"
,
preferred_package
=
"
bob.pad.face
"
,
package_prefix
=
"
bob.pad.
"
,
)
assert
len
(
casia_fasd
.
samples
())
==
600
assert
len
(
casia_fasd
.
samples
(
purposes
=
"
real
"
))
==
150
assert
len
(
casia_fasd
.
samples
(
purposes
=
"
attack
"
))
==
450
assert
len
(
casia_fasd
.
samples
(
groups
=
(
"
train
"
,
"
dev
"
)))
==
240
assert
len
(
casia_fasd
.
samples
(
groups
=
"
train
"
))
==
180
assert
len
(
casia_fasd
.
samples
(
groups
=
"
dev
"
))
==
60
assert
len
(
casia_fasd
.
samples
(
groups
=
"
eval
"
))
==
360
Loading