From 7bd5b48cddd32a6d334459adff2f5387c66c2e90 Mon Sep 17 00:00:00 2001 From: David Geissbuhler <david.geissbuhler@idiap.ch> Date: Mon, 25 Sep 2017 12:04:39 +0200 Subject: [PATCH] Added MIFS database --- bob/pad/face/config/database/mifs.py | 33 +++++ bob/pad/face/config/mifs.py | 50 ++++++++ bob/pad/face/database/__init__.py | 2 + bob/pad/face/database/mifs.py | 113 ++++++++++++++++++ .../lists/mifs/grandtest/dev/for_attack.lst | 70 +++++++++++ .../lists/mifs/grandtest/dev/for_real.lst | 70 +++++++++++ .../lists/mifs/grandtest/eval/for_attack.lst | 68 +++++++++++ .../lists/mifs/grandtest/eval/for_real.lst | 68 +++++++++++ .../lists/mifs/grandtest/train/for_attack.lst | 70 +++++++++++ .../lists/mifs/grandtest/train/for_real.lst | 70 +++++++++++ bob/pad/face/test/test_databases.py | 2 - setup.py | 2 + 12 files changed, 616 insertions(+), 2 deletions(-) create mode 100644 bob/pad/face/config/database/mifs.py create mode 100644 bob/pad/face/config/mifs.py create mode 100644 bob/pad/face/database/mifs.py create mode 100644 bob/pad/face/lists/mifs/grandtest/dev/for_attack.lst create mode 100644 bob/pad/face/lists/mifs/grandtest/dev/for_real.lst create mode 100644 bob/pad/face/lists/mifs/grandtest/eval/for_attack.lst create mode 100644 bob/pad/face/lists/mifs/grandtest/eval/for_real.lst create mode 100644 bob/pad/face/lists/mifs/grandtest/train/for_attack.lst create mode 100644 bob/pad/face/lists/mifs/grandtest/train/for_real.lst diff --git a/bob/pad/face/config/database/mifs.py b/bob/pad/face/config/database/mifs.py new file mode 100644 index 00000000..b9e20ea9 --- /dev/null +++ b/bob/pad/face/config/database/mifs.py @@ -0,0 +1,33 @@ + + +from bob.pad.face.database.mifs import MIFSPadDatabase + + +# Directory where the data files are stored. +# This directory is given in the .bob_bio_databases.txt file located in your home directory +original_directory = "[MIFS_DATABASE_DIRECTORY]" +"""Value of ``~/.bob_bio_databases.txt`` for this database""" + +original_extension = ".jpg" # extension of the data files + + +database = MIFSPadDatabase( + protocol='grandtest', + original_directory=original_directory, + original_extension=original_extension, + training_depends_on_protocol=True, +) +"""The :py:class:`bob.pad.base.database.PadDatabase` derivative with Replay-Mobile +database settings. + +.. warning:: + + This class only provides a programmatic interface to load data in an orderly + manner, respecting usage protocols. It does **not** contain the raw + data files. You should procure those yourself. + +Notice that ``original_directory`` is set to ``[YOUR_REPLAY_MOBILE_DIRECTORY]``. +You must make sure to create ``${HOME}/.bob_bio_databases.txt`` setting this +value to the place where you actually installed the Replay-Mobile Database, as +explained in the section :ref:`bob.pad.face.baselines`. +""" diff --git a/bob/pad/face/config/mifs.py b/bob/pad/face/config/mifs.py new file mode 100644 index 00000000..d3e15df2 --- /dev/null +++ b/bob/pad/face/config/mifs.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +"""`MIFS`_ is a database for face PAD experiments using make-up. +""" + +from bob.pad.face.database import MIFSPadDatabase + +# Directory where the data files are stored. +# This directory is given in the .bob_bio_databases.txt file located in your home directory +ORIGINAL_DIRECTORY = "[MIFS_DATABASE_DIRECTORY]" +"""Value of ``~/.bob_bio_databases.txt`` for this database""" + +ORIGINAL_EXTENSION = "" # extension of the data files + +database = MIFSPadDatabase( + protocol='grandtest', + original_directory=ORIGINAL_DIRECTORY, + original_extension=ORIGINAL_EXTENSION, + training_depends_on_protocol=True, +) +"""The :py:class:`bob.pad.base.database.PadDatabase` derivative with Replayattack +database settings + +.. warning:: + + This class only provides a programmatic interface to load data in an orderly + manner, respecting usage protocols. It does **not** contain the raw + data files. You should procure those yourself. + +Notice that ``original_directory`` is set to ``[YOUR_REPLAY_ATTACK_DIRECTORY]``. +You must make sure to create ``${HOME}/.bob_bio_databases.txt`` setting this +value to the place where you actually installed the Replayattack Database, as +explained in the section :ref:`bob.pad.face.baselines`. +""" + +protocol = 'grandtest' +"""The default protocol to use for reproducing the baselines. + +You may modify this at runtime by specifying the option ``--protocol`` on the +command-line of ``spoof.py`` or using the keyword ``protocol`` on a +configuration file that is loaded **after** this configuration resource. +""" + +groups = ["train", "dev", "eval"] +"""The default groups to use for reproducing the baselines. + +You may modify this at runtime by specifying the option ``--groups`` on the +command-line of ``spoof.py`` or using the keyword ``groups`` on a +configuration file that is loaded **after** this configuration resource. +""" diff --git a/bob/pad/face/database/__init__.py b/bob/pad/face/database/__init__.py index bc586be2..5215323e 100644 --- a/bob/pad/face/database/__init__.py +++ b/bob/pad/face/database/__init__.py @@ -2,6 +2,7 @@ from .replay import ReplayPadDatabase from .replay_mobile import ReplayMobilePadDatabase from .msu_mfsd import MsuMfsdPadDatabase from .aggregated_db import AggregatedDbPadDatabase +from .mifs import MIFSPadDatabase # gets sphinx autodoc done right - don't remove it @@ -23,6 +24,7 @@ __appropriate__( ReplayMobilePadDatabase, MsuMfsdPadDatabase, AggregatedDbPadDatabase, + MIFSPadDatabase, ) __all__ = [_ for _ in dir() if not _.startswith('_')] diff --git a/bob/pad/face/database/mifs.py b/bob/pad/face/database/mifs.py new file mode 100644 index 00000000..b373bd7c --- /dev/null +++ b/bob/pad/face/database/mifs.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python2 +# -*- coding: utf-8 -*- + + +#============================================================================== + +import bob.bio.video # Used in MIFSPadFile class +import bob.io.base +import numpy as np + +from bob.pad.base.database import PadFile # Used in ReplayPadFile class + +from bob.pad.base.database import FileListPadDatabase + + +#============================================================================== + +class MIFSPadFile(PadFile): + """ + A high level implementation of the File class for the MIFS database. + """ + + def __init__(self, client_id, path, attack_type=None, file_id=None): + super(MIFSPadFile, self).__init__(client_id, path, attack_type, file_id) + + #========================================================================== + def load(self, directory=None, extension=None): + #path = self.make_path(directory, extension) + path = self.make_path(directory=directory, extension=extension) # path to the file + frame_selector = bob.bio.video.FrameSelector(selection_style = 'all') # this frame_selector will select all frames from the video file + + data = bob.io.base.load(path) + data = np.expand_dims(data, axis=0) # upgade to 4D (video) + video_data = frame_selector(data) # video data + + return video_data # video data + + +#============================================================================== +class MIFSPadDatabase(FileListPadDatabase): + """ + A high level implementation of the Database class for the MIFS database. + """ + + def __init__( + self, + protocol='grandtest', # grandtest is the default protocol for this database + original_directory='[MIFS_DATABASE_DIRECTORY]', + original_extension='.jpg', + **kwargs): + + #from bob.db.replay import Database as LowLevelDatabase + + #self.db = LowLevelDatabase() + + # Since the high level API expects different group names than what the low + # level API offers, you need to convert them when necessary + #self.low_level_group_names = ('train', 'devel', 'test') # group names in the low-level database interface + #self.high_level_group_names = ('train', 'dev', 'eval') # names are expected to be like that in objects() function + + # Always use super to call parent class methods. + #super(ReplayPadDatabase, self).__init__( + # name = 'replay', + # protocol = protocol, + # original_directory = original_directory, + # original_extension = original_extension, + # **kwargs) + + from pkg_resources import resource_filename + folder = resource_filename(__name__, '../lists/mifs') + super(MIFSPadDatabase, self).__init__(folder, 'mifs', + pad_file_class=MIFSPadFile, + protocol = protocol, + original_directory=original_directory, + original_extension=original_extension) + + #========================================================================== + def annotations(self, f): + """ + Return annotations for a given file object ``f``, which is an instance + of ``ReplayPadFile`` defined in the HLDI of the Replay-Attack DB. + The ``load()`` method of ``ReplayPadFile`` class (see above) + returns a video, therefore this method returns bounding-box annotations + for each video frame. The annotations are returned as dictionary of dictionaries. + + **Parameters:** + + ``f`` : :py:class:`object` + An instance of ``ReplayPadFile`` defined above. + + **Returns:** + + ``annotations`` : :py:class:`dict` + A dictionary containing the annotations for each frame in the video. + Dictionary structure: ``annotations = {'1': frame1_dict, '2': frame1_dict, ...}``. + Where ``frameN_dict = {'topleft': (row, col), 'bottomright': (row, col)}`` + is the dictionary defining the coordinates of the face bounding box in frame N. + """ + + path_to_file = self.original_directory + f.path + face_path = path_to_file[:-4] + '.face' + file_handle = open(face_path, 'r') + line = file_handle.readline() + bbox = [int(x) for x in line.split()] + + annotations = {} # dictionary to return + + topleft = (bbox[1], bbox[0]) + bottomright = (bbox[1] + bbox[3], bbox[0] + bbox[2]) + + annotations['0'] = {'topleft': topleft, 'bottomright': bottomright} + + return annotations diff --git a/bob/pad/face/lists/mifs/grandtest/dev/for_attack.lst b/bob/pad/face/lists/mifs/grandtest/dev/for_attack.lst new file mode 100644 index 00000000..9ff5603e --- /dev/null +++ b/bob/pad/face/lists/mifs/grandtest/dev/for_attack.lst @@ -0,0 +1,70 @@ +mifs_data/002_A_1.jpg 002_A_1 attack +mifs_data/002_A_2.jpg 002_A_2 attack +mifs_data/005_A_1.jpg 005_A_1 attack +mifs_data/005_A_2.jpg 005_A_2 attack +mifs_data/008_A_1.jpg 008_A_1 attack +mifs_data/008_A_2.jpg 008_A_2 attack +mifs_data/011_A_1.jpg 011_A_1 attack +mifs_data/011_A_2.jpg 011_A_2 attack +mifs_data/014_A_1.jpg 014_A_1 attack +mifs_data/014_A_2.jpg 014_A_2 attack +mifs_data/017_A_1.jpg 017_A_1 attack +mifs_data/017_A_2.jpg 017_A_2 attack +mifs_data/020_A_1.jpg 020_A_1 attack +mifs_data/020_A_2.jpg 020_A_2 attack +mifs_data/023_A_1.jpg 023_A_1 attack +mifs_data/023_A_2.jpg 023_A_2 attack +mifs_data/026_A_1.jpg 026_A_1 attack +mifs_data/026_A_2.jpg 026_A_2 attack +mifs_data/029_A_1.jpg 029_A_1 attack +mifs_data/029_A_2.jpg 029_A_2 attack +mifs_data/032_A_1.jpg 032_A_1 attack +mifs_data/032_A_2.jpg 032_A_2 attack +mifs_data/035_A_1.jpg 035_A_1 attack +mifs_data/035_A_2.jpg 035_A_2 attack +mifs_data/039_A_1.jpg 039_A_1 attack +mifs_data/039_A_2.jpg 039_A_2 attack +mifs_data/042_A_1.jpg 042_A_1 attack +mifs_data/042_A_2.jpg 042_A_2 attack +mifs_data/046_A_1.jpg 046_A_1 attack +mifs_data/046_A_2.jpg 046_A_2 attack +mifs_data/049_A_1.jpg 049_A_1 attack +mifs_data/049_A_2.jpg 049_A_2 attack +mifs_data/052_A_1.jpg 052_A_1 attack +mifs_data/052_A_2.jpg 052_A_2 attack +mifs_data/055_A_1.jpg 055_A_1 attack +mifs_data/055_A_2.jpg 055_A_2 attack +mifs_data/060_A_1.jpg 060_A_1 attack +mifs_data/060_A_2.jpg 060_A_2 attack +mifs_data/064_A_1.jpg 064_A_1 attack +mifs_data/064_A_2.jpg 064_A_2 attack +mifs_data/067_A_1.jpg 067_A_1 attack +mifs_data/067_A_2.jpg 067_A_2 attack +mifs_data/070_A_1.jpg 070_A_1 attack +mifs_data/070_A_2.jpg 070_A_2 attack +mifs_data/073_A_1.jpg 073_A_1 attack +mifs_data/073_A_2.jpg 073_A_2 attack +mifs_data/079_A_1.jpg 079_A_1 attack +mifs_data/079_A_2.jpg 079_A_2 attack +mifs_data/083_A_1.jpg 083_A_1 attack +mifs_data/083_A_2.jpg 083_A_2 attack +mifs_data/087_A_1.jpg 087_A_1 attack +mifs_data/087_A_2.jpg 087_A_2 attack +mifs_data/091_A_1.jpg 091_A_1 attack +mifs_data/091_A_2.jpg 091_A_2 attack +mifs_data/094_A_1.jpg 094_A_1 attack +mifs_data/094_A_2.jpg 094_A_2 attack +mifs_data/097_A_1.jpg 097_A_1 attack +mifs_data/097_A_2.jpg 097_A_2 attack +mifs_data/100_A_1.jpg 100_A_1 attack +mifs_data/100_A_2.jpg 100_A_2 attack +mifs_data/103_A_1.jpg 103_A_1 attack +mifs_data/103_A_2.jpg 103_A_2 attack +mifs_data/106_A_1.jpg 106_A_1 attack +mifs_data/106_A_2.jpg 106_A_2 attack +mifs_data/109_A_1.jpg 109_A_1 attack +mifs_data/109_A_2.jpg 109_A_2 attack +mifs_data/114_A_1.jpg 114_A_1 attack +mifs_data/114_A_2.jpg 114_A_2 attack +mifs_data/117_A_1.jpg 117_A_1 attack +mifs_data/117_A_2.jpg 117_A_2 attack diff --git a/bob/pad/face/lists/mifs/grandtest/dev/for_real.lst b/bob/pad/face/lists/mifs/grandtest/dev/for_real.lst new file mode 100644 index 00000000..bde63686 --- /dev/null +++ b/bob/pad/face/lists/mifs/grandtest/dev/for_real.lst @@ -0,0 +1,70 @@ +mifs_data/002_B_1.jpg 002_B_1 +mifs_data/002_B_2.jpg 002_B_2 +mifs_data/005_B_1.jpg 005_B_1 +mifs_data/005_B_2.jpg 005_B_2 +mifs_data/008_B_1.jpg 008_B_1 +mifs_data/008_B_2.jpg 008_B_2 +mifs_data/011_B_1.jpg 011_B_1 +mifs_data/011_B_2.jpg 011_B_2 +mifs_data/014_B_1.jpg 014_B_1 +mifs_data/014_B_2.jpg 014_B_2 +mifs_data/017_B_1.jpg 017_B_1 +mifs_data/017_B_2.jpg 017_B_2 +mifs_data/020_B_1.jpg 020_B_1 +mifs_data/020_B_2.jpg 020_B_2 +mifs_data/023_B_1.jpg 023_B_1 +mifs_data/023_B_2.jpg 023_B_2 +mifs_data/026_B_1.jpg 026_B_1 +mifs_data/026_B_2.jpg 026_B_2 +mifs_data/029_B_1.jpg 029_B_1 +mifs_data/029_B_2.jpg 029_B_2 +mifs_data/032_B_1.jpg 032_B_1 +mifs_data/032_B_2.jpg 032_B_2 +mifs_data/035_B_1.jpg 035_B_1 +mifs_data/035_B_2.jpg 035_B_2 +mifs_data/039_B_1.jpg 039_B_1 +mifs_data/039_B_2.jpg 039_B_2 +mifs_data/042_B_1.jpg 042_B_1 +mifs_data/042_B_2.jpg 042_B_2 +mifs_data/046_B_1.jpg 046_B_1 +mifs_data/046_B_2.jpg 046_B_2 +mifs_data/049_B_1.jpg 049_B_1 +mifs_data/049_B_2.jpg 049_B_2 +mifs_data/052_B_1.jpg 052_B_1 +mifs_data/052_B_2.jpg 052_B_2 +mifs_data/055_B_1.jpg 055_B_1 +mifs_data/055_B_2.jpg 055_B_2 +mifs_data/060_B_1.jpg 060_B_1 +mifs_data/060_B_2.jpg 060_B_2 +mifs_data/064_B_1.jpg 064_B_1 +mifs_data/064_B_2.jpg 064_B_2 +mifs_data/067_B_1.jpg 067_B_1 +mifs_data/067_B_2.jpg 067_B_2 +mifs_data/070_B_1.jpg 070_B_1 +mifs_data/070_B_2.jpg 070_B_2 +mifs_data/073_B_1.jpg 073_B_1 +mifs_data/073_B_2.jpg 073_B_2 +mifs_data/079_B_1.jpg 079_B_1 +mifs_data/079_B_2.jpg 079_B_2 +mifs_data/083_B_1.jpg 083_B_1 +mifs_data/083_B_2.jpg 083_B_2 +mifs_data/087_B_1.jpg 087_B_1 +mifs_data/087_B_2.jpg 087_B_2 +mifs_data/091_B_1.jpg 091_B_1 +mifs_data/091_B_2.jpg 091_B_2 +mifs_data/094_B_1.jpg 094_B_1 +mifs_data/094_B_2.jpg 094_B_2 +mifs_data/097_B_1.jpg 097_B_1 +mifs_data/097_B_2.jpg 097_B_2 +mifs_data/100_B_1.jpg 100_B_1 +mifs_data/100_B_2.jpg 100_B_2 +mifs_data/103_B_1.jpg 103_B_1 +mifs_data/103_B_2.jpg 103_B_2 +mifs_data/106_B_1.jpg 106_B_1 +mifs_data/106_B_2.jpg 106_B_2 +mifs_data/109_B_1.jpg 109_B_1 +mifs_data/109_B_2.jpg 109_B_2 +mifs_data/114_B_1.jpg 114_B_1 +mifs_data/114_B_2.jpg 114_B_2 +mifs_data/117_B_1.jpg 117_B_1 +mifs_data/117_B_2.jpg 117_B_2 diff --git a/bob/pad/face/lists/mifs/grandtest/eval/for_attack.lst b/bob/pad/face/lists/mifs/grandtest/eval/for_attack.lst new file mode 100644 index 00000000..080f1a24 --- /dev/null +++ b/bob/pad/face/lists/mifs/grandtest/eval/for_attack.lst @@ -0,0 +1,68 @@ +mifs_data/003_A_1.jpg 003_A_1 attack +mifs_data/003_A_2.jpg 003_A_2 attack +mifs_data/006_A_1.jpg 006_A_1 attack +mifs_data/006_A_2.jpg 006_A_2 attack +mifs_data/009_A_1.jpg 009_A_1 attack +mifs_data/009_A_2.jpg 009_A_2 attack +mifs_data/012_A_1.jpg 012_A_1 attack +mifs_data/012_A_2.jpg 012_A_2 attack +mifs_data/015_A_1.jpg 015_A_1 attack +mifs_data/015_A_2.jpg 015_A_2 attack +mifs_data/018_A_1.jpg 018_A_1 attack +mifs_data/018_A_2.jpg 018_A_2 attack +mifs_data/021_A_1.jpg 021_A_1 attack +mifs_data/021_A_2.jpg 021_A_2 attack +mifs_data/024_A_1.jpg 024_A_1 attack +mifs_data/024_A_2.jpg 024_A_2 attack +mifs_data/027_A_1.jpg 027_A_1 attack +mifs_data/027_A_2.jpg 027_A_2 attack +mifs_data/030_A_1.jpg 030_A_1 attack +mifs_data/030_A_2.jpg 030_A_2 attack +mifs_data/033_A_1.jpg 033_A_1 attack +mifs_data/033_A_2.jpg 033_A_2 attack +mifs_data/037_A_1.jpg 037_A_1 attack +mifs_data/037_A_2.jpg 037_A_2 attack +mifs_data/040_A_1.jpg 040_A_1 attack +mifs_data/040_A_2.jpg 040_A_2 attack +mifs_data/044_A_1.jpg 044_A_1 attack +mifs_data/044_A_2.jpg 044_A_2 attack +mifs_data/047_A_1.jpg 047_A_1 attack +mifs_data/047_A_2.jpg 047_A_2 attack +mifs_data/050_A_1.jpg 050_A_1 attack +mifs_data/050_A_2.jpg 050_A_2 attack +mifs_data/053_A_1.jpg 053_A_1 attack +mifs_data/053_A_2.jpg 053_A_2 attack +mifs_data/056_A_1.jpg 056_A_1 attack +mifs_data/056_A_2.jpg 056_A_2 attack +mifs_data/061_A_1.jpg 061_A_1 attack +mifs_data/061_A_2.jpg 061_A_2 attack +mifs_data/065_A_1.jpg 065_A_1 attack +mifs_data/065_A_2.jpg 065_A_2 attack +mifs_data/068_A_1.jpg 068_A_1 attack +mifs_data/068_A_2.jpg 068_A_2 attack +mifs_data/071_A_1.jpg 071_A_1 attack +mifs_data/071_A_2.jpg 071_A_2 attack +mifs_data/076_A_1.jpg 076_A_1 attack +mifs_data/076_A_2.jpg 076_A_2 attack +mifs_data/081_A_1.jpg 081_A_1 attack +mifs_data/081_A_2.jpg 081_A_2 attack +mifs_data/084_A_1.jpg 084_A_1 attack +mifs_data/084_A_2.jpg 084_A_2 attack +mifs_data/089_A_1.jpg 089_A_1 attack +mifs_data/089_A_2.jpg 089_A_2 attack +mifs_data/092_A_1.jpg 092_A_1 attack +mifs_data/092_A_2.jpg 092_A_2 attack +mifs_data/095_A_1.jpg 095_A_1 attack +mifs_data/095_A_2.jpg 095_A_2 attack +mifs_data/098_A_1.jpg 098_A_1 attack +mifs_data/098_A_2.jpg 098_A_2 attack +mifs_data/101_A_1.jpg 101_A_1 attack +mifs_data/101_A_2.jpg 101_A_2 attack +mifs_data/104_A_1.jpg 104_A_1 attack +mifs_data/104_A_2.jpg 104_A_2 attack +mifs_data/107_A_1.jpg 107_A_1 attack +mifs_data/107_A_2.jpg 107_A_2 attack +mifs_data/111_A_1.jpg 111_A_1 attack +mifs_data/111_A_2.jpg 111_A_2 attack +mifs_data/115_A_1.jpg 115_A_1 attack +mifs_data/115_A_2.jpg 115_A_2 attack diff --git a/bob/pad/face/lists/mifs/grandtest/eval/for_real.lst b/bob/pad/face/lists/mifs/grandtest/eval/for_real.lst new file mode 100644 index 00000000..c4538821 --- /dev/null +++ b/bob/pad/face/lists/mifs/grandtest/eval/for_real.lst @@ -0,0 +1,68 @@ +mifs_data/003_B_1.jpg 003_B_1 +mifs_data/003_B_2.jpg 003_B_2 +mifs_data/006_B_1.jpg 006_B_1 +mifs_data/006_B_2.jpg 006_B_2 +mifs_data/009_B_1.jpg 009_B_1 +mifs_data/009_B_2.jpg 009_B_2 +mifs_data/012_B_1.jpg 012_B_1 +mifs_data/012_B_2.jpg 012_B_2 +mifs_data/015_B_1.jpg 015_B_1 +mifs_data/015_B_2.jpg 015_B_2 +mifs_data/018_B_1.jpg 018_B_1 +mifs_data/018_B_2.jpg 018_B_2 +mifs_data/021_B_1.jpg 021_B_1 +mifs_data/021_B_2.jpg 021_B_2 +mifs_data/024_B_1.jpg 024_B_1 +mifs_data/024_B_2.jpg 024_B_2 +mifs_data/027_B_1.jpg 027_B_1 +mifs_data/027_B_2.jpg 027_B_2 +mifs_data/030_B_1.jpg 030_B_1 +mifs_data/030_B_2.jpg 030_B_2 +mifs_data/033_B_1.jpg 033_B_1 +mifs_data/033_B_2.jpg 033_B_2 +mifs_data/037_B_1.jpg 037_B_1 +mifs_data/037_B_2.jpg 037_B_2 +mifs_data/040_B_1.jpg 040_B_1 +mifs_data/040_B_2.jpg 040_B_2 +mifs_data/044_B_1.jpg 044_B_1 +mifs_data/044_B_2.jpg 044_B_2 +mifs_data/047_B_1.jpg 047_B_1 +mifs_data/047_B_2.jpg 047_B_2 +mifs_data/050_B_1.jpg 050_B_1 +mifs_data/050_B_2.jpg 050_B_2 +mifs_data/053_B_1.jpg 053_B_1 +mifs_data/053_B_2.jpg 053_B_2 +mifs_data/056_B_1.jpg 056_B_1 +mifs_data/056_B_2.jpg 056_B_2 +mifs_data/061_B_1.jpg 061_B_1 +mifs_data/061_B_2.jpg 061_B_2 +mifs_data/065_B_1.jpg 065_B_1 +mifs_data/065_B_2.jpg 065_B_2 +mifs_data/068_B_1.jpg 068_B_1 +mifs_data/068_B_2.jpg 068_B_2 +mifs_data/071_B_1.jpg 071_B_1 +mifs_data/071_B_2.jpg 071_B_2 +mifs_data/076_B_1.jpg 076_B_1 +mifs_data/076_B_2.jpg 076_B_2 +mifs_data/081_B_1.jpg 081_B_1 +mifs_data/081_B_2.jpg 081_B_2 +mifs_data/084_B_1.jpg 084_B_1 +mifs_data/084_B_2.jpg 084_B_2 +mifs_data/089_B_1.jpg 089_B_1 +mifs_data/089_B_2.jpg 089_B_2 +mifs_data/092_B_1.jpg 092_B_1 +mifs_data/092_B_2.jpg 092_B_2 +mifs_data/095_B_1.jpg 095_B_1 +mifs_data/095_B_2.jpg 095_B_2 +mifs_data/098_B_1.jpg 098_B_1 +mifs_data/098_B_2.jpg 098_B_2 +mifs_data/101_B_1.jpg 101_B_1 +mifs_data/101_B_2.jpg 101_B_2 +mifs_data/104_B_1.jpg 104_B_1 +mifs_data/104_B_2.jpg 104_B_2 +mifs_data/107_B_1.jpg 107_B_1 +mifs_data/107_B_2.jpg 107_B_2 +mifs_data/111_B_1.jpg 111_B_1 +mifs_data/111_B_2.jpg 111_B_2 +mifs_data/115_B_1.jpg 115_B_1 +mifs_data/115_B_2.jpg 115_B_2 diff --git a/bob/pad/face/lists/mifs/grandtest/train/for_attack.lst b/bob/pad/face/lists/mifs/grandtest/train/for_attack.lst new file mode 100644 index 00000000..a0f2db71 --- /dev/null +++ b/bob/pad/face/lists/mifs/grandtest/train/for_attack.lst @@ -0,0 +1,70 @@ +mifs_data/001_A_1.jpg 001_A_1 attack +mifs_data/001_A_2.jpg 001_A_2 attack +mifs_data/004_A_1.jpg 004_A_1 attack +mifs_data/004_A_2.jpg 004_A_2 attack +mifs_data/007_A_1.jpg 007_A_1 attack +mifs_data/007_A_2.jpg 007_A_2 attack +mifs_data/010_A_1.jpg 010_A_1 attack +mifs_data/010_A_2.jpg 010_A_2 attack +mifs_data/013_A_1.jpg 013_A_1 attack +mifs_data/013_A_2.jpg 013_A_2 attack +mifs_data/016_A_1.jpg 016_A_1 attack +mifs_data/016_A_2.jpg 016_A_2 attack +mifs_data/019_A_1.jpg 019_A_1 attack +mifs_data/019_A_2.jpg 019_A_2 attack +mifs_data/022_A_1.jpg 022_A_1 attack +mifs_data/022_A_2.jpg 022_A_2 attack +mifs_data/025_A_1.jpg 025_A_1 attack +mifs_data/025_A_2.jpg 025_A_2 attack +mifs_data/028_A_1.jpg 028_A_1 attack +mifs_data/028_A_2.jpg 028_A_2 attack +mifs_data/031_A_1.jpg 031_A_1 attack +mifs_data/031_A_2.jpg 031_A_2 attack +mifs_data/034_A_1.jpg 034_A_1 attack +mifs_data/034_A_2.jpg 034_A_2 attack +mifs_data/038_A_1.jpg 038_A_1 attack +mifs_data/038_A_2.jpg 038_A_2 attack +mifs_data/041_A_1.jpg 041_A_1 attack +mifs_data/041_A_2.jpg 041_A_2 attack +mifs_data/045_A_1.jpg 045_A_1 attack +mifs_data/045_A_2.jpg 045_A_2 attack +mifs_data/048_A_1.jpg 048_A_1 attack +mifs_data/048_A_2.jpg 048_A_2 attack +mifs_data/051_A_1.jpg 051_A_1 attack +mifs_data/051_A_2.jpg 051_A_2 attack +mifs_data/054_A_1.jpg 054_A_1 attack +mifs_data/054_A_2.jpg 054_A_2 attack +mifs_data/059_A_1.jpg 059_A_1 attack +mifs_data/059_A_2.jpg 059_A_2 attack +mifs_data/063_A_1.jpg 063_A_1 attack +mifs_data/063_A_2.jpg 063_A_2 attack +mifs_data/066_A_1.jpg 066_A_1 attack +mifs_data/066_A_2.jpg 066_A_2 attack +mifs_data/069_A_1.jpg 069_A_1 attack +mifs_data/069_A_2.jpg 069_A_2 attack +mifs_data/072_A_1.jpg 072_A_1 attack +mifs_data/072_A_2.jpg 072_A_2 attack +mifs_data/078_A_1.jpg 078_A_1 attack +mifs_data/078_A_2.jpg 078_A_2 attack +mifs_data/082_A_1.jpg 082_A_1 attack +mifs_data/082_A_2.jpg 082_A_2 attack +mifs_data/085_A_1.jpg 085_A_1 attack +mifs_data/085_A_2.jpg 085_A_2 attack +mifs_data/090_A_1.jpg 090_A_1 attack +mifs_data/090_A_2.jpg 090_A_2 attack +mifs_data/093_A_1.jpg 093_A_1 attack +mifs_data/093_A_2.jpg 093_A_2 attack +mifs_data/096_A_1.jpg 096_A_1 attack +mifs_data/096_A_2.jpg 096_A_2 attack +mifs_data/099_A_1.jpg 099_A_1 attack +mifs_data/099_A_2.jpg 099_A_2 attack +mifs_data/102_A_1.jpg 102_A_1 attack +mifs_data/102_A_2.jpg 102_A_2 attack +mifs_data/105_A_1.jpg 105_A_1 attack +mifs_data/105_A_2.jpg 105_A_2 attack +mifs_data/108_A_1.jpg 108_A_1 attack +mifs_data/108_A_2.jpg 108_A_2 attack +mifs_data/113_A_1.jpg 113_A_1 attack +mifs_data/113_A_2.jpg 113_A_2 attack +mifs_data/116_A_1.jpg 116_A_1 attack +mifs_data/116_A_2.jpg 116_A_2 attack diff --git a/bob/pad/face/lists/mifs/grandtest/train/for_real.lst b/bob/pad/face/lists/mifs/grandtest/train/for_real.lst new file mode 100644 index 00000000..b191a3f4 --- /dev/null +++ b/bob/pad/face/lists/mifs/grandtest/train/for_real.lst @@ -0,0 +1,70 @@ +mifs_data/001_B_1.jpg 001_B_1 +mifs_data/001_B_2.jpg 001_B_2 +mifs_data/004_B_1.jpg 004_B_1 +mifs_data/004_B_2.jpg 004_B_2 +mifs_data/007_B_1.jpg 007_B_1 +mifs_data/007_B_2.jpg 007_B_2 +mifs_data/010_B_1.jpg 010_B_1 +mifs_data/010_B_2.jpg 010_B_2 +mifs_data/013_B_1.jpg 013_B_1 +mifs_data/013_B_2.jpg 013_B_2 +mifs_data/016_B_1.jpg 016_B_1 +mifs_data/016_B_2.jpg 016_B_2 +mifs_data/019_B_1.jpg 019_B_1 +mifs_data/019_B_2.jpg 019_B_2 +mifs_data/022_B_1.jpg 022_B_1 +mifs_data/022_B_2.jpg 022_B_2 +mifs_data/025_B_1.jpg 025_B_1 +mifs_data/025_B_2.jpg 025_B_2 +mifs_data/028_B_1.jpg 028_B_1 +mifs_data/028_B_2.jpg 028_B_2 +mifs_data/031_B_1.jpg 031_B_1 +mifs_data/031_B_2.jpg 031_B_2 +mifs_data/034_B_1.jpg 034_B_1 +mifs_data/034_B_2.jpg 034_B_2 +mifs_data/038_B_1.jpg 038_B_1 +mifs_data/038_B_2.jpg 038_B_2 +mifs_data/041_B_1.jpg 041_B_1 +mifs_data/041_B_2.jpg 041_B_2 +mifs_data/045_B_1.jpg 045_B_1 +mifs_data/045_B_2.jpg 045_B_2 +mifs_data/048_B_1.jpg 048_B_1 +mifs_data/048_B_2.jpg 048_B_2 +mifs_data/051_B_1.jpg 051_B_1 +mifs_data/051_B_2.jpg 051_B_2 +mifs_data/054_B_1.jpg 054_B_1 +mifs_data/054_B_2.jpg 054_B_2 +mifs_data/059_B_1.jpg 059_B_1 +mifs_data/059_B_2.jpg 059_B_2 +mifs_data/063_B_1.jpg 063_B_1 +mifs_data/063_B_2.jpg 063_B_2 +mifs_data/066_B_1.jpg 066_B_1 +mifs_data/066_B_2.jpg 066_B_2 +mifs_data/069_B_1.jpg 069_B_1 +mifs_data/069_B_2.jpg 069_B_2 +mifs_data/072_B_1.jpg 072_B_1 +mifs_data/072_B_2.jpg 072_B_2 +mifs_data/078_B_1.jpg 078_B_1 +mifs_data/078_B_2.jpg 078_B_2 +mifs_data/082_B_1.jpg 082_B_1 +mifs_data/082_B_2.jpg 082_B_2 +mifs_data/085_B_1.jpg 085_B_1 +mifs_data/085_B_2.jpg 085_B_2 +mifs_data/090_B_1.jpg 090_B_1 +mifs_data/090_B_2.jpg 090_B_2 +mifs_data/093_B_1.jpg 093_B_1 +mifs_data/093_B_2.jpg 093_B_2 +mifs_data/096_B_1.jpg 096_B_1 +mifs_data/096_B_2.jpg 096_B_2 +mifs_data/099_B_1.jpg 099_B_1 +mifs_data/099_B_2.jpg 099_B_2 +mifs_data/102_B_1.jpg 102_B_1 +mifs_data/102_B_2.jpg 102_B_2 +mifs_data/105_B_1.jpg 105_B_1 +mifs_data/105_B_2.jpg 105_B_2 +mifs_data/108_B_1.jpg 108_B_1 +mifs_data/108_B_2.jpg 108_B_2 +mifs_data/113_B_1.jpg 113_B_1 +mifs_data/113_B_2.jpg 113_B_2 +mifs_data/116_B_1.jpg 116_B_1 +mifs_data/116_B_2.jpg 116_B_2 diff --git a/bob/pad/face/test/test_databases.py b/bob/pad/face/test/test_databases.py index 6c628bd2..bb74a9ca 100644 --- a/bob/pad/face/test/test_databases.py +++ b/bob/pad/face/test/test_databases.py @@ -56,5 +56,3 @@ def test_msu_mfsd(): 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) - - diff --git a/setup.py b/setup.py index efe8b2ab..b58a6cda 100644 --- a/setup.py +++ b/setup.py @@ -67,6 +67,7 @@ setup( 'replay-mobile = bob.pad.face.config.database.replay_mobile:database', 'msu-mfsd = bob.pad.face.config.database.msu_mfsd:database', 'aggregated-db = bob.pad.face.config.database.aggregated_db:database', + 'mifs = bob.pad.face.config.database.mifs:database', ], # registered configurations: @@ -76,6 +77,7 @@ setup( 'replay-mobile = bob.pad.face.config.replay_mobile', 'msu-mfsd = bob.pad.face.config.msu_mfsd', 'aggregated-db = bob.pad.face.config.aggregated_db', + 'mifs = bob.pad.face.config.mifs', # baselines: 'lbp-svm = bob.pad.face.config.lbp_svm', -- GitLab