-
Notifications
You must be signed in to change notification settings - Fork 42
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
Add coregistration by minimization of NMAD #231
Comments
Some news: This method suggested by @sgascoin is now fully implemented/tested in xDEM. I now realize it matches the implementation by @liuh886 and @erikmannerfelt (and with my modifications in #530 to make it match the modularity of other methods). The tests show it indeed converges to the same shifts as the Nuth and Kääb fairly fast. A new (re-vamped) xDEM documentation will be out in a couple weeks including this. I am not sure about the current name given to this method in xDEM, however: "GradientDescending". |
Hello Romain, well done! It's great that you implemented it in xdem, I wonder if convergence fails in some cases. I used this method to compute a snow depth image for a study that we submitted last week, but we did not show the comparison with N&K so it's probably not enough for a proper reference. The Nelder-Mead method is not a gradient descent method so I would chose another name. Also it's easy to switch to another method from the scipy library so maybe I would just call it "minimize".. Thanks! |
Hello, @rhugonnet . In my view, the key point is that coregistration can be regarded as a bound-restricted minimizing problem (very typical when viewed in 3D space), which can be solved by different optimization algorithms, the most typical of which is gradient-based. I have tried several algorithms from SciPy, currently, stochastic gradient descent is one of the best. And the NMAD is the loss function; other functions like RMSE... or combining the two also work. At first, gradient descent coregistration (GDC) was designed for cloud point-DEM coregistration and was working well; at the time, xdem struggled to handle coregistration between ICESat-2 and DEM. It is also a good alternative for DEM-DEM coregistration if the slope/curvature calculation takes a long time... I explained my methods in the supplementary of my snow paper but I'm still struggling to submit it -( |
Thanks both for the feedback! 🙂 As the gradient descent aspect is not a specificity of that method (just one type of optimizer), I would join @sgascoin in trying instead to capture the nature of the minimization problem as formulated in this method in the name. For a reference: I think @SmithB has been using this method for a while, any idea there? (could be one of your own papers) |
I think DhMinimize seems like a nice compact way to describe what's going
on here. For the ice-sheet cases I looked at in detail, the misfit
function was usually quite smooth as a function of offset, so it didn't
seem like the choice of minimizers was going to make a huge difference.
The very simple grid search I implemented in pointCollection worked fine as
long as there was enough topographic variability in the DEM to allow a good
match.
…On Thu, Sep 12, 2024 at 12:05 PM Romain Hugonnet ***@***.***> wrote:
Thanks both for the feedback! 🙂
For info, we now allow the user to pass any fit_optimizer for all
coregistration methods (which also includes the loss function), this way
all approaches are fully modular and durable (can pass the optimizer from a
complex ML package if you like, or just use SciPy's default).
In that sense, the minimization that happens during ICP or Nuth and Kääb
is no different than for this method (can be a gradient descent or anything
else), although we can specify a different default optimizer if we think it
impacts performance significantly for the user using default parameters.
As the gradient descent aspect is not a specificity of that method (just
one type of optimizer), I would join @sgascoin
<https://github.com/sgascoin> in trying instead to capture the nature of
the minimization problem as formulated in this method in the name.
Maybe something like "ElevationDifferenceMinimization" or "DhMinimize"?
Any other idea on this @adehecq <https://github.com/adehecq>?
For a reference: I think @SmithB <https://github.com/SmithB> has been
using this method for a while, any idea there? (could be one of your own
papers)
—
Reply to this email directly, view it on GitHub
<#231 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AARMN2B7APQJOOWK675KOXLZWHQWFAVCNFSM6AAAAABOB6YEG2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNBXGAZTMMBTGM>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Good to know @SmithB, thanks! I will mirror the default optimizer of other methods, then. (I might do some more testing on this for the DEM coreg study, and can adapt then if necessary.) |
@rhugonnet, can the repo be simplified by having one main class with high modularity and then "opinionated subclasses" such as |
Between a generic But then creating a |
I'd say either of these alternatives sound good to me actually! But if any of them are implemented I'm happy :) |
A nice suggestion by Simon Gascoin (@sgascoin). An example of a very simple algorithm that finds a horizontal shift between two DEMs by minimizing the NMAD. A good alternative to the Nuth & Kaab.
The text was updated successfully, but these errors were encountered: