[Insight-users] parameters for a 1+1 evolutionary optimizer

Luis Ibanez luis.ibanez at kitware.com
Tue Jun 1 20:00:44 EDT 2004



Hi Denis,


Thanks for your detailed message.


A couple of questions:


1) How are you initializing the
    Transforms for the sub-images ?
    Are you using the results from the
    high level registration ?


2) Are you reusing the same instantiation
    of the optimizer object when you move
    to the smaller images ?
    or are you constructing and initializing
    a new one ?

3) Are you changing the Scaling factors
    of the optimizer as you move into the
    smaller images ?


The OnePlusOne optimizer generates random
samples around the current position int the
parametric space. The size of the exploration
region is controlled by the Radius, the Growth
factor and the array of Scaling parameters.

The reason why you get the exception from the
Metric is that the optimizer is exploring too
far from the current position in the parametric
space.


In your case, the growth factor has been fixed,
so The remaining suspects are the initial value
for the radius, the update for the scaling
parameters, and the initialization of the center
of rotation (if you are doing any).



Could you please do the following:

   Insert a std::cout at the end of the GetValue()
   method in the metric and print out both the
   array of current parameters and the value
   returned by the transform.

   With the 1+1 optimizer, the Command/Observers will
   not show you the actual attempts for exploring the
   region. The will only report the best result found
   so far.

   Adding the cout statement in the metric will help
   you see how far the optimizer is going and whether
   this is happening in the rotation parameters of the
   transform or in the translation ones.




Please let us know what you find.


   Thanks



      Luis




-------------------------
Denis Nikitenko wrote:

> Greetings,
> 
> I am developing working on a mammogram registration program - after the initial
> rigid registration, the images are subdivided, the subimages are registered and
> then interpolated using TSP. I use Mattes' mutual information as the metric and
> 1+1 evoluinary oprimizer as, well, the optimizer.
> 
> The initial rigid registration works very well. I've run a series of test on
> images translated by a know set of (x,y) and the optimizer found the global
> minimum to within one pixel in the vast majority of the cases. However, when i
> try to register the subimages, I run into a problem.
> 
> Once the subimages get small (say, 64x40 pixels) in many cases the evolutionary
> optimizer does not converge and instead throws an exception ("Too many samples
> map outside moving image buffer..."). Once the images become smaller (~32x20
> pixels), this exception is thrown for every single subimage. This makes higher
> levels of subdivision virtually useless.
> 
> If I use a gradient descent optimizer for smaller subimages instead, this
> problem does not occur and the overall registration results are uniformly better
> (though not significantly). However, I have my misgivings about using gradient
> descent optimizer. When I used it for global rigid registration, in all the
> cases it performed much more poorly than the evolutionary optimizer as it was
> much more prone to falling into local minima.
> 
> Therefore I'd like to tune the evolutionary optimizer to work with smaller
> images. The set of parameters that worked the best for large images was
> (radius=10, grow=-1, shrink=-1, 200 iterations), mentioned in the documentation.
> However, this set works poorly for smaller images. I have attempted to change
> it, but it either resulted in premature (and poor) convergence, or simply did
> not make any difference - the exceptions kept popping up as often as before.
> 
> Has anyone else encountered this problem? Does anyone have any suggestions ( a
> range of parameters I should try, other optimizers that might work, etc.)? Any
> help would be greatly appreciated.
> 
> Dennis
> _______________________________________________
> 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