OpenGM2 LibraryContactsAlgorithmsReferencesBenchmark 


OpenGM is a C++ template library for discrete factor graph models and distributive operations on these models. It includes state-of-the-art optimization and inference algorithms beyond message passing. OpenGM handles large models efficiently, since (i) functions that occur repeatedly need to be stored only once and (ii) when functions require different parametric or non-parametric encodings, multiple encodings can be used alongside each other, in the same model, using included and custom C++ code. No restrictions are imposed on the factor graph or the operations of the model. OpenGM is modular and extendible. Elementary data types can be chosen to maximize efficiency. The graphical model data structure, inference algorithms and different encodings of functions inter-operate through well-defined interfaces. The binary OpenGM file format is based on the HDF5 standard and incorporates user extensions automatically.


Factor Graph Models: Our implementation can deal with factor graphs [55] of any order and structure, from second order grid graphs to irregular higher-order models. We support arbitrary (commutative and associative) operations, including sum, product, conjunction and disjunction, flexible number of labels (different variables can have differently many labels), and function sharing across factors. The example graph on the right illustrate a second factor graph with 5 variable nodes, a single unary factor connected to each variable node and 10 second order factors. The corresponding objective function factorize according to this structure and the operation addition into

J(x) = sum_f \varphi_f(x_{ne(f)}

Functions: Our function type abstraction enables different (built-in and custom) encodings to be used alongside each other. Naitively OpenGM provides: Explicit function (multi-dimensional table), sparse function (sparse multi-dimensional table), Potts functions (different types, including higher-order), truncated absolute difference, truncated squared difference, and views that treat one graphical model as a function within another graphical model. Furthermore, functions can be easyly included into OpenGM with full support and efficient storage. As illustrated in the right, each factor is associated to a function out of a predefined list of different function types.

Algorithms: OpenGM comes with an uniform inference algorithm framework, which makes developing of new algorithms quite easy and allready provides several state of the art methods or wrappers to existing code:

* only available by wrapped external code
** available by native OpenGM-code and wrapped external code
*** requires CPLEX (free for academical use)

Binary HDF5 File Format: Support I/O for factor graph models into files. The I/O framework is such designed that it easily can be extended by new function types.

Interfaces: Command Line Optimizer with built-in protocol mode for runtime and convergence analyses. Matlab and Python interfaces will be available with version 2.1

Last modified: September 23 2015 10:21:23 (legal notice)