[Insight-users] RE: AmoebaOptimizer and SetScales

Zachary Pincus zpincus at stanford.edu
Wed Feb 23 12:43:42 EST 2005


James,

I'm using the ShapePriorMAPCostFunction to fit a PCA shape model 
(essentially a deformable model with few parameters) to an image. This 
is within the context of the ShapePriorLevelSetSegmentaion classes, a 
la Leventon et al.

In my case, the shape model has one mode of variance, and uses a 
centered rigid 2d transform (for six parameters total) to control the 
pose of the model with respect to the image. In an effort to further 
decrease the parameter space, I wrote a variant of the euler 2d 
transform which performs the translation before the rotation, 
essentially forcing the center of rotation to be the same as the 
translation, which is appropriate for the shape models I am using. 
Using this transform my shape model is determined by four parameters.

In any case, with either of these simple spatial transforms and my 
simple shape model, when I set a scale for any parameter or parameters 
to a number different than one, the amoeba optimizer tries to send that 
parameter to + or -infinity.

I'm not sure how to go about constructing a simple test case for this, 
because it seems to be very contingent... what might I investigate 
here?

Thanks for your help,
Zach


On Feb 23, 2005, at 6:59 AM, Ross, James C (Research) wrote:

> Zach,
>
> When using, e.g., an affine transformation I get good behavior with 
> the AmoebaOptimizer by setting the scales corresponding to the 
> translational components to 1/(translateScale)^2 (where translateScale 
> != 1) and the remaining scales to 1.
>
> What metric are you using?
>
> -James
>
> -----Original Message-----
> Date: Mon, 21 Feb 2005 13:41:00 -0800
> From: Zachary Pincus <zpincus at stanford.edu>
> Subject: [Insight-users] AmoebaOptimizer and SetScales
> To: ITK Users <insight-users at itk.org>
> Message-ID: <67948ffc935e41324237c901eb0e5bd9 at stanford.edu>
> Content-Type: text/plain; charset=US-ASCII; format=flowed
>
> Hello again,
>
> I've noticed that the SetScales() call doesn't seem to have the effect
> on the AmoebaOptimizer advertised by the documentation about
> optimizers.
>
> Basically, setting a scale any larger than one for any parameter seems
> to cause the AmoebaOptimizer to drive that parameter to zero. Setting a
> scale smaller than one causes the optimizer to try to drive that
> parameter to + or -infinity. (The larger or smaller the scale, the
> faster this happens.)
>
> When I substitute, say, the OnePlusOneEvolutionaryOptimizer for the
> AmoebaOptimizer (holding all else the same), everything works as it
> should: parameters with a large scaling change more slowly than those
> with a small scaling.
>
> Has anyone else noticed this? Is the problem here my failing to
> understand something about how the downhill simplex algorithm works, or
> is there some bad interaction between this algorithm and scaling?
>
> Zach Pincus
>
> Department of Biochemistry and Program in Biomedical Informatics
> Stanford University School of Medicine
>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>



More information about the Insight-users mailing list