[Insight-developers] Scales estimation for registration
Baohua Wu
baowu99 at gmail.com
Sun Jun 5 00:21:05 EDT 2011
Dear All,
I just updated a patch about optimizer parameter estimation. The main
changes include a Quasi-Newton method and Stefan et al.'s adaptive step.
As discussed in previous emails, scales estimation depends on the transform
object and the images, while learning rate depends on the derivative from
the metric object. In the tentative approach here, I put scales estimation
in the optimizer's StartOptimization(), and learning rate in its
AdvanceOneStep() .
Here is a brief description about the new classes:
- itkOptimizerParameterEstimatorTest: the main program of testing.
- itkOptimizerHelper: it is separated since the transform and image
information are not available in the optimizer. It provides an optimizer
with two virutual functions: EstimateScales and ComputeMaximumVoxelShift.
- itkOptimizerParameterEstimator: an actual implementation of
itkOptimizerHelper.
- itkAutomaticGradientDescentOptimizer: an optimizer with simple estimation
of scales and learning rate.
- itkQuasiNewtonOptimizer: a child class of
itkAutomaticGradientDescentOptimizer, using a Quasi-Newton method to
estimate the step sizes. It works fast with the testing data.
- itkAdaptiveGradientDescentOptimizer: a child class of
itkAutomaticGradientDescentOptimizer, using a simplified version of the
adaptive method.
The code might be reorganized in some better way. For example, scales
estimation might be moved to ImageRegistrationMethod::Initialize(). But I
hope to receive your feedbacks before further changes.
Thank you very much!
Bao
----- Original Message -----
From: Bill Lorensen
To: Baohua Wu
Cc: brian avants ; Nicholas Tustison ; Stefan Klein ; Marius Staring
(registration) ; Stefan Klein ; Insight Developers
Sent: Monday, May 09, 2011 5:31 PM
Subject: Re: [Insight-developers] Scales estimation for registration
My concern is the estimation of the translation scales. It seems the global
scale factor is used to scale the "estimated scales". I guess, indirectly,
it interacts with the learning rate. So it is also of concern.
On Mon, May 9, 2011 at 1:42 PM, Baohua Wu <baowu99 at gmail.com> wrote:
hi brian,
thank you for the information.
to my knowledge, the test was passed with the synthetic data, and the scales
worked well with several real images. i think bill's conern was mainly about
how to set the global factor (or learning rate).
we have been trying to estimate this global factor as well. some strategies
include the norm of gradient, the parameter space, etc.
baohua
----- Original Message ----- From: "brian avants" <stnava at gmail.com>
To: "Baohua Wu" <baowu99 at gmail.com>; "Nicholas Tustison"
<ntustison at gmail.com>
Cc: "Stefan Klein" <s.klein at erasmusmc.nl>; "Bill Lorensen"
<bill.lorensen at gmail.com>; "Marius Staring (registration)"
<M.Staring at lumc.nl>; "Stefan Klein" <stefan at isi.uu.nl>; "Insight Developers"
<insight-developers at itk.org>
Sent: Monday, May 09, 2011 10:05 AM
Subject: Re: [Insight-developers] Scales estimation for registration
hi baohua
nick may have some code that is relevant.
also, you may want to let people know about your other strategies for
estimating the parameter scales. for instance, the methods that take
into account the norm of the gradient itself, as well as as that build
estimates of the parameter space.
brian
On Mon, May 9, 2011 at 9:24 AM, Baohua Wu <baowu99 at gmail.com> wrote:
Stefan,
Thank you for the advice. I am glad to know your method works for scales
and learning rate. I will try it .
Baohua
----- Original Message ----- From: "Stefan Klein" <s.klein at erasmusmc.nl>
To: "Bill Lorensen" <bill.lorensen at gmail.com>
Cc: "Marius Staring (registration)" <M.Staring at lumc.nl>;
<baowu99 at gmail.com>; "Stefan Klein" <stefan at isi.uu.nl>; "Insight Developers"
<insight-developers at itk.org>
Sent: Monday, May 09, 2011 7:43 AM
Subject: Re: [Insight-developers] Scales estimation for registration
Hi Bill,
The method in elastix works well in my experience.
The method is explained here:
http://dx.doi.org/10.1007/s11263-008-0168-y
Equation 61/62
But that final expression should be squared because of the definition of
the scales in ITK.
The method needs to know the fixed image domain and the transform. So it
would fit in the same framework as Bao's class. The methods declared at
lines 147 to 161 should probably be protected by the way?
Just to clarify: the AutomaticScalesEstimation in elastix only computes
the scales, not the global LearningRate. I guess the GlobalScalingFactor
serves to determine the global LearningRate?
To automatically determine an optimal global learning rate, you would need
the CostFunction as well. (since multiplying the costfunction by 10 would
cause the optimal learning rate to be divided by 10, for example).
Good idea to make this a separate class!
Kind regards,
Stefan
On 06/05/2011 22:52, Bill Lorensen wrote:
Marius, Stefan and Bao,
One of the major weaknesses in ITK's registration framework is the
estimation of parameters. In particular, the estimation of the scales
seems to require special magic. My experience has been that the
selection of a proper scaling for translation is particularly
difficult. ITK traditionally (and currently) leaves the scaling
decision up to the application. There are currently two possible
approaches to this estimation.
1) Bao's itkParameterScaleEstimator proposed in this gerrit topic:
http://review.source.kitware.com/#change,1499
2) Elastix's (http://elastix.isi.uu.nl/) AutomaticScalesEstimation
method implementation in elxTransformBase.
For Marius and Stefan I have questions:
a) How successful is elastix's AutomaticScalesEstimation?
b) Currently this is implemented as a method in
elxTransformBase. Could it be implemented in an API similar to Bao's
itkParameterScaleEstimator?
For Bao's implementation, my concern is the addition of a free
parameter GlobalScalingFactor. It is not clear how to pick a proper
value. To me there is as much mystery in this parameter as there is in
picking a proper translation scaling
Bill
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.html
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-developers
--
Stefan Klein
+31 10 7043049
http://www.bigr.nl/people/StefanKlein
More information about the Insight-developers
mailing list