JANUS Database

This is the Bob database entry for the IJB-A database.

class bob.db.ijba.Database(original_directory=None, annotations_directory=None, original_extension=None)

Bases: bob.db.base.Database

The database class opens and maintains a connection opened to the Database.

It provides many different ways to probe for the characteristics of the data and for the data itself inside the database.

annotations(file)[source]

Returns the annotations for the given File object as a dictionary, see read_annotations() for details.

client_ids(groups=None, protocol='search_split1')[source]

Returns a list of client ids (aka. subject_id) for the specific query by the user.

Keyword Parameters:

groups

One or several groups to which the models belong (‘world’, ‘dev’, ‘eval’). If not specified, all groups are returned.

protocol

One of the available protocol names, see protocol_names().

Returns: A list containing all the client ids which have the desired properties.

clients(groups=None, protocol='search_split1')[source]

Same as client_id

Keyword Parameters:

groups

One or several groups to which the models belong (‘world’, ‘dev’, ‘eval’). If not specified, all groups are returned.

protocol

One of the available protocol names, see protocol_names().

Returns: A list containing all the client ids which have the desired properties.

get_client_id_from_model_id(model_id)[source]
groups()[source]

Returns a list of groups for the given protocol.

Keyword Parameters:

protocol

One of the available protocol names, see protocol_names().

Returns: a list of groups for the given protocol.

has_protocol(name)[source]

Tells if a certain protocol is available

model_ids(groups=None, protocol='search_split1', purposes='enroll', model_ids=None)[source]

Returns a list of model ids for the specific query by the user.

Keyword Parameters:

groups

Ignored; only model ids from the ‘dev’ group will be used.

protocol

One of the available protocol names, see protocol_names().

purposes

Returns: A list containing all the model ids for the given protocol.

object_sets(groups='dev', protocol='search_split1', purposes='probe', model_ids=None, media_ids=None, frames=None)[source]

Using the specified restrictions, this function returns a list of Template objects.

Keyword Parameters:

groupsstr or [str]

Only the ‘dev’ group is accepted.

protocolstr

One of the available protocol names, see protocol_names().

purposesstr or [str]

Only the ‘probe’ purpose is accepted.

model_idsint or [int] or None

ignored

media_idsint or [int] or None

If given, only the files with the given media ids are returned.

framesint or [int] or None

If given, only the video files with the given frame number are returned. Note that the images of the database will be ignored, when this option is selected.

objects(groups=None, protocol='search_split1', purposes=None, model_ids=None, media_ids=None, frames=None)[source]

Using the specified restrictions, this function returns a list of File objects.

Keyword Parameters:

groupsstr or [str] or None

One or several groups to which the models belong (‘world’, ‘dev’).

protocolstr

One of the available protocol names, see protocol_names().

purposesstr or [str] or None

One or several purposes for which files should be retrieved (‘enroll’, ‘probe’). Note: this field is ignored for group ‘world’.

model_idsint or [int] or None

If given (as a list of model id’s or a single one), only the files belonging to the specified model id is returned. For ‘probe’ purposes, this field is ignored since probe files are identical for all models. Remember that the database provides only identification protocols.

media_idsint or [int] or None

If given, only the files with the given media ids are returned.

framesint or [int] or None

If given, only the video files with the given frame number are returned. Note that the images of the database will be ignored, when this option is selected.

original_file_name(file, check_existence=True)[source]

Returns the original image file name with the correct file name extension. To be able to call this function, the original_directory must have been specified in the Database constructor.

Keyword parameters:

fileFile

The File object to get the original file name from.

check_existencebool

If set to True (the default), the existence of the original image file is checked, prior to returning the files name.

protocol_names()[source]

Returns all registered protocol names, which are usually ['NoTrain'] + ['split%d' for d in range(1,11)]

protocols()[source]

Returns all possible protocols.

provides_file_set_for_protocol(protocol=None)[source]

As this database provides the file set interface (i.e., each probe contains several files) for all protocols, this function returns True throughout.

Keyword Parameters:

protocol

Ignored.

template_ids(protocol='search_split1')[source]

Returns a list of valid template ids, where Template’s can be used both for model enrollment or probing.

This function returns a list of actual template_ids. The according templates might differ between the protocols.

class bob.db.ijba.File(client_id, path, file_id=None)

Bases: bob.db.base.File

IJBA File class

Diferent from its ascendent class, this one has the client ID as input

class bob.db.ijba.Template(template_id, subject_id, files)

Bases: object

A Template contains a list of File objects belonging to the same subject (there might be several templates per subject).

These are listed in the self.files field.

A Template can serve for training, model enrollment, or for probing.

Each template belongs specifically to a certain protocol, as the template_id in the original file lists might differ for different protocols.

The protocol purpose can be obtained using self.protocol_purpose after creation of the database.

Note that the template_id corresponds to the template_id of the file lists, while the id is only used as a unique key for querying the database.

For convenience, the template also contains a path, which is a concatenation of the File.media_id of the first file, and the self.template_id, making it unique (at least per protocol).

bob.db.ijba.get_templates(filename, verbose=True)

Given a IJBA file, get a dictionary with all their templates with their respective files in the following format:

templates[‘template_01’] = [file_01, file_02, file_03] templates[‘template_02’] = [file_01, file_02, file_03] . . .

bob.db.ijba.read_annotations(raw_annotations)

Parse the annotations

bob.db.ijba.get_config()[source]

Returns a string containing the configuration information.