Add new local feature extractor
September 1, 2022 ยท View on GitHub
In this part, we introduce how to add a new feature extractor to XRLocalization.
The XRLocalization has provided a global feature netvlad and a local feature
d2net. If you intend to use other feature like superpoint in your experiment,
a few steps should be taken as follow.
0. Clone the code and place it in the 3rdparty folder
cd xrlocalization/3rdparty
git clone https://github.com/magicleap/SuperGluePretrainedNetwork.git
1. Create a python file in xrlocalization/xrloc/features
vim superpoint.py
2. Create a warpper class in superpoint.py
import sys
import torch.nn as nn
from xrloc.utils.miscs import get_parent_dir
sys.path.append(get_parent_dir(__file__) + '/../3rdparty')
from SuperGluePretrainedNetwork.models.superpoint import SuperPoint as SP
class SuperPoint(nn.Module):
default_config = {
'descriptor_dim': 256,
'nms_radius': 4,
'keypoint_threshold': 0.005,
'max_keypoints': -1,
'remove_borders': 4,
}
def __init__(self, config=default_config):
super().__init__()
self.config = {**self.default_config, **config}
self.model = SP(self.config)
def forward(self, image):
input = {'image': image}
return self.model(input)
Note that the lowercase form of the class name should be the same as the file name.
3. Register a default config in xrlocalization/xrloc/features/extractor.py
Add a default config in support_extractors like this.
support_extractors = {
//...
'superpoint': {
'image_size': 640,
'gray_image': True,
'model': {
'nms_radius': 4,
'keypoint_threshold': 0.005,
'max_keypoints': -1,
'remove_borders': 4,
},
},
}
Now, you can use superpoint in your experiments. Note that
superpoint is not permitted for commercial usage.
This project does not include superpoint code. If you use superpoint,
you need to download it by yourself, and please abide by its license.