Git Product home page Git Product logo

Comments (7)

tsattler avatar tsattler commented on June 2, 2024

@PatrickRowsomeMovidius The keypoint scores of D2-Net have no absolute meaning. We only train for local uniqueness, but not global order. As such, taking the top-n / bottom-n ranked keypoints is not expected to give you the "best" keypoints.

from d2-net.

mihaidusmanu avatar mihaidusmanu commented on June 2, 2024

Hello @PatrickRowsomeMovidius . @tsattler is right about the scores not being trained for global ordering. Nevertheless, for HPatches sequences, I tried selecting top 2000 highest scores and the results remained similar; this doesn't guarantee that the results will be the same for all datasets, but it is worth investigating further. Thus I have some additional questions:

  1. Are you using multi-scale or single-scale? Taking top-k for multi-scale is not expected to work since the feature maps are summed together for higher scales.
  2. I think that keypoints = np.asarray([row for _, row in sorted(zip(scores, keypoints), key=lambda pair: pair[0])]).squeeze() sorts in ascending order so you might want to select the last N keypoints (e.g., keypoints[-N :]).

from d2-net.

SkyRiderMike avatar SkyRiderMike commented on June 2, 2024

I have one question, how can i get the orientation of keypoint ?

from d2-net.

mihaidusmanu avatar mihaidusmanu commented on June 2, 2024

We do not estimate a feature orientation (only location and eventually scale using an image pyramid). The keypoints can be considered as being upright.

from d2-net.

PatrickRowsomeMovidius avatar PatrickRowsomeMovidius commented on June 2, 2024

Hello @PatrickRowsomeMovidius . @tsattler is right about the scores not being trained for global ordering. Nevertheless, for HPatches sequences, I tried selecting top 2000 highest scores and the results remained similar; this doesn't guarantee that the results will be the same for all datasets, but it is worth investigating further. Thus I have some additional questions:

  1. Are you using multi-scale or single-scale? Taking top-k for multi-scale is not expected to work since the feature maps are summed together for higher scales.

I am using the single scale option. So this should not cause an issue

  1. I think that keypoints = np.asarray([row for _, row in sorted(zip(scores, keypoints), key=lambda pair: pair[0])]).squeeze() sorts in ascending order so you might want to select the last N keypoints (e.g., keypoints[-N :]).

Yes, you are right, this does sort in ascending order, this means that my results are more stable now.

Still I see quite poor performance in terms of repeatability when I attempt to only keep the best N keypoints.

from d2-net.

SkyRiderMike avatar SkyRiderMike commented on June 2, 2024

@mihaidusmanu Thanks for answering!

from d2-net.

mihaidusmanu avatar mihaidusmanu commented on June 2, 2024

@PatrickRowsomeMovidius In a recent work related to D2-Net - ASLFeat (https://arxiv.org/pdf/2003.10071.pdf), they seem to be using the soft-detection score for reducing the number of keypoints (section 5.1, paragraph Testing). I suspect this might be helpful for D2-Net features as well, but I didn't experiment with it so far.

I will close the issue. Feel free to open a new one if there are any problems.

from d2-net.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.