-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DSPSIFT detects less features that SIFT #1777
Comments
Interesting; would certainly be worth investigating. |
Anything I can help on this, I can provide some comparisons for the number of features extracted with different settings. But how that affect the final reconstruction is hard to measure, when a dataset is well surveyed, 4000 or 8000 features might not have big difference with respect to accuracy. |
Comparison numbers would be interesting. Attaching the PDF reports would also provide some metrics on the feature quality between comparisons. |
The tests are performed on Brighton beach with default settings and set min-num-features to 50000 so it can exhaustively find features at peak threshold 0.0001. I'll use dspsift(0) to indicate first octave 0 and dspsift(-1) for first octave -1.
The table can show that the dspsift(0) has basically one quality level less features comparing to sift and dspsift(-1). But dspsift(-1) will definitely cost more processing time. Some logs for processing time below
DSPSIFT(first-octave:-1, feature-quality:high, min-num-features:50000)
DSPSIFT(first-octave:0, feature-quality:high, min-num-features:50000) report
SIFT(feature-quality:high, min-num-features:10000) report
DSPSIFT(first-octave:-1, feature-quality:high, min-num-features:10000) report
DSPSIFT(first-octave:0, feature-quality:high, min-num-features:10000) |
Nice, thanks for the detailed data reports! Almost all metrics in the report for dspsift(-1) indicate an improvement in matching. An increase in runtime is expected, but seems reasonable especially when compared to sift. I think this can be patched in our OpenSfM fork and brought into ODM. 👍 If you can open a PR there with the proposed change targeting the |
OK, I'll create a PR for this. I also noticed that the max number of features is 1.5 times of min-num-features in sift, do we need to have the same behavior in dspsift? |
I don't think that's required. |
#1780 closes this. Thanks for the research and fix @originlake ! |
Hi,
The implementation of dspsift use first octave 0 and I believe OpenCV's first octave is -1. This makes the difference that the medium quality of SIFT is kinda on par with high quality in dspsift (due to the upscaling of -1 first octave). I can observe the difference during processing that the SIFT usually detects more features than dspsift, and when I set the first octave of dspsift to -1, I can then get similar amount of features. Would it be better to make them comparable at the same quality settings?
(Opencv's default firstOctave)
https://github.com/opencv/opencv/blob/c6ace77e21d9db3fcee5953ef36d5ba7ec289995/modules/features2d/src/sift.dispatch.cpp#L508
(DSPSIFT implementation)
https://github.com/OpenDroneMap/OpenSfM/blob/792b38714e42588b6f0e9354527660c7e54f18b9/opensfm/src/features/src/dspsift.cc#L76
The text was updated successfully, but these errors were encountered: