Home

Awesome

HOW local descriptors

This is the official Python/PyTorch implementation of the HOW local descriptors from our ECCV 2020 paper:

@InProceedings{TJ20,
  author      = "Giorgos Tolias and Tomas Jenicek and Ond\v{r}ej Chum}",
  title       = "Learning and aggregating deep local descriptors for instance-level recognition",
  booktitle   = "European Conference on Computer Vision",
  year        = "2020"
}

Running the Code

  1. Install the cirtorch package (see cirtorch github for details)
# cirtorch
wget "https://github.com/filipradenovic/cnnimageretrieval-pytorch/archive/v1.2.zip"
unzip v1.2.zip
rm v1.2.zip
export PYTHONPATH=${PYTHONPATH}:$(realpath cnnimageretrieval-pytorch-1.2)
  1. Install the asmk package with dependencies (see asmk github for details)
# asmk
git clone https://github.com/jenicek/asmk.git
pip3 install pyaml numpy faiss-gpu
cd asmk
python3 setup.py build_ext --inplace
rm -r build
cd ..
export PYTHONPATH=${PYTHONPATH}:$(realpath asmk)
  1. Install pip3 requirements
pip3 install -r requirements.txt
  1. Run examples/demo_how.py with two arguments – mode (train or eval) and any .yaml parameter file from examples/params/*/*.yml

Evaluating ECCV 2020 HOW models

Reproducing results from Table 2. with the publicly available models

Training HOW models

Dataset shuffling during the training is done according to the cirtorch package; randomness in the results is caused by cudnn and by kmeans for codebook creation during evaluation.