[Insight-users] Re: SetMaxIterations(0) still computes

Luis Ibanez luis.ibanez at kitware.com
Fri Aug 10 09:18:58 EDT 2007


Hi Emma,

         You are right, this is a bug.


      If Number of Iterations is set to zero,
      then the optimizer will runs forever.


We have logged this and Bug #5476
http://public.kitware.com/Bug/view.php?id=5476


The changes should be easy to put in place.



A couple of questions first:

    How are you looking at the value of m_StopCondition ?
    by using a debugger ?
    by using print outs ?

StopCondition is *initialized* with "MaximumNumberOfIterations",
that's probably the reason why you see that value when you
(I assume "manually") stop the optimizer.

We probably should add a "Unknown" to the enum, and initialize
the StopCondition to that value.



   Please let us konw,


       Thanks


          Luis



------------------
Emma Ryan wrote:
> Hi,
> 
>    With reference to my earlier email ( below), I think ITK does not 
> allow the MaxNumberOfIterations to be zero.  It needs to be a minimum of 
> one because the check
> if (m_currentIteration = = m_NumberOfIterations) then quit; is done in a 
> sort-of 'do-while' loop rather than 'while'. So this condition is never 
> true for m_NumberofIterations=0.
> 
> I am still confused about Stop_Condition getting a value of 5.
> 
> Also, if Stop_Condition is defined by NumberofIterations, then why 
> doesn't the optimizer continue iterating till it reaches the number, 
> rather than terminating at a 'decent' metric value ?
> 
> Obviously there is another hidden condition for termination which I dont 
> see.  Could anyone point to me the location ?
> 
> Thank you,
> Emma
> 
> ----- Original Message ----
> From: Emma Ryan <eryanvtk at yahoo.com>
> To: insight-users at itk.org
> Sent: Thursday, August 9, 2007 1:35:23 AM
> Subject: SetMaxIterations(0) still computes
> 
> Hi,
> 
>   I'm trying to debug my rigid registration program and the first step 
> is to reduce the number of iterations.
> So I set it to 0, but when I execute my program it still shows me 
> several iterations.  Any clue as to why this might be happening ?
> 
> Here is the output of the optimizer (segment 1).  As you can see, 
> NumberOfIterations = 0 . The StopCondition which I thought would be 0 is 
> 5. So based on this and other experiments, I have a few questions.
> 
> 1. Shouldn't the StopCondition be 0 ?
> 2. If optimizer->SetNumberOfIterations(0), then what do the following 
> iterations represent  and where do they come from ?
> 3. Also, it I set the NumberOfIterations to some otehr number such as 
> 100000, it still performs 500 iterations (the default value from the 
> example programs)
> 4. The Mean Square error metric that I compute on Binarized input images 
> is the same as that computed on grayscale images. So what I am doing 
> here is that I convert the grayscale images to binary. ie. Every tissue, 
> except bone is black. Then I use these binary images for registration. 
> The metric value returned by the registration process is compared 
> against the metric value obtained by applying the same transform on 
> original grayscale images and checking the mean squared error. 
> Surprisingly these two values are EXACTLY the same. I expect them to be 
> different for obvious reasons.
> The way I compute the metric on the original grayscale images is shown 
> below under segment 2
> 
> 
> What is going on ?
> 
> Any clue ?
> 
> Thanks in advance
> Emma
> 
> 
> SEGMENT 1
> ---------------
> VersorRigid3DTransformOptimizer (019220B8)
>   RTTI typeinfo:   class itk::VersorRigid3DTransformOptimizer
>   Reference Count: 2
>   Modified Time: 874
>   Debug: Off
>   Observers:
>     none
>   InitialPosition: []
>   CurrentPosition: []
>   Scales: [1, 1, 1, 0.001, 0.001, 0.001]
>   MaximumStepLength: 0.2
>   MinimumStepLength: 0.001
>   RelaxationFactor: 0.5
>   GradientMagnitudeTolerance: 0.1
>   NumberOfIterations: 0
>   CurrentIteration: 0
>   Value: 0
>   Maximize: 0
>   CostFunction: (None)
>   CurrentStepLength: 0
>   StopCondition: 5
>   Gradient: []
> 0   1976.47   [0.000460224, -0.0157202, -0.041473, -6.58714, -9.17326, 
> 0.231981]
> 
> 1   669.48   [0.00152886, 0.00402301, -0.0345613, -6.60421, -9.36806, 
> 0.229234]
> 2   576.079   [-0.000710302, -0.0100887, -0.0583703, -6.5576, -9.55443, 
> 0.227974
> ]
> 3   895.329   [0.0024751, 0.017149, -0.0188799, -6.6526, -9.70157, 0.236332]
> 4   1454.49   [0.000779181, 0.00262768, -0.0415692, -6.57818, -9.73974, 
> 0.226865
> ]
> 5   208.619   [-0.000462126, -0.00352645, -0.0488536, -6.56913, 
> -9.83714, 0.2190
> 21]
> 6   320.494   [0.00156166, 0.00864248, -0.0314357, -6.61138, -9.91627, 
> 0.207684]
> 
> 7   724.278   [0.000322199, -0.00121238, -0.0455856, -6.58293, -9.93788, 
> 0.20247
> 4]
> 8   143.422   [0.000259716, 0.00266556, -0.0399937, -6.59857, -9.98223, 
> 0.192322
> ]
> 9   223.3   [-0.000310048, -0.004876, -0.0507685, -6.57875, -10.018, 
> 0.180773]
> 10   419.74   [0.00029441, 5.14277e-005, -0.0436893, -6.59453, -10.026, 
> 0.177275
> ]
> 1
> .......
> 
> 
> 
> 
> SEGMENT 2
> 
> MetricType::Pointer         metricOrig           = MetricType::New();   
> 
>         metricOrig->SetInterpolator(interpolator);
>         metricOrig->SetTransform(transform);
>         metricOrig->SetFixedImage(fixedImageReaderOrig->GetOutput());
>         metricOrig->SetMovingImage(movingImageReaderOrig->GetOutput());
>         metricOrig->SetTransformParameters(finalParameters);   
>         MetricType::TransformParametersType finalParam = 
> registration->GetLastTransformParameters();
>        
>         std::cout<<" MetricOnOriginalImage = 
> "<<metric->GetValue(finalParam)<<std::endl;
> 
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> Fussy? Opinionated? Impossible to please? Perfect. Join Yahoo!'s user 
> panel 
> <http://us.rd.yahoo.com/evt=48516/*http://surveylink.yahoo.com/gmrs/yahoo_panel_invite.asp?a=7%20> 
> and lay it on us.
> 
> 
> ------------------------------------------------------------------------
> Be a better Heartthrob. Get better relationship answers 
> <http://us.rd.yahoo.com/evt=48255/*http://answers.yahoo.com/dir/_ylc=X3oDMTI5MGx2aThyBF9TAzIxMTU1MDAzNTIEX3MDMzk2NTQ1MTAzBHNlYwNCQUJwaWxsYXJfTklfMzYwBHNsawNQcm9kdWN0X3F1ZXN0aW9uX3BhZ2U-?link=list&sid=396545433>from 
> someone who knows.
> Yahoo! Answers - Check it out.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> 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