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