Skip to main content

LibMR, the MetaRecognition library

Project description


libMR provides core MetaRecognition and Weibull fitting functionality. It is used to calculate w-scores used for multi-modal fusion, renormalize SVM data and in general support open-set algorithms with outlier detection


Determine when something is an outlier is tricky business. Luckily extreme value theory provides a strong basis for modeling of the largest or smallest known values and then determing if something else is too large or too small. This library supports such computations. It is also easy to do the work in almost any advanced package (R, Matlab, etc.) but it is trick to keep it all straight. The C++ classes here track translation and flipping to make it easier to correctly use the meta-recognition concepts.


This version libMR is released under the BSD 3-Clause license. (see License.txt) and superseed previous license. We dropped pursing the patent protection.

Please cite libMR in your publications if it helps your research:

  author = {Walter J. Scheirer and Anderson Rocha and Ross Michaels and Terrance E. Boult},
  title = {Meta-Recognition: The Theory and Practice of Recognition Score Analysis},
  journal = {IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI)},
  volume = {33},
  issue = {8},
  pages = {1689--1695},
  year = {2011}

or one of our later works if combining it with them.

This version uses object, that retain the “transforms” (including save/load) need to compute the actual w-scores. It includes functions for Prediction, CDF, Inverse, FitHigh (larger is better), FitLow (smaller is better) and FitSVM.


Project layout

  • libMR Library source code and resources

  • python A python wrapper for libMR using Cython

  • examples Directory with example programs that test that also test for correctness

  • doc C++ documentation; directory starts at html/index.html

C++ library

This needs CMake (version > 2.8)

Quick build instructions for Windows:

use CMake GUI
Source code = <where libmr is> libMR/libMR
Where to build binaries = < where libmr is > /libMR/build
Click generate
Select correct visual studio version compiler
Click yes to add directory build
Open Visual Studio Solution
Build ALL_BUILD project to build libmr
Build INSTALL project to install
Add install dir to path to link against libmr dll.

Quick build instructions for linux/Mac:

$ tar -zxf libMR.tgz
$ cd libMR
$ mkdir build;  % or whereyou like to build it
$ cd build
$ cmake ..
or to get a different installation directory
$ make

Running examples - Run after installing libMR:

$ examples/mr-test
$ examples/wlb-test

Optionally you can “install” it (by default in the system path – there you have to use sudo):

$ make install

There are built in tests in examples/mr-test to ensure it compiled correctly and is computing proper values


Python bindings to LibMR are provided by Cython >=0.17. When building this way, LibMR is statically linked into the Python library which means you don’t have to build the entire package.

There are several ways to install LibMR for Python.

  1. (preferred) Installing with Pip:

    This method will build LibMR as a Python extension and will install it into your python path. If you are inside a virtualenv, this allows you to install LibMR as a standard user without needing sudo:

    $ virtualenv venv && source venv/bin/activate
    $ pip install -r python/requirements.txt
    $ pip install .

    Update: libmr is now available on PyPI. To install the latest version, you can simply:

    $ pip install libmr
  2. Building a shared object

    If you have Cython and NumPy already installed but you do not want to install LibMR into Python’s path, you can simply build the module directly:

    $ python build_ext -i

    This will place ‘’ into the current folder. You can import it directly:

    $ file ELF 64-bit LSB  shared object, ...
    $ python
    >>> import libmr
    >>> mr = libmr.MR()

    Now, move into your project’s folder, or add this path into your PYTHONPATH environment variable.


Developed by Dr. Terrance (Terry) Boult, Dr. Walter Scheir with some implemntation by Vijay Iyer @Securics and Enhancements for Python by Ethan Rudd and Dr. Manuel Gunther

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (39.8 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page