This is the implementation of the paper "Convolutional Hough Matching Network" by J. Min and M. Cho. Implemented on Python 3.7 and PyTorch 1.3.1.

For more information, check out project [website] and the paper on [arXiv]

Overall architecture:



  • Python 3.7
  • PyTorch 1.3.1
  • cuda 10.1
  • pandas
  • requests

Conda environment settings:

conda create -n chm python=3.7
conda activate chm

conda install pytorch=1.3.1 torchvision cudatoolkit=10.1 -c pytorch
conda install -c anaconda requests
conda install -c conda-forge tensorflow
pip install tensorboardX
conda install -c anaconda pandas


The code provides three types of CHM kernel: position-sensitive isotropic (psi), isotropic (iso), vanilla Nd (full).

python --ktype {psi, iso, full} 
                --benchmark {spair, pfpascal}


Trained models are available on [Google drive].

python --ktype {psi, iso, full} 
               --benchmark {spair, pfpascal, pfwillow} 
               --load 'path_to_trained_model'

For example, to reproduce our results in Table 1, refer following scripts.

python --ktype psi --benchmark spair --load 'path_to_trained_model/'
python --ktype psi --benchmark spair --load 'path_to_trained_model/'
python --ktype psi --benchmark pfpascal --load 'path_to_trained_model/'
python --ktype psi --benchmark pfwillow --load 'path_to_trained_model/'


If you use this code for your research, please consider citing:

    author    = {Min, Juhong and Cho, Minsu},
    title     = {Convolutional Hough Matching Networks},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month     = {June},
    year      = {2021},
    pages     = {2940-2950}