Spaces:
Running
Running
Vincentqyw
commited on
Commit
•
8004049
1
Parent(s):
9f198a1
update: wrapper functions
Browse files- app.py +1 -1
- common/utils.py +5 -5
- hloc/extractors/disk.py +3 -3
- hloc/match_features.py +8 -2
- hloc/matchers/lightglue.py +2 -2
- hloc/matchers/sgmnet.py +2 -2
app.py
CHANGED
@@ -298,7 +298,7 @@ def run(config):
|
|
298 |
outputs=[output_wrapped, geometry_result],
|
299 |
)
|
300 |
|
301 |
-
app.launch(share=False)
|
302 |
|
303 |
|
304 |
if __name__ == "__main__":
|
|
|
298 |
outputs=[output_wrapped, geometry_result],
|
299 |
)
|
300 |
|
301 |
+
app.queue().launch(share=False)
|
302 |
|
303 |
|
304 |
if __name__ == "__main__":
|
common/utils.py
CHANGED
@@ -458,11 +458,11 @@ matcher_zoo = {
|
|
458 |
"config_feature": extract_features.confs["d2net-ss"],
|
459 |
"dense": False,
|
460 |
},
|
461 |
-
"d2net-ms": {
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
},
|
466 |
"alike": {
|
467 |
"config": match_features.confs["NN-mutual"],
|
468 |
"config_feature": extract_features.confs["alike"],
|
|
|
458 |
"config_feature": extract_features.confs["d2net-ss"],
|
459 |
"dense": False,
|
460 |
},
|
461 |
+
# "d2net-ms": {
|
462 |
+
# "config": match_features.confs["NN-mutual"],
|
463 |
+
# "config_feature": extract_features.confs["d2net-ms"],
|
464 |
+
# "dense": False,
|
465 |
+
# },
|
466 |
"alike": {
|
467 |
"config": match_features.confs["NN-mutual"],
|
468 |
"config_feature": extract_features.confs["alike"],
|
hloc/extractors/disk.py
CHANGED
@@ -26,7 +26,7 @@ class DISK(BaseModel):
|
|
26 |
pad_if_not_divisible=self.conf["pad_if_not_divisible"],
|
27 |
)
|
28 |
return {
|
29 |
-
"keypoints": [f.keypoints for f in features],
|
30 |
-
"scores": [f.detection_scores for f in features],
|
31 |
-
"descriptors": [f.descriptors.t() for f in features],
|
32 |
}
|
|
|
26 |
pad_if_not_divisible=self.conf["pad_if_not_divisible"],
|
27 |
)
|
28 |
return {
|
29 |
+
"keypoints": [f.keypoints for f in features][0][None],
|
30 |
+
"scores": [f.detection_scores for f in features][0][None],
|
31 |
+
"descriptors": [f.descriptors.t() for f in features][0][None],
|
32 |
}
|
hloc/match_features.py
CHANGED
@@ -330,14 +330,20 @@ def match_images(model, feat0, feat1):
|
|
330 |
desc0 = desc0.unsqueeze(0)
|
331 |
if len(desc1.shape) == 2:
|
332 |
desc1 = desc1.unsqueeze(0)
|
|
|
|
|
|
|
|
|
|
|
|
|
333 |
pred = model(
|
334 |
{
|
335 |
"image0": feat0["image"],
|
336 |
-
"keypoints0": feat0["keypoints"]
|
337 |
"scores0": feat0["scores"][0].unsqueeze(0),
|
338 |
"descriptors0": desc0,
|
339 |
"image1": feat1["image"],
|
340 |
-
"keypoints1": feat1["keypoints"]
|
341 |
"scores1": feat1["scores"][0].unsqueeze(0),
|
342 |
"descriptors1": desc1,
|
343 |
}
|
|
|
330 |
desc0 = desc0.unsqueeze(0)
|
331 |
if len(desc1.shape) == 2:
|
332 |
desc1 = desc1.unsqueeze(0)
|
333 |
+
|
334 |
+
if isinstance(feat0["keypoints"], list):
|
335 |
+
feat0["keypoints"] = feat0["keypoints"][0][None]
|
336 |
+
if isinstance(feat1["keypoints"], list):
|
337 |
+
feat1["keypoints"] = feat1["keypoints"][0][None]
|
338 |
+
|
339 |
pred = model(
|
340 |
{
|
341 |
"image0": feat0["image"],
|
342 |
+
"keypoints0": feat0["keypoints"],
|
343 |
"scores0": feat0["scores"][0].unsqueeze(0),
|
344 |
"descriptors0": desc0,
|
345 |
"image1": feat1["image"],
|
346 |
+
"keypoints1": feat1["keypoints"],
|
347 |
"scores1": feat1["scores"][0].unsqueeze(0),
|
348 |
"descriptors1": desc1,
|
349 |
}
|
hloc/matchers/lightglue.py
CHANGED
@@ -42,12 +42,12 @@ class LightGlue(BaseModel):
|
|
42 |
input = {}
|
43 |
input["image0"] = {
|
44 |
"image": data["image0"],
|
45 |
-
"keypoints": data["keypoints0"]
|
46 |
"descriptors": data["descriptors0"].permute(0, 2, 1),
|
47 |
}
|
48 |
input["image1"] = {
|
49 |
"image": data["image1"],
|
50 |
-
"keypoints": data["keypoints1"]
|
51 |
"descriptors": data["descriptors1"].permute(0, 2, 1),
|
52 |
}
|
53 |
return self.net(input)
|
|
|
42 |
input = {}
|
43 |
input["image0"] = {
|
44 |
"image": data["image0"],
|
45 |
+
"keypoints": data["keypoints0"],
|
46 |
"descriptors": data["descriptors0"].permute(0, 2, 1),
|
47 |
}
|
48 |
input["image1"] = {
|
49 |
"image": data["image1"],
|
50 |
+
"keypoints": data["keypoints1"],
|
51 |
"descriptors": data["descriptors1"].permute(0, 2, 1),
|
52 |
}
|
53 |
return self.net(input)
|
hloc/matchers/sgmnet.py
CHANGED
@@ -82,8 +82,8 @@ class SGMNet(BaseModel):
|
|
82 |
logger.info(f"Load SGMNet model done.")
|
83 |
|
84 |
def _forward(self, data):
|
85 |
-
x1 = data["keypoints0"] # N x 2
|
86 |
-
x2 = data["keypoints1"]
|
87 |
score1 = data["scores0"].reshape(-1, 1) # N x 1
|
88 |
score2 = data["scores1"].reshape(-1, 1)
|
89 |
desc1 = data["descriptors0"].permute(0, 2, 1) # 1 x N x 128
|
|
|
82 |
logger.info(f"Load SGMNet model done.")
|
83 |
|
84 |
def _forward(self, data):
|
85 |
+
x1 = data["keypoints0"].squeeze() # N x 2
|
86 |
+
x2 = data["keypoints1"].squeeze()
|
87 |
score1 = data["scores0"].reshape(-1, 1) # N x 1
|
88 |
score2 = data["scores1"].reshape(-1, 1)
|
89 |
desc1 = data["descriptors0"].permute(0, 2, 1) # 1 x N x 128
|