Home

Awesome

Biometric Evaluation Framework <img src="doc/doxygen/assets/nist_itl_two_color.svg" align="right" alt="NIST Information Technology Laboratory" style="width:250px;" />

Build Library and Tests

The NIST Image Group's 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:

How to Build

Once all requirements have been met, use CMake to build:

mkdir build
cd build
cmake ..
cmake --build .

Documentation

All header files are well documented. A web browsable version of the API documentation is available on our website.

Requirements

We currently test this software using g++ 9.3 under Ubuntu 20.04. Other operating systems and compilers are likely to work as expected, but have not been thoroughly tested. Additionally, not all parts of libbiomeval will be enabled to build on all platforms.

You will need to install several system packages to enable certain features of Biometric Evaluation Framework.

Installing

A pre-compiled version of Biometric Evaluation framework is available from the releases page on GitHub. These packages have been signed with our public key.

System Packages

Quick Install Commands

The following package manager commands may be useful to install all packages needed to support all features of Biometric Evaluation Framework (though you still may need to download and install sources for other non-system packages on some operating systems---read all of Module Requirements for complete details).

Module Requirements

Some modules require system packages that may not be installed by default on all operating systems. Package names are listed below for RHEL/CentOS, macOS (via MacPorts and Homebrew, Ubuntu, and Windows (via vcpkg). Other operating systems may use similarly-named packages.

Note:

CORE

NameRHEL/CentOSMacPorts/HomebrewUbuntuvcpkg
OpenSSLopenssl-develn/a (uses macOS CommonCrypto)libssl-devopenssl

DEVICE

NameRHEL/CentOSMacPorts/HomebrewUbuntu
PCSC Litepcsc-lite-develn/a (requires Command Line Tools)libpcsclite-dev

IMAGE

NameRHEL/CentOSMacPortsHomebrewUbuntuvcpkg
OpenJPEG 2.xopenjpeg2-developenjpegopenjpeglibopenjp2-7-devopenjpeg
libjpeglibjpeg-turbo-develjpegjpeg or jpeg-turbolibjpeg-devlibjpeg-turbo
libpnglibpng-devellibpnglibpnglibpng-devlibpng
libtifflibtiff-develtifflibtifflibtiff-devtiff
Zlibzlib-develzlibzlibzlib1g-devzlib

Note:

IO

NameRHEL/CentOSMacPortsHomebrewUbuntuvcpkg
Zlibzlib-develzlibzlibzlib1g-devzlib

MPIBASE, MPIDISTRIBUTOR, MPIRECEIVER

NameRHEL/CentOSMacPortsHomebrewUbuntuvcpkg
Open MPIopenmpi-developenmpiopen-mpilibopenmpi-devmsmpi

Note:

RECORDSTORE

NameRHEL/CentOSMacPortsHomebrewUbuntuvcpkg
Berkeley DBlibdb-cxx-develdb62berkeley-dblibdb++-devberkeleydb
SQLite 3sqlite-develsqlite3sqlitelibsqlite3-devsqlite3
Zlibzlib-develzlibzlibzlib1g-devzlib

SYSTEM

NameRHEL/CentOSMacPortsHomebrewUbuntuvcpkg
Portable Hardware Localityhwloc-develhwlochwloclibhwloc-devhwloc

VIDEO

NameRHEL/CentOSMacPortsHomebrewUbuntuvcpkg
ffmpegBuild from source, and install to /usr/localffmpegffmpeglibavcodec-dev, libavformat-dev, libswscale-devffmpeg
NIST Biometric Image Software (NBIS)

NBIS is supported under current versions of RHEL/CentOS, Ubuntu, and macOS. The Framework repository contains a subset of NBIS that is built automatically.

Options

The CMake build supports the following options:

CMake OptionDefaultDescriptionNotes
BUILD_BIOMEVAL_32BITOFFCompile 32-bit on 64-bit host OS
BUILD_BIOMEVAL_TESTSOFFBuild test programs
BUILD_FOR_WASMOFFDisable components currently not supported under WebAssemblyDefaults to ON when the Emscripten toolchain is detected
BUILD_SHARED_LIBSOFFBuild shared library (i.e., .so, .dll, .dylib)When OFF, a static library (i.e., .a, .lib) is built instead
FORCE_STATIC_DEPENDENCIESOFFForce linking against .a/.lib third-party dependencies.Unavailable on Windows (use -DBUILD_SHARED_LIBS=OFF for similar behavior)
WASM_EXCEPTIONSONWhen compiled to WebAssembly, use WebAssembly exceptions instead of JavaScript exceptionsOnly available when BUILD_FOR_WASM is YES and the Emscripten toolchain is detected
WITH_FFMPEGONBuild sources that require FFMPEGUnavailable when FORCE_STATIC_DEPENDENCIES is ON
WITH_HWLOCONBuild sources that require libhwloc
WITH_MPIONBuild sources that require OpenMPI
WITH_PCSCONBuild sources that require PCSC

A Note about WebAssembly

A minimal version of the library can be compiled to WebAssembly and is supported. Compilation has only been tested using the Emscripten toolchain. When this toolchain is detected (i.e., when emcmake is used to configure, rather than cmake), the above options for WebAssembly are automatically enabled.


As Seen In...

NIST is committed to using Biometric Evaluation Framework in their biometric evaluations, including:

Communication

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.

Pull Requests

Thanks for your interest in submitting code to Biometric Evaluation Framework. In order to maintain our project goals, pull requests must:

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.

Credits

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.

Citing

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.

BibTeX

@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}
}

License

Biometric Evaluation Framework is released in the public domain. See the LICENSE for details.