Biometric Evaluation Framework is a set of C++ classes, error codes, and design patterns used to create a common environment to provide logging, data management, error handling, and other functionality that is needed for many applications used in the testing of biometric software.
The goals of Biometric Evaluation Framework include:
- reduce the amount of I/O error handling implemented by applications;
- provide standard interfaces for data management and logging;
- remove the need for applications to handle low-level events from the operating system;
- provide time tracking and constraints for blocks of code;
- reduce potential for memory errors and corruption;
- simplify the use of parallel processing.
If all requirements have been met, building is as simple as:
make -C common/
The makefile understands several variables:
CC
: C compiler;CXX
: C++ compiler;MPICXX
: OpenMPI compiler;EXTRA_CXXFLAGS
: Additional compile-time flags to$(CC)
;EXTRA_CXXFLAGS
: Additional compile-time flags to$(CXX)
;EXTRA_LDFLAGS
: Additional link-time flags to$(CXX)
;32
: Force 32-bit compilation when set to1
;64
: Force 64-bit compilation when set to1
.
-
A C++ 2011 compiler:
g++
>= 4.7clang++
>= 3.1icpc
>= 15.0
-
A supported operating system:
- RHEL/CentOS 7.x
- macOS >= 10.9
- Cygwin 1.7.x
-
System packages (depending on desired modules, see below).
Other operating systems and compilers are likely to work as expected, but have not been thoroughly tested.
A pre-compiled version of Biometric Evaluation framework for RHEL/CentOS 7 is available from the releases page on GitHub. These packages have been signed with our public key.
# Import the public key
rpm --import beframework_signing_key.asc
# Verify the signature
rpm --checksig libbiomeval-10.0-1.x86_64.rpm
libbiomeval-10.0-1.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
# Install
rpm --install libbiomeval-10.0-1.x86_64.rpm
A version compiled from source can be installed via the top-level makefile.
make install
Some modules require system packages that may not be installed by default on all operating systems. Package names are listed below for RHEL/CentOS and macOS (via MacPorts). Other operating systems may use similarly-named packages.
Name | RHEL/CentOS | MacPorts | Ubuntu |
---|---|---|---|
pkg-config | pkgconfig |
pkgconfig |
pkg-config |
OpenSSL | openssl-devel |
n/a (uses macOS CommonCrypto) | libssl-dev |
Name | RHEL/CentOS | MacPorts | Ubuntu |
---|---|---|---|
PCSC Lite | pcsc-lite-devel |
n/a (requires Command Line Tools) | libpcsclite-dev |
Name | RHEL/CentOS | MacPorts | Ubuntu |
---|---|---|---|
Zlib | zlib-devel |
zlib |
zlib1g-dev |
Name | RHEL/CentOS | MacPorts | Ubuntu |
---|---|---|---|
Berkeley DB | libdb-devel |
db44 |
libdb-dev |
SQLite 3 | sqlite-devel |
sqlite3 |
libsqlite3-dev |
Zlib | zlib-devel |
zlib |
zlib1g-dev |
Name | RHEL/CentOS | MacPorts | Ubuntu |
---|---|---|---|
OpenJPEG 2.x | openjpeg2-devel |
openjpeg |
libopenjp2-7-dev |
libjpeg | libjpeg-turbo-devel |
jpeg |
libjpeg-dev |
libpng | libpng-devel |
libpng |
libpng-dev |
libtiff | libtiff-devel |
tiff |
libtiff-dev |
Zlib | zlib-devel |
zlib |
zlib1g-dev |
Name | RHEL/CentOS | MacPorts | Ubuntu |
---|---|---|---|
Open MPI | openmpi-devel |
openmpi |
libopenmpi-dev |
With MacPorts, you may need to select a different MPI group if you have more than one installed:
sudo port select mpi openmpi-mp-fortran
Name | RHEL/CentOS | MacPorts | Ubuntu |
---|---|---|---|
ffmpeg | Build from source, and install to /usr/local |
ffmpeg-devel |
libavcodec-dev , libavformat-dev , libswscale-dev |
NBIS is supported under current versions
of RHEL/CentOS, Ubuntu, and macOS. The Framework repository contains a subset
of NBIS that is built from the top-level makefile. However, if there is a need
to use the official NBIS, then the makefile in common/src/libbiomeval
can
be changed to use that NBIS build. Biometric Evaluation Framework will look for NBIS
to be installed at /usr/local/nbis
. To build NBIS,
download the source,
and follow this basic build procedure:
./setup.sh /usr/local/nbis [--without-X11]
make config it
sudo make install
NIST is committed to using Biometric Evaluation Framework in their biometric evaluations, including:
- FpVTE 2012;
- MINEX III;
- IREX III;
- FaCE;
- FIVE;
- ...and more.
If you found a bug and can provide steps to reliably reproduce it, or if you have a feature request, please open an issue. Other questions may be addressed to the project maintainers.
Thanks for your interest in submitting code to Biometric Evaluation Framework. In order to maintain our project goals, pull requests must:
- adhere to the existing coding style;
- use Framework types consistently wherever possible;
- compile without warning under macOS and RHEL/CentOS 7.x;
- only make use of POSIX APIs;
- be in the public domain.
Pull requests may be subject to additional rules as imposed by the National Institute of Standards and Technology. Please contact the maintainers before starting work on or submitting a pull request.
Biometric Evaluation Framework is primarily maintained by Wayne Salamon and Gregory Fiumara, featuring code from several NIST contributors. This work has been sponsored by the National Institute of Standards and Technology, the Department of Homeland Security, and the Federal Bureau of Investigation.
If you use Biometric Evaluation Framework in the course of your work, please consider linking back to our website or citing our manuscript:
Fiumara, G.; Salamon, W.; Watson, C, "Towards Repeatable, Reproducible, and Efficient Biometric Technology Evaluations," in Biometrics: Theory, Applications and Systems (BTAS), 2015 IEEE 7th International Conference on, Sept. 8 2015-Sept 11 2015.
@INPROCEEDINGS{7358800,
author={Gregory Fiumara and Wayne Salamon and Craig Watson},
title={{Towards Repeatable, Reproducible, and Efficient Biometric
Technology Evaluations}},
booktitle={Biometrics Theory, Applications and Systems (BTAS), 2015 IEEE
7th International Conference on},
year={2015},
pages={1-8},
doi={10.1109/BTAS.2015.7358800},
month={Sept}
}
Biometric Evaluation Framework is released in the public domain. See the LICENSE for details.