Software for Factorized Graph Matching

DOWNLOAD

Introduction

This page contains software and instructions for factorized graph matching (FGM)[1][2]. In addition, we include the following state-of-the-arts methods as baselines:

The implementations of the above methods are taken from the authors' websites (The code of GA was also implemented in the code of SMAC). We appreciate all the authors for their generosity in sharing codes.

Installation

1 2     3 4 5
>> cd fgm >> ls make.m addPath.m demoToy.m demoHouse.m testToy.m testHouse.m README.md data save src lib >> make >> addPath >> demoHouse

Package Content

The package of fgm.zip contains following folders and files:
data: This folder contains the CMU House image dataset.
save: This folder contains the experimental results reported in the paper.
src: This folder contains the main implementation of FGM as well as other baselines.
lib: This folder contains some necessary library functions.
make.m: Matlab makefile for C++ code.
addPath.m: Adds the sub-directories into the path of Matlab.
demoToy.m: A demo comparison of different graph matching methods on the synthetic dataset.
demoHouse.m: A demo comparison of different matching methods on the CMU House image dataset.
testToy.m: Testing the performance of different graph matching methods on the synthetic dataset.
This is a similar function used for reporting (Fig. 4) the first experiment (Sec 5.1) in the CVPR 2012 paper[2].
testHouse.m: Testing the performance of different graph matching methods on the CMU House image dataset.
This is the same function used for reporting (Fig. 4) the first experiment (Sec 5.1) in the CVPR 2013 paper[1].

FAQs

Compiler error "Unrecognized switch: -argcheck".

This might due to the fact that your Windows c++ compiler cannot recognize the argument "-argcheck". To fix it, you can modify make.m from line 22 as follows:
cd 'src/asg/smac/graph_matching_SMAC/cpp'; mex -largeArrayDims mex_ICM_graph_matching.cpp mex -largeArrayDims mex_classes2indexes.cpp mex -largeArrayDims mex_computeRowSum.cpp mex -largeArrayDims mex_find_next_nonzero.cpp mex -largeArrayDims mex_ind2rgb8.cpp mex -largeArrayDims mex_ind2sub.cpp mex -largeArrayDims mex_istril.cpp mex -largeArrayDims mex_matchingW2.cpp mex -largeArrayDims mex_normalizeColumns.cpp mex -largeArrayDims mex_normalizeMatchingW.cpp mex -largeArrayDims mex_projection_QR_symmetric.cpp mex -largeArrayDims mex_projection_affine_symmetric.cpp mex -largeArrayDims mex_w_times_x_symmetric_tril.cpp mex -largeArrayDims spmtimesd.cpp %compileDir; cd(path0);
Thanks Syshiei's for providing the solution.

Which functions are implemented in C++?

We provide several C++ codes under src/asg/fgm/matrix to perform matrix products between binary matrices in a more efficient way. For instance, the function multiGXH.cpp is used to more efficiently compute the matrix product, G^T * X * H, where G and H are two binary matrices.

Change Log

References

Copyright

This software is free for use in research projects. If you publish results obtained using this software, please use this citation:

@article{ZhouD16,     author = {Feng Zhou and Fernando {De la Torre}},     title = {Factorized Graph Matching},     journal = {Transactions on Pattern Analysis and Machine Intelligence (PAMI)},     year = {2016},     volume = {38},     number = {9},     pages = {1774-1789}, }

Contributing back bug fixes and improvements is polite and encouraged. If you have any question, feel free to contact Feng Zhou.