Brad,

That is an interesting question - how to decide step sizes near the optimum solution. Probably we need to consider the stopping criteria in ITK (ex. on metric gradient, parameter changes, etc). Thanks!

Bao

On 5/27/2014 8:26 AM, Bradley Lowekamp wrote:
Hello,

Thanks for the info. Overall I was very impressed with the robustness of the 
scales estimate.

Except one trivial case! An Estimator is also used to estimate the learning 
rate ( indirect step size ). For the trivial cast of the same image (cthead1), 
and an identity translation transform so we are already at presumable an 
optimal local minima, the estimated learning rate blows up yielding a super 
sonic step size. I would think the case of being at a minimum should warrant 
special handling by the estimators as we can hope this is the case for 
multi-resolution. Any thoughts on this situation?

Are there parameters in the optimizer/estimator to account for this? I saw the gradient 
descent based optimizers have a "MaximumStepSizeInPhysicalUnits" which looks 
like is may bound this learning rate/step size.

Thanks,
Brad

On May 23, 2014, at 11:07 AM, Baohua Wu <[email protected]> wrote:

Brad,

I might miss something since there has been a lot of code changes after I 
worked on it years ago. Here is my understanding after reviewing some code 
about sampling strategy.

RegistrationParameterScalesEstimator< TMetric >
::SetScalesSamplingStrategy()
{
  if( this->m_VirtualDomainPointSet )
    {
    this->SetSamplingStrategy(VirtualDomainPointSetSampling);
    }
  else if( this->TransformHasLocalSupportForScalesEstimation() )
    {
    this->SetSamplingStrategy(CentralRegionSampling);
    }
  else if (this->CheckGeneralAffineTransform())
    {
    this->SetSamplingStrategy(CornerSampling);
    }
  else
    {
    this->SetSamplingStrategy(RandomSampling);
    this->SetNumberOfRandomSamples( SizeOfSmallDomain );
    }
}

1) Currently SetSamplingStrategy is already protected, but 
SetScalesSamplingStrategy is public. Should SetScalesSamplingStrategy should be 
protected as well? Probably yes if it is always called internally.

2) I think FromShiftBased may use CentralRegionSampling. As the code above 
shows, it depends on the properties of the transform.

3) Your parameters looks right. Please keep in mind that m_CentralRegionRadius 
for voxel indices, and m_SmallParameterVariation is for a small parameter step 
in computing transform changes. m_SmallParameterVariation will be normalized in 
most cases.

Thank you!

Bao

On 5/22/2014 9:08 AM, brian avants wrote:
i believe these questions might best be answered by michael stauffer
and baohua wu, both cc'd.

brian




On Thu, May 22, 2014 at 8:41 AM, Bradley Lowekamp
<[email protected]> wrote:
Nick,

We are working on ITKv4 Registration for SimpleITK. I am adding some methods 
for the Scales Estimators. This is what I currently have:

     Self& SetOptimizerScales( const std::vector<double> &scales);
     Self& SetOptimizerScalesFromJacobian(unsigned int centralRegionRadius = 5 
);
     Self& SetOptimizerScalesFromIndexShift(unsigned int centralRegionRadius = 
5,
                                            double smallParameterVariation =  
0.01 );
     Self& SetOptimizerScalesFromPhysicalShift(unsigned int centralRegionRadius 
= 5,
                                               double smallParameterVariation = 
 0.01 );


I have a couple questions:

1) Despite the some public methods to set the SamplingStrategy, this is really 
set by the implementation of the estimator is not not configurable for any 
estimator? ( Should these methods[1][2] actually be protected?)
2) I can't seem to determine if the FromShiftBased estimators actually use the 
centralRegionRadius, is that actually used?
3) Those parameters look right? missing anything?

Thanks,
Brad

[1] 
http://www.itk.org/Doxygen/html/classitk_1_1RegistrationParameterScalesEstimator.html#a28bda2ed3551af2cacb30b6920180881
[2] 
http://www.itk.org/Doxygen/html/classitk_1_1RegistrationParameterScalesEstimator.html#aa7f519d80e0cabe7d25de1ae6f287cc4
_______________________________________________
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.php

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

_______________________________________________
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.php

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

Reply via email to