<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<META content="MSHTML 6.00.2900.2802" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=460554812-03052006>Luis,</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=460554812-03052006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=460554812-03052006>I 
think Paul Koshevoy and Tolga Tasdizen have some recommended changes to one of 
the gradient descent optimizers.&nbsp; I don't recall the specifics but I 
believe it had something to do with checking the value of the cost function 
before making a step.&nbsp; Perhaps they can chime in here.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=460554812-03052006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=460554812-03052006>Jim</SPAN></FONT></DIV>
<BLOCKQUOTE>
  <DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma 
  size=2>-----Original Message-----<SPAN class=460554812-03052006><FONT 
  face=Arial color=#0000ff>&nbsp;</FONT></SPAN><BR><B>From:</B> 
  insight-users-bounces+millerjv=crd.ge.com@itk.org 
  [mailto:insight-users-bounces+millerjv=crd.ge.com@itk.org]<B>On Behalf Of 
  </B>Ming Chao<BR><B>Sent:</B> Tuesday, May 02, 2006 7:32 PM<BR><B>To:</B> Luis 
  Ibanez<BR><B>Cc:</B> Insight Users<BR><B>Subject:</B> Re: [Insight-users] 
  Regular Step Gradient Descent optimizer<BR><BR></FONT></DIV>
  <DIV>HI Luis,</DIV>
  <DIV>Thanks for your prompt reply. Yes, I did set the optimizer (Regular Step 
  Gradient Descent optimizer)&nbsp;as the following way which I forgot to 
  include in last posting.</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;optimizer-&gt;SetMaximumStepLength( 0.50000 
  );<BR>&nbsp;optimizer-&gt;SetMinimumStepLength( 0.01 
  );<BR>&nbsp;optimizer-&gt;SetNumberOfIterations( 200 
  );<BR>&nbsp;optimizer-&gt;SetGradientMagnitudeTolerance( 
  0.01*optimizer-&gt;GetGradientMagnitudeTolerance() ); </DIV>
  <DIV>&nbsp;</DIV>
  <DIV>Later on I tried to increase the step lengths as:</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;optimizer-&gt;SetMaximumStepLength( 1.000 );</DIV>
  <DIV>&nbsp;optimizer-&gt;SetMinimumStepLength( 0.05 );<BR>&nbsp;</DIV>
  <DIV>And I had the following metric output:</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>0&nbsp;&nbsp; -0.835581&nbsp;&nbsp; [-0.0321978, -0.466639, 
  0.883861]<BR>1&nbsp;&nbsp; -0.840282&nbsp;&nbsp; [0.399061, -0.885096, 
  1.68318]<BR>2&nbsp;&nbsp; -0.837371&nbsp;&nbsp; [0.259052, -0.883767, 
  2.67333]<BR>3&nbsp;&nbsp; -0.824043&nbsp;&nbsp; [0.75875, -0.889684, 
  2.68965]<BR>4&nbsp;&nbsp; -0.829629 &nbsp;&nbsp; [0.55809, -0.881664, 
  2.83855]<BR>5&nbsp;&nbsp; -0.82694&nbsp;&nbsp; [0.679164, -0.884414, 
  2.80759]<BR>6&nbsp;&nbsp; -0.828347&nbsp;&nbsp; [0.623941, -0.882636, 
  2.8368]<BR>7&nbsp;&nbsp; -0.827662&nbsp;&nbsp; [0.566916, -0.881064, 
  2.86234]</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>The only change is the step length but the results are similar to the 
  previous one. By the way for the LBFGSB optimizer I used the following 
  conditions:</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // (1) LBFGSB optimizer<BR>&nbsp;&nbsp; 
  OptimizerType::BoundSelectionType boundSelect( 
  transform-&gt;GetNumberOfParameters() );<BR>&nbsp;&nbsp; 
  OptimizerType::BoundValueType upperBound( 
  transform-&gt;GetNumberOfParameters() );<BR>&nbsp;&nbsp; 
  OptimizerType::BoundValueType lowerBound( 
  transform-&gt;GetNumberOfParameters() );<BR>&nbsp;&nbsp; 
  boundSelect.Fill(&nbsp; 0 );<BR>&nbsp;&nbsp; upperBound.Fill(&nbsp; 10.0 
  );<BR>&nbsp;&nbsp; lowerBound.Fill( -10.0 );<BR>&nbsp;&nbsp; 
  optimizer-&gt;SetBoundSelection( boundSelect ); <BR>&nbsp;&nbsp; 
  optimizer-&gt;SetUpperBound( upperBound );<BR>&nbsp;&nbsp; 
  optimizer-&gt;SetLowerBound( lowerBound );<BR>&nbsp;&nbsp; 
  optimizer-&gt;SetMaximumNumberOfEvaluations( 200 );<BR>&nbsp;&nbsp; 
  optimizer-&gt;SetMaximumNumberOfCorrections( 200 );</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>Here I am not clear what you meant for best setting.&nbsp;I thought the 
  conditions I provided were reasonable. Do you see anything obviously different 
  which leads to different results?</DIV>
  <DIV>&nbsp;</DIV>
  <DIV>Cheers,</DIV>
  <DIV>Ming</DIV>
  <DIV>&nbsp;</DIV>
  <DIV><SPAN class=gmail_quote>On 5/2/06, <B class=gmail_sendername>Luis 
  Ibanez</B> &lt;<A 
  href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</A>&gt; 
  wrote:</SPAN> 
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><BR>Hi 
    Ming,<BR><BR><BR>Did you set the optimizer to do Minimization or 
    Maximization ?<BR>that is, did you used any of the following: 
    <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimizer-&gt;MaximizeOn()&nbsp;&nbsp;?<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimizer-&gt;MaximizeOff()&nbsp;&nbsp;?<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimizer-&gt;MinimizeOn()&nbsp;&nbsp;?<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimizer-&gt;MinimizeOff()&nbsp;&nbsp;?<BR><BR>How 
    much overlap did the images have at the end of the run <BR>with the 
    RegularStepNormalized Correlation ?<BR><BR>Note that the lasts iterations of 
    the run with<BR>RegularStepGradientDescent are advancing at very<BR>small 
    steps.<BR><BR>You may want to start the optimizer with a larger initial 
    <BR>value of the StepLength, and to change the default relaxation<BR>factor 
    to be 0.7 or 0.9 instead of the default value 0.5.<BR><BR>In this way, the 
    step length will change to 0.7 of the previous<BR>value every time that the 
    gradient changes directions. <BR><BR>You will get a lot of insight about the 
    registration process<BR>by plotting the trace of the translation in 3D. This 
    will<BR>show you how much the Transform is changing at every 
    iteration.<BR>This is not clearly conveyed just by looking at the numbers. 
    <BR><BR>You will find the 2D version of many of these types of plots<BR>in 
    the ITK Software Guide,<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<A 
    href="http://www.itk.org/ItkSoftwareGuide.pdf">http://www.itk.org/ItkSoftwareGuide.pdf</A><BR><BR><BR>Note 
    that it is not surprising that you get different <BR>results from different 
    optimizers, but before you attempt<BR>to compare the results you should make 
    sure that you are<BR>actually using both optimizers in their best settings 
    and<BR>conditions. Otherwise it is just a bias and unfair 
    <BR>comparison.<BR><BR><BR><BR>&nbsp;&nbsp;Regards,<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
    Luis<BR><BR><BR><BR>=================<BR>Ming Chao wrote:<BR>&gt; 
    Hi,<BR>&gt;<BR>&gt; When I used Regular Step Gradient Descent optimizer to 
    register two<BR>&gt; images I saw an abnormal behavior. The metric value 
    first decreased but <BR>&gt; after some iterations it became larger. See the 
    following output:<BR>&gt;<BR>&gt; 0&nbsp;&nbsp; -0.835581&nbsp;&nbsp; 
    [-0.00321978, -0.0466639, 0.0883861]<BR>&gt; 1&nbsp;&nbsp; 
    -0.836504&nbsp;&nbsp; [-0.00422488, -0.0933436, 0.176817]<BR>&gt; 
    2&nbsp;&nbsp; -0.83737 &nbsp;&nbsp; [-0.00293453, -0.139983, 
    0.265265]<BR>&gt; 3&nbsp;&nbsp; -0.838174&nbsp;&nbsp; [0.000731481, 
    -0.18652, 0.353701]<BR>&gt; 4&nbsp;&nbsp; -0.838908&nbsp;&nbsp; [0.00685175, 
    -0.232884, 0.442092]<BR>&gt; 5&nbsp;&nbsp; -0.839563&nbsp;&nbsp; [0.015502, 
    -0.278993, 0.530404]<BR>&gt; 6&nbsp;&nbsp; - 0.840129&nbsp;&nbsp; 
    [0.0267537, -0.32476, 0.618602]<BR>&gt; 7&nbsp;&nbsp; -0.840598&nbsp;&nbsp; 
    [0.0406717, -0.370081, 0.706649]<BR>&gt; 8&nbsp;&nbsp; -0.84096&nbsp;&nbsp; 
    [ 0.0573129, -0.414844, 0.794509]<BR>&gt; 9&nbsp;&nbsp; -0.84121&nbsp;&nbsp; 
    [0.0767229, -0.458919, 0.882148]<BR>&gt; 10&nbsp;&nbsp; - 
    0.841343&nbsp;&nbsp; [0.0989338, -0.50216, 0.969537]<BR>&gt; 11&nbsp;&nbsp; 
    -0.841358&nbsp;&nbsp; [0.123961, -0.544401, 1.05665]<BR>&gt; 12&nbsp;&nbsp; 
    -0.841256&nbsp;&nbsp; [0.151799, -0.58545 , 1.14349]<BR>&gt; 13&nbsp;&nbsp; 
    -0.841041&nbsp;&nbsp; [0.182419, -0.625084, 1.23004]<BR>&gt; 14&nbsp;&nbsp; 
    - 0.840719&nbsp;&nbsp; [0.215761, -0.663034, 1.31634]<BR>&gt; 15&nbsp;&nbsp; 
    -0.840298&nbsp;&nbsp; [0.214669, -0.680096, 1.41487]<BR>&gt; 16&nbsp;&nbsp; 
    -0.839375&nbsp;&nbsp; [0.216594, -0.696938, 1.51342]<BR>&gt; 17&nbsp;&nbsp; 
    - 0.838339&nbsp;&nbsp; [0.221686, -0.713544, 1.6119]<BR>&gt; 18&nbsp;&nbsp; 
    - 0.837215&nbsp;&nbsp; [0.230089, -0.729893, 1.7102]<BR>&gt; 19&nbsp;&nbsp; 
    -0.836032&nbsp;&nbsp; [0.241937, -0.74596, 1.80819]<BR>&gt; 20&nbsp;&nbsp; 
    -0.83482&nbsp;&nbsp; [0.257347, -0.76171, 1.90573]<BR>&gt; 21&nbsp;&nbsp; 
    -0.833613&nbsp;&nbsp; [0.276409, - 0.7771, 2.00268]<BR>&gt; 22&nbsp;&nbsp; 
    -0.832445 &nbsp;&nbsp; [0.299184, -0.792076, 2.09889]<BR>&gt; 23&nbsp;&nbsp; 
    -0.831349&nbsp;&nbsp; [0.325688, -0.806571, 2.19422]<BR>&gt; 24&nbsp;&nbsp; 
    -0.830357&nbsp;&nbsp; [0.35589, -0.820502, 2.28853]<BR>&gt; 25&nbsp;&nbsp; 
    -0.829494&nbsp;&nbsp; [0.389705, -0.833768, 2.3817]<BR>&gt; 26&nbsp;&nbsp; 
    -0.828783 &nbsp;&nbsp; [0.426981, -0.84624, 2.47365]<BR>&gt; 27&nbsp;&nbsp; 
    -0.828236&nbsp;&nbsp; [0.467495, -0.857749, 2.56435]<BR>&gt; 28&nbsp;&nbsp; 
    -0.827859&nbsp;&nbsp; [0.510938, -0.868055, 2.65383]<BR>&gt; 29&nbsp;&nbsp; 
    -0.827633&nbsp;&nbsp; [0.556896, -0.876774, 2.74221]<BR>&gt; 30&nbsp;&nbsp; 
    -0.827525 &nbsp;&nbsp; [ 0.60475, -0.883034, 2.8298]<BR>&gt; 31&nbsp;&nbsp; 
    -0.827502&nbsp;&nbsp; [0.650812, -0.875321, 2.91822]<BR>&gt; 32&nbsp;&nbsp; 
    -0.827512&nbsp;&nbsp; [0.629235, -0.881114, 2.87349]<BR>&gt; 33&nbsp;&nbsp; 
    -0.827519&nbsp;&nbsp; [0.603546, -0.883645, 2.83067]<BR>&gt; 34&nbsp;&nbsp; 
    -0.827483 &nbsp;&nbsp; [0.620407, -0.880267 , 2.84881]<BR>&gt; 
    35&nbsp;&nbsp; -0.827564&nbsp;&nbsp; [0.608674, -0.882388, 2.84506]<BR>&gt; 
    36&nbsp;&nbsp; -0.827459&nbsp;&nbsp; [0.613038, -0.88246, 2.84059]<BR>&gt; 
    37&nbsp;&nbsp; -0.827529&nbsp;&nbsp; [0.610107, -0.882339, 2.84166]<BR>&gt; 
    38&nbsp;&nbsp; -0.827493 &nbsp;&nbsp; [0.611332, -0.882386, 
    2.8407]<BR>&gt;<BR>&gt; However, if I change the optimizer to the LBFGSB 
    optimizer, I got the<BR>&gt; following output:<BR>&gt;<BR>&gt; 0&nbsp;&nbsp; 
    -0.840282&nbsp;&nbsp; [-0.0321978, -0.466639, 0.883861]<BR>&gt; 
    1&nbsp;&nbsp; - 0.840732&nbsp;&nbsp; [0.0493198, -0.53362, 1.01199]<BR>&gt; 
    2&nbsp;&nbsp; -0.840735&nbsp;&nbsp; [0.0592661, -0.540774, 1.03432]<BR>&gt; 
    3&nbsp;&nbsp; -0.840751&nbsp;&nbsp; [0.100359, -0.570829, 
    1.11035]<BR>&gt;<BR>&gt; This looks reasonable. The setup for the 
    registration is the following: 
    <BR>&gt;<BR>&gt;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;typedef 
    itk::BSplineInterpolateImageFunction&lt;ImageType, double &gt;<BR>&gt; 
    InterpolatorType;<BR>&gt;&nbsp;&nbsp; typedef 
    itk::ImageRegistrationMethod&lt;ImageType, ImageType &gt;<BR>&gt; 
    RegistrationType; <BR>&gt;<BR>&gt;&nbsp;&nbsp; typedef<BR>&gt; 
    itk::NormalizedCorrelationImageToImageMetric&lt;ImageType,ImageType 
    &gt;<BR>&gt; MetricType;<BR>&gt;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp; typedef 
    itk::TranslationTransform&lt; double, Dimension &gt;<BR>&gt; TransformType; 
    <BR>&gt;<BR>&gt; Can anybody tell me why I have so different results with 
    different<BR>&gt; optimizers?<BR>&gt;<BR>&gt; Thanks,<BR>&gt;<BR>&gt; 
    Ming<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt; 
    ------------------------------------------------------------------------ 
    <BR>&gt;<BR>&gt; _______________________________________________<BR>&gt; 
    Insight-users mailing list<BR>&gt; <A 
    href="mailto:Insight-users@itk.org">Insight-users@itk.org</A><BR>&gt; <A 
    href="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</A><BR><BR><BR></BLOCKQUOTE></DIV><BR></BLOCKQUOTE></BODY></HTML>