[Insight-users] DeformableRegistration7 and stopping criteria

Kris Thielemans kris.thielemans at csc.mrc.ac.uk
Mon Oct 3 12:57:13 EDT 2005


Hi all

I'd still appreciate some pointers on this. In fact, I'm having the
following problem:

- I run DeformableRegistration7 to register image1 to image2. ok.

- I run DeformableRegistration7 to register image2 to image1. stop at first
iteration.

I've put some extra lines in lbfgsb.c to see why the lbfgsb code does this.
Toehter with a DebugOn what I see is the following:

Within the first iteration, I see

    LBFGSBOptimizer (0x85a7730): returning CurrentPosition of [ some_values
]

where some_values first start of all zeroes, then goes  somewhere, but then
returns to all zeroes. Obviously, at that point, one of the convergence
criteria (i.e. the function value) is satisfied, as the 'old' function value
is equal to the new one, and it exits.

As always, I'll be eternally grateful for any help.

Kris

> -----Original Message-----
> From: 
> insight-users-bounces+kris.thielemans=csc.mrc.ac.uk at itk.org 
> [mailto:insight-users-bounces+kris.thielemans=csc.mrc.ac.uk at it
> k.org] On Behalf Of Kris Thielemans
> Sent: 21 September 2005 12:29
> To: insight-users at itk.org
> Subject: [Insight-users] DeformableRegistration7 and stopping criteria
> 
> 
> Dear all
> 
> I'm trying to run DeformableRegistration7 on some of my data. 
> This uses the LBFGSBOptimizer for a 
> BSplineDeformableTransform using a MeanSquaresImageToImageMetric.
> 
> I have a problem with the stopping criteria used in the file. 
> I think this is related to the usage of the 
> MeanSquaresImageToImageMetric which seems to have values 
> which are very much image dependent. I think it's the 
> appropriate metric for my problem (registering multiple gates 
> of the same patient on the same modality) but am not sure how 
> to use it. More detail follows.
> 
> 
> The example program sets
> 
>   optimizer->SetCostFunctionConvergenceFactor( 1e+7 ); // KT 
> original 1e+12 which according to the LBFGSBOptimizer  doc is 
> low accuracy
>   optimizer->SetProjectedGradientTolerance( .001 );// KT original 1.0
>   optimizer->SetMaximumNumberOfIterations( 10 ); // KT original 500
>   optimizer->SetMaximumNumberOfEvaluations( 500 );
>   optimizer->SetMaximumNumberOfCorrections( 5 );
> 
> I find that I have to tune these variables to the particular 
> data-set I'm using. For example, if I give as input images 
> with 26 slices of the whole 3D images, the above parameters 
> 'work'. That is, the program runs for 10 iterations and 
> outputs a very reasonable match. Now I use the whole data-set 
> (211 slices) and the program stops after the first iteration 
> (with final deformation parameters equal to the identity), 
> presumably because one of the above criteria has already been 
> met. (I had the same with the 26 slice data if I used the 
> original settings).
> 
> I'm playing around with SetCostFunctionConvergenceFactor 
> (setting 1e+5) and decreasing the 
> SetProjectedGradientTolerance to smaller numbers, but still 
> have the same problem.
> 
> (For your info, right now, I'm using NCAT simulated data, 
> which consist essentially of a bunch uniform regions. This 
> might mean that the metric is not so suitable after all. 
> Later on I'll go to real data).
> 
> No doubt, there will be some values for which the program 
> will actually do something. Question is which ones... It 
> seems that to make this slightly more robust, these settings 
> will have to be computed somehow from the images. Or maybe I 
> should be using some normalised metric.
> 
> Any suggestions?
> 
> Many thanks
> 
> Kris Thielemans
> Hammersmith Imanet Ltd
> part of GE Healthcare
> London, UK
> 
> _______________________________________________
> 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