I am Charmie

メモとログ

Fusion Move implementation in OpenGM

OpenGM has two files, alphaexpansionfusion.hxx and fusion_mover.hxx, both of which seem to implement Fusion Move algorithm. Yes, both of the code in fact implement Fusion Move algorithm but they are different.

1. AlphaExpansionFusion
This wraps the code of Alexander Fix, which implements Fusion Move algorithm using QPBO and contains higher order energy reduction algorithm as well. So, AlphaExpansionFusion can solve binary/multiple labeling problem even with higher order energy using a combination of QPBO and higher order energy reduction.

2. FusionMover
This is more general class that implements Fusion Move algorithm and we can use any inference algorithm. Current implementation (version 2.3.1) contains 4 methods: (1) fuse, (2) fuseAd3, (3) fuseQpbo, and (4) fuseFixQpbo. fuse() is a general function that accepts any inference algorithm while the other three functions use specific algorithms: Ad3, QPBO, QPBO + higher order energy reduction by Alexander Fix, respectively.