Hi,I am trying to solve a statistical model based mesh registration problem using Ceres Solver. I have already constructed the statistical model and the mesh can be deformed by a 12-dimension vector, bParam. Before I go on solving the mesh registration problem, I checked the mesh deformation using bParam as constant variable (i calculated deformation matrix outside the autodiff cost function and passed it to my autodiff cost function as a member variable) and the result is good.
Now I am trying to relax this by passing bParam as a parameter block to my autodiff cost function as a constant block using SetParameterBlockConstant() funciton and calculate the deformation matrix in the autodiff function.
However, the result is strange as it seems that the function converges to a wrong place.The configuration of my minimizer is listed below:Trust region strategy: dogleg_subspaceLinear solver: sparse_schur
Linear solver ordering: automaticschur structure: 3, 3, 3I have an interesting observation:Before I move the calculation of deformation matrix using bParam into the autodiff function, the function converges to local minima in 3 iterations but after I move the calculation of deformation matrix into the autodiff function, it takes 35 iterations to converge to a wrong place. I hope this observation helps.
Thanks in advance for any help!
--
You received this message because you are subscribed to the Google Groups "Ceres Solver" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ceres-solver...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ceres-solver/9376393c-13a8-42d2-9ab9-fa05d03439ff%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Comments inline.On Mon, May 15, 2017 at 7:12 PM aeoleader <aeol...@gmail.com> wrote:Hi,I am trying to solve a statistical model based mesh registration problem using Ceres Solver. I have already constructed the statistical model and the mesh can be deformed by a 12-dimension vector, bParam. Before I go on solving the mesh registration problem, I checked the mesh deformation using bParam as constant variable (i calculated deformation matrix outside the autodiff cost function and passed it to my autodiff cost function as a member variable) and the result is good.What do you mean result is group? you fixed bparam but let the vertices of your mesh evolve? and that resulted in a good final mesh?
Now I am trying to relax this by passing bParam as a parameter block to my autodiff cost function as a constant block using SetParameterBlockConstant() funciton and calculate the deformation matrix in the autodiff function.So now bparam is a parameter block in the problem with the same values as above, but is marked constant ? and the solution is different?
that weird, are the starting costs and the gradient the same in both cases?
However, the result is strange as it seems that the function converges to a wrong place.The configuration of my minimizer is listed below:Trust region strategy: dogleg_subspaceLinear solver: sparse_schurwhy are you using sparse_schur?
Linear solver ordering: automaticschur structure: 3, 3, 3I have an interesting observation:Before I move the calculation of deformation matrix using bParam into the autodiff function, the function converges to local minima in 3 iterations but after I move the calculation of deformation matrix into the autodiff function, it takes 35 iterations to converge to a wrong place. I hope this observation helps.I think your cost function is buggy. Can you share the implementation.
To unsubscribe from this group and stop receiving emails from it, send an email to ceres-solver+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ceres-solver/e695ce26-5197-4efb-8667-a956fbe2f12a%40googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "Ceres Solver" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ceres-solver/t1X1ZYl1Ajk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ceres-solver+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ceres-solver/CABsh3u4gTYUuGbgfmq9pbTC8avGt8qvOQ7grkj%3DOg%3DbTDHF%3DJQ%40mail.gmail.com.
std::vector<int> ind;
ind.push_back(13);
ceres::SubsetParameterization* bSP = new ceres::SubsetParameterization(13, ind);
problem->SetParameterization(bParam, bSP);
To view this discussion on the web visit https://groups.google.com/d/msgid/ceres-solver/22650f3e-69d4-420c-b02b-e8614c3d1c3f%40googlegroups.com.