Spaces:
Sleeping
Sleeping
import torch | |
from pathlib import Path | |
from hloc import logger | |
from ..utils.base_model import BaseModel | |
class XFeat(BaseModel): | |
default_conf = { | |
"keypoint_threshold": 0.005, | |
"max_keypoints": -1, | |
} | |
required_inputs = ["image"] | |
def _init(self, conf): | |
self.net = torch.hub.load( | |
"verlab/accelerated_features", | |
"XFeat", | |
pretrained=True, | |
top_k=self.conf["max_keypoints"], | |
) | |
logger.info(f"Load XFeat(sparse) model done.") | |
def _forward(self, data): | |
pred = self.net.detectAndCompute( | |
data["image"], top_k=self.conf["max_keypoints"] | |
)[0] | |
pred = { | |
"keypoints": pred["keypoints"][None], | |
"scores": pred["scores"][None], | |
"descriptors": pred["descriptors"].T[None], | |
} | |
return pred | |