Python API

The VERA Database for finger verification

class bob.db.verafinger.Database(original_directory=None, original_extension=None)[source]

Bases: bob.db.base.SQLiteDatabase

The dataset 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.

protocol_names()[source]

Returns a list of all supported protocols

purposes()[source]

Returns a list of all supported purposes

groups()[source]

Returns a list of all supported groups

genders()[source]

Returns a list of all supported gender values

sides()[source]

Returns a list of all supported side values

sizes()[source]

Returns a list of all supported size values

sources()[source]

Returns a list of all supported source values

sessions()[source]

Returns a list of all supported session values

finger_name_from_model_id(model_id)[source]

Returns the first unique finger name in the database given a model_id

model_ids(protocol=None, groups=None)[source]

Returns a set of models for a given protocol/group

Parameters
  • protocol (str, list, optional) – One or more of the supported protocols. If not set, returns data from all protocols

  • groups (str, list, optional) – One or more of the supported groups. If not set, returns data from all groups. Notice this parameter should either not set or set to dev. Otherwise, this method will return an empty list given we don’t have a test set, only a development set.

Returns

A list of string corresponding model identifiers with the specified filtering criteria

Return type

list

objects(protocol=None, groups=None, purposes=None, model_ids=None, genders=None, sides=None, sizes=None, sources=None, sessions=None)[source]

Returns objects filtered by criteria

Parameters
  • protocol (str, list, optional) – One or more of the supported protocols. If not set, returns data from all protocols

  • groups (str, list, optional) – One or more of the supported groups. If not set, returns data from all groups

  • purposes (str, list, optional) – One or more of the supported purposes. If not set, returns data for all purposes

  • model_ids (str, list, optional) – If set, limit output using the provided model identifiers

  • genders (str, list, optional) – If set, limit output using the provided gender identifiers

  • sides (str, list, optional) – If set, limit output using the provided side identifier

  • sizes (str, list, optional) – If set, limit output using the provided size identifier

  • sources (str, list, optional) – If set, limit output using the provided source identifier

  • sessions (str, list, optional) – If set, limit output using the provided session identifiers

Returns

A list of File objects corresponding to the filtering criteria.

Return type

list

class bob.db.verafinger.Client(id, gender, age)[source]

Bases: sqlalchemy.ext.declarative.api.Base

Unique clients in the database, referred by a single integer

gender_choices = ('M', 'F')
id
gender
age
gender_display()[source]

Returns a representation of the client gender

class bob.db.verafinger.Finger(client, side)[source]

Bases: sqlalchemy.ext.declarative.api.Base

Unique fingers in the database, referred by a string

Fingers have the format 003_L (i.e. <client>_<finger>)

id
client_id
side_choices = ('L', 'R')
client
side
property unique_name

Unique name for this finger in the database

side_display()[source]

Returns a representation of the finger side

class bob.db.verafinger.File(size, source, finger, session)[source]

Bases: sqlalchemy.ext.declarative.api.Base, bob.db.base.File

Unique files in the database, referred by a string

Files have the format full/bf/001-M/001_L_1 (i.e. <size>/<source>/<client>-<gender>/<client>_<side>_<session>)

id
size_choices = ('full', 'cropped')
source_choices = ('bf', 'pa')
finger_id
session_choices = ('1', '2')
size
source
finger
session
model_id
property path
load(directory=None, extension='.png')[source]

Loads the image for this file entry

Parameters
  • directory (str) – The path to the root of the dataset installation. This is, normally, the path leading to file named metadata.csv and directories full, cropped, annotations and protocols, but can be anything else. This behavior makes this function re-usable in the context of preprocessing and feature extraction, where intermediate files may be produced by your processing pipeline and can be reloaded using the same API.

  • extension (str) – The extension to use for loading the file in question. If not passed, the default .png is used.

Returns

A 2D array of unsigned integers corresponding to the input

image for this file in (y,x) notation (Bob-style).

Return type

numpy.ndarray

roi(directory)[source]

Loads region-of-interest annotations for a particular image

The returned points (see return value below) correspond to a polygon in the 2D space delimiting the finger image. It is up to you to generate a mask out of these annotations.

Parameters

directory (str) – The path to the root of the dataset installation. This is, forcebly, the path leading to file named metadata.csv and directories full, cropped, annotations and protocols.

Returns

A 2D array of 16-bit unsigned integers corresponding to

annotations for the given fingervein image. Points are loaded in (y,x) format so, the first column of the returned array correspond to the y-values while the second column to the x-values of each coordinate.

Return type

numpy.ndarray

class bob.db.verafinger.Protocol(name)[source]

Bases: sqlalchemy.ext.declarative.api.Base

VERA biometric recognition protocols

id
name
class bob.db.verafinger.Subset(protocol, group, purpose)[source]

Bases: sqlalchemy.ext.declarative.api.Base

VERA protocol subsets

id
protocol_id
group_choices = ('train', 'dev')
purpose_choices = ('train', 'enroll', 'probe', 'attack')
files
protocol
group
purpose
class bob.db.verafinger.PADDatabase(original_directory=None, original_extension=None)[source]

Bases: bob.db.base.SQLiteDatabase

The dataset 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.

protocol_names()[source]

Returns a list of all supported protocols

purposes()[source]

Returns a list of all supported purposes

groups()[source]

Returns a list of all supported groups

genders()[source]

Returns a list of all supported gender values

sides()[source]

Returns a list of all supported side values

sizes()[source]

Returns a list of all supported size values

sources()[source]

Returns a list of all supported source values

sessions()[source]

Returns a list of all supported session values

objects(protocol=None, groups=None, purposes=None, genders=None, sides=None, sizes=None, sources=None, sessions=None)[source]

Returns objects filtered by criteria

Parameters
  • protocol (str, list, optional) – One or more of the supported protocols. If not set, returns data from all protocols

  • groups (str, list, optional) – One or more of the supported groups. If not set, returns data from all groups

  • purposes (str, list, optional) – One or more of the supported purposes. If not set, returns data for all purposes

  • genders (str, list, optional) – If set, limit output using the provided gender identifiers

  • sides (str, list, optional) – If set, limit output using the provided side identifier

  • sizes (str, list, optional) – If set, limit output using the provided size identifier

  • sources (str, list, optional) – If set, limit output using the provided source identifier

  • sessions (str, list, optional) – If set, limit output using the provided session identifiers

Returns

A list of File objects corresponding to the filtering criteria.

Return type

list

class bob.db.verafinger.PADProtocol(name)[source]

Bases: sqlalchemy.ext.declarative.api.Base

VERA presentation attack detection protocols

id
name
class bob.db.verafinger.PADSubset(protocol, group, purpose)[source]

Bases: sqlalchemy.ext.declarative.api.Base

VERA protocol subsets for presentation attack detection

id
protocol_id
group_choices = ('train', 'dev', 'eval')
purpose_choices = ('real', 'attack')
files
protocol
group
purpose
bob.db.verafinger.get_config()[source]

Returns a string containing the configuration information.