AffNet model implementation
CNN-based affine shape estimator.
AffNet model implementation in PyTorch for ECCV2018 paper "Repeatability Is Not Enough: Learning Discriminative Affine Regions via Discriminability"
Update: pytorch 1.4 version
The master branch is the one, which produced ECCV-paper results, python 2.7 and pytorch 0.4.0
Here is the one, which successfully runs on python 3.7, pytorch 1.4.0
AffNet generates up to twice more correspondeces compared to Baumberg iterations
Retrieval on Oxford5k, mAP
Detector + Descriptor | BoW | BoW + SV | BoW + SV + QE | HQE + MA |
---|---|---|---|---|
HesAff + RootSIFT | 55.1 | 63.0 | 78.4 | 88.0 |
HesAff + HardNet++ | 60.8 | 69.6 | 84.5 | 88.3 |
HesAffNet + HardNet++ | 68.3 | 77.8 | 89.0 | 89.5 |
Datasets and Training
To download datasets and start learning affnet:
git clone https://github.com/ducha-aiki/affnet
./run_me.sh
Paper figures reproduction
To reproduce Figure 1 in paper, run notebook
To reproduce Figure 2-3 in paper, run notebooks here
git clone https://github.com/ducha-aiki/affnet
./run_me.sh
Pre-trained models
Pre-trained models can be found in folder pretrained: AffNet.pth
Usage example
We provide two examples, how to estimate affine shape with AffNet. First, on patch-column file, in HPatches format, i.e. grayscale image with w = patchSize and h = nPatches * patchSize
cd examples/just_shape
python detect_affine_shape.py imgs/face.png out.txt
Out file format is upright affine frame a11 0 a21 a22
Second, AffNet inside pytorch implementation of Hessian-Affine
2000 is number of regions to detect.
cd examples/hesaffnet
python hesaffnet.py img/cat.png ells-affnet.txt 2000
python hesaffBaum.py img/cat.png ells-Baumberg.txt 2000
output ells-affnet.txt is Oxford affine format
1.0
128
x y a b c
WBS example
Example is in [notebook](examples/hesaffnet/WBS demo.ipynb)
Citation
Please cite us if you use this code:
@inproceedings{AffNet2017,
author = {Dmytro Mishkin, Filip Radenovic, Jiri Matas},
title = "{Repeatability Is Not Enough: Learning Discriminative Affine Regions via Discriminability}",
year = 2018,
month = sep,
booktitle = {Proceedings of ECCV}
}