-
Notifications
You must be signed in to change notification settings - Fork 148
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
LM solver with huber norm #348
Comments
Yes, you can create a robust residual using one of the noise models. See the Barron noise model (one such robust cost function) at play in this inverse-range landmark reprojection residual. |
Hi, Is there also a way to compute SVD symbolically? I can only think of sf.np.linalg.svd but that wont work |
There isn't - if it's a common enough request we could add it, but generally we don't do anything with cayley transforms
I don't believe SymEngine has an SVD - SymPy has |
I'm not that surprised that a symbolic SVD gets very slow very quickly. Can confirm that a trivial (entries all scalar symbols) 2x2 SVD takes a minute or two, and a 3x3 SVD takes longer (I didn't let it finish). I'd assume your example would finish eventually, but not surprised it could be quite slow. I'd recommend trying to rewrite your problem so you don't need a symbolic SVD (either in a way that you can compute the SVD numerically at runtime, or for example treating the SVD U, V, and sigma matrices as your symbols and forming the product symbolically, instead of taking the SVD symbolically).
I believe the doc comment in |
Is there a substitute to SVD in symforce that allows me to symbolically compute? Also, for my input type can I allow a CV matrix? |
Not currently, no
For something like a |
Hello! If I use the sf.DataBuffer as a representation for a cv::Mat, I do not have to give a n value but what is the purpose of having a name? Can I then reconstruct the sf.DataBuffer back into a matrix if I also pass in the rows/cols of the cv image into the function? Is there any use of this sf.DataBuffer anywhere that I can reference? |
Also, if my residual is of a CV matrix (which I would have to use a sf.DataBuffer) the auto computed jacobians and hessians becomes zero. Is there a way to work around this and to account for the gradient of the cv image? |
Hi all, If my residual is a pixel of a CV image (indexed sf.DataBuffer), the Jacobians and Hessians are set to zero. I need to account for the gradient of the CV image and also the Jacobian of the reprojection of a 3D point from a reference frame to the current frame. Defining a custom Jacobian would not be ideal since I am dealing with a lot of symbolic variables. Is there a way to deal with this? Especially since the CV image is now represented as a 1D array instead the standard Matrix. Also, is there a way to handle conditional statements for symbolic computations? Are there other similar functions/ capabilities to sign_no_zero(x). I also noticed that when using sf.logical_or operations with more than 2 arguments (unsafe = True) ,output is max(True, False) when it should by right be True? I would appreciate any help on the above!! Thanks. |
We give it a name just like any other symbol, for example the name you give the databuffer becomes the name of the argument accepted by the generated function. If you're using
I'm not sure what you mean by this - you can't make a
Yes - DataBuffers are piecewise constant functions of the index, so assuming you're doing something like
In general, you can represent this as something like
For this one, could you create a separate issue with an example of the particular arguments that you're passing? |
Hi all, I was looking through the levenberg marquardt solver implementation and was wondering if their is one with the huber norm? Or some sort of robust cost function to take into account outliers?
The text was updated successfully, but these errors were encountered: