[ITK-dev] Scales Estimator

Baohua Wu baowu99 at gmail.com
Wed May 28 17:34:38 EDT 2014


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 <baowu99 at gmail.com> 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
>>> <blowekamp at mail.nih.gov> 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



More information about the Insight-developers mailing list