shapeworks-dev-support

Text archives Help


Re: [shapeworks-dev-support] iterations per split vs optimize iteration


Chronological Thread 
  • From: Shireen Elhabian <shireen@sci.utah.edu>
  • To: Allen Sanderson <allen@sci.utah.edu>
  • Cc: Shireen Elhabian <shireen@sci.utah.edu>, Oleks Korshak <oleks.korshak@gmail.com>, shapeworks-dev-support@sci.utah.edu
  • Subject: Re: [shapeworks-dev-support] iterations per split vs optimize iteration
  • Date: Mon, 29 Jun 2020 19:22:28 -0600
  • Ironport-sdr: 0IoojtHyXJl5bKVGAtoHzAGcxo9mFAycBrO6Hw6o0UCyHjSIxa7if1m9IRTnFauPs9CvFzAzwC r0atGksk34Sh5yRjZ7+nKpG6CAqYxtVzODwEKw20+Jh8yVgXzOX0xq/kZA/Jj3cWH+8CXN69UX +547nX5regNjMs7dn5H9UlzQnd8SjnR7THuDgNpIgYAtIlGt5pP0YVKdS1V7z+fAFr0eNVxOIn bm+EJyOQ59F8o4JDTiBrNkUiqFmwqiW4H3r37KTGSy4N79cdP/VCOUasI1OTV9RI4PW3saTqGI 6mE=

Hi Allen,

The relative weighting is a weight used to scale/weight the H(Z) term (correspondence or inter-surface term) in the objective. 

The differences between “initialization” and “optimization” stages/steps are 

(1) how important the correspondence (inter-surface) objective is compared to the surface sampling (intra-surface) term using the relative weighting (hence initial relative weighting is the weight used in initialization and the relative weighing is the weight used for optimization).

(2) how the notion of correspondence (inter-surface) is quantified. In initialization, especially when we don’t have enough particles to describe the geometry of each surface, we use a mean energy (i.e., pushing all shapes in the shape space to the mean shape or in other words, the covariance matrix is assumed to be identity). In optimization, we use the entropy of the shapes distribution (assumed to be gaussian distributed) which is quantified based on the covariance matrix. In the multi-scale setting, we have the option to use shape statistics at later scales where we have more particles that can reveal the covariance structure.

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

How did you get/compute those weights?

thanks and best regards
Shireen


------------------------------------------
Shireen Elhabian, M.Sc., Ph.D.
Research Assistant Professor
School of Computing
Scientific Computing and Imaging Institute
University of Utah
WEB 2815
72 Central Campus Drive, Salt Lake City, UT, 84112
Phone (801) 587-3206
Fax (801) 585-6513
Home Page: http://www.sci.utah.edu/~shireen

On Jun 29, 2020, at 4:28 PM, Allen Sanderson <allen@sci.utah.edu> wrote:

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


On Jun 23, 2020, at 4:50 PM, Allen Sanderson <allen@sci.utah.edu> wrote:
  • 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

On Jun 24, 2020, at 10:32 AM, Shireen Elhabian <shireen@sci.utah.edu> wrote:

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.






Archive powered by MHonArc 2.6.18.

Top of page