Vincentqyw
add: roma
c608946

Creating a model

from dkm import DKMv3_outdoor, DKMv3_indoor
DKMv3_outdoor() # creates an outdoor trained model
DKMv3_indoor() # creates an indoor trained model

Model settings

Note: Non-exhaustive list

model.upsample_preds = True/False # Whether to upsample the predictions to higher resolution
model.upsample_res = (H_big, W_big) # Which resolution to use for upsampling
model.symmetric = True/False # Whether to compute a bidirectional warp
model.w_resized = W # width of image used
model.h_resized = H # height of image used
model.sample_mode = "threshold_balanced" # method for sampling matches. threshold_balanced is what was used in the paper
model.sample_threshold = 0.05 # the threshold for sampling, 0.05 works well for megadepth, for IMC2022 we found 0.2 to work better.

Running model

warp, certainty = model.match(im_A, im_B) # produces a warp of shape [B,H,W,4] and certainty of shape [B,H,W]
matches, certainty = model.sample(warp, certainty) # samples from the warp using the certainty
kpts_A, kpts_B = model.to_pixel_coordinates(matches, H_A, W_A, H_B, W_B) # convenience function to convert normalized matches to pixel coordinates