vbalnt / Tfeat
Projects that are alternatives of or similar to Tfeat
TFeat shallow convolutional patch descriptor
Code for the BMVC 2016 paper Learning local feature descriptors with triplets and shallow convolutional neural networks
Pre-trained models
We provide the following pre-trained models:
network name | model link | training dataset |
---|---|---|
tfeat-liberty |
tfeat-liberty.params | liberty (UBC) |
tfeat-yosemite |
tfeat-yosemite.params | yosemite (UBC) |
tfeat-notredame |
tfeat-notredame.params | notredame (UBC) |
tfeat-ubc |
coming soon... | all UBC |
tfeat-hpatches |
coming soon... | HPatches (split A) |
tfeat-all |
coming soon... | All the above |
Pre-trained models usage with Kornia
TFeat has been integrated into Kornia
First install Kornia: pip install kornia
import torch
import kornia as K
input = torch.rand(16, 1, 32, 32)
tfeat = K.feature.TFeat(pretrained=True)
descs = tfeat(input) # 16x128
Quick start guide
To run TFeat
on a tensor of patches:
tfeat = tfeat_model.TNet()
net_name = 'tfeat-liberty'
models_path = 'pretrained-models'
net_name = 'tfeat-liberty'
tfeat.load_state_dict(torch.load(os.path.join(models_path,net_name+".params")))
tfeat.cuda()
tfeat.eval()
x = torch.rand(10,1,32,32).cuda()
descrs = tfeat(x)
print(descrs.size())
#torch.Size([10, 128])
Note that no normalisation is needed for the input patches, it is done internally inside the network.
TFeat
: Examples (WIP)
Testing We provide an ipython
notebook that shows how to load and use
the pre-trained networks. We also provide the following examples:
- extracting descriptors from image patches
- matching two images using
openCV
- matching two images using
vlfeat
For the testing example code, check tfeat-test notebook
TFeat
Re-training We provide an ipython
notebook with examples on how to train
TFeat
. Training can either use the UBC
datasets Liberty, Notredame, Yosemite
, the HPatches
dataset, and combinations
of all the datasets.
For the training code, check tfeat-train notebook