OpenGM is a C++ template library for defining discrete graphical models and performing inference on these models, using a wide range of state-of-the-art algorithms.
No restrictions are imposed on the factor graph to allow for higher-order factors and arbitrary neighborhood structures.
Large models with repetitive structure are handled efficiently because (i) functions that occur repeatedly need to be stored only once, and (ii) distinct functions can be implemented differently, using different encodings alongside each other in the same model.
Several parametric functions (e.g.~metrics), sparse and dense value tables are provided and so is an interface for custom C++ code.
Algorithms are separated by design from the representation of graphical models and are easily exchangeable.
OpenGM, its algorithms, HDF5 file format and command line tools are modular and extendible.
A very detailed OpenGM-handbook for users and developers is available at the OpenGM webside or use the direct link to download the handbook in pdf form.
The handbook covers everything from installation instructions to usage examples but also gives insides in the mathematical foundations of graphical models.