chm

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:

68747470733a2f2f6a75686f6e676d3939392e6769746875622e696f2f7069632f63686d5f6172636869746563747572652e706e67

Requirements

  • 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

Training

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

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

Testing

Trained models are available on [Google drive].

python test.py --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 test.py --ktype psi --benchmark spair --load 'path_to_trained_model/spr_psi.pt'
python test.py --ktype psi --benchmark spair --load 'path_to_trained_model/pas_psi.pt'
python test.py --ktype psi --benchmark pfpascal --load 'path_to_trained_model/pas_psi.pt'
python test.py --ktype psi --benchmark pfwillow --load 'path_to_trained_model/pas_psi.pt'

BibTeX

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

@InProceedings{min2021chm, 
    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}
}

GitHub

https://github.com/juhongm999/chm