- From: Allen Sanderson <allen@sci.utah.edu>
- To: Shireen Elhabian <shireen@sci.utah.edu>
- Cc: Oleks Korshak <oleks.korshak@gmail.com>, shapeworks-dev-support@sci.utah.edu
- Subject: [shapeworks-dev-support] iterations per split vs optimize iteration
- Date: Mon, 29 Jun 2020 16:28:27 -0600
- Ironport-sdr: alC8vjWWanWG82LreTA9GHjH/Cbg5l6QtI4By/eAu+pgfDbM9Wm+a1tdeaeRA8EGUWn5AobbJV X4pqfIbT00ed09PL92V5iETWPYNcsK9KjBqpRah+1HyvIOg/kC2i83HYAen+P5ggK5oPCqA3sq z6FNgjU5O31Ahc72IEHYXktnPNIyZDJOCi/FT5HFaP88Ob8zCzKov7p0KKNI9QzVPYsQbwFJoO mWtoWG7So5kxR3TNeUOywodGfbkF6V3+1v5XXi/rRZJqCmb4ZrrnrrBEIiRgMAV9UwiAJkyjjP QxQ=
Hi Shireen,
Oleks and I had a very productive call today. He helped fill in a few blanks for me. Regarding my confusion over the iterations per split (initialization) vs optimize iterations (optimization) setting. The energy being reported is the following:
But what was not clear is that there are weights assigned to each value that depends on whether one is doing the initialization or optimization. Oleks noted that when one is doing the initialization the weights are 1 and .1, whereas when doing the optimization the weights are 1 and 10 respectively. Given one specifies the iterations separately it initially seemed that there were no weights (e.g. 1/0 and 0/1) and each were separate. Once I understood that was not the case then the single-stage and multi-stage also made sense.
Because the terms optimization, configuration, and correspondence are overloaded to help myself in our discussion I used the terms, intra-surface and inter-surface. The points (particles) are considered correspondence positions but there is a correspondence configuration. Both of which have separate optimization steps depending on the weightings. It might be clearer to discuss the optimization in terms of the following:
The optimization is based on optimizing the correspondence position in configuration space (intra-surface optimization), while simultaneously optimizing the correspondence configuration (inter-surface optimization).
The GUI could be the following:
Iterations for
Intra-surface optimization (point seeding)
Inter-surface optimization (point correspondence)
The output would look like:
Intra-surface optimization (point seeding):
…
64 particles 1000 iterations
128 particles 1000 iterations
256 particles 1000 iterations
512 particles 1000 iterations
Inter-surface optimization (point correspondence) :
1000 iterations
It would also be good to have something better in the GUI on the relative weightings
- relative_weighting: (default: 1) Relative weight between the sampling and correspondence terms of the objective function
- initial_relative_weighting: (default: 0.05) Starting relative weighting to make sure that initially the surfaces are covered uniformly (usually in order of ~0.1 or 0.01)
Only the relative is in the gui and neither makes sense in terms what Oleks explained to me. Does that mean for the optimization the weights would be:
Intra-surface optimization (point seeding):
2 particles 1000 iterations Inter-surface weight 0.05
4 particles 1000 iterations Inter-surface weight 0.15
8 particles 1000 iterations Inter-surface weight 0.26
16 particles 1000 iterations Inter-surface weight 0.36
32 particles 1000 iterations Inter-surface weight 0.47
64 particles 1000 iterations Inter-surface weight 0.57
128 particles 1000 iterations Inter-surface weight 0.68
256 particles 1000 iterations Inter-surface weight 0.78
512 particles 1000 iterations Inter-surface weight 0.89
Inter-surface optimization (point correspondence) :
1000 iterations Inter-surface weight 1
The Intra-surface weight is always 1.0
On one level that makes sense for the single stage, but not sure for the multi-stage. Happy to discuss more in a zoom chat.
Cheers,
Allen
- In ShapeWorks there are iterations for the splitting then the iterations for the optimization. It is not clear to be in the context of the output. It would indicate that the particles are split independently of the correspondence then the last step “optimize” for the correspondence. But It says the splitting process, followed by optimization, is then repeated until a specific number of particles
have been produced. That makes sense. So I am confused as to what I see for 512 particles in the in ShapeWorks output:
64 particles 1000 iterations
128 particles 1000 iterations
256 particles 1000 iterations
512 particles 1000 iterations
optimize 1000 iterations
I would have expected:
64 particles 1000 iterations - optimize 1000 iterations
128 particles 1000 iterations - optimize 1000 iterations
256 particles 1000 iterations - optimize 1000 iterations
512 particles 1000 iterations - optimize 1000 iterations
Currently, the initialization iterations are only run after splitting and optimization is run at the end. What you expect make sense and this is what we call multi-scale. In the python use cases, we have a multi-scale settings that does a similar flow. Alan is working on integrating this into the c++ Optimize library.
- [shapeworks-dev-support] iterations per split vs optimize iteration, Allen Sanderson, 06/29/2020
Archive powered by MHonArc 2.6.18.