18#ifndef elxAdaptiveStochasticVarianceReducedGradient_h
19#define elxAdaptiveStochasticVarianceReducedGradient_h
26#include "itkMersenneTwisterRandomVariateGenerator.h"
29#include "itkMultiThreaderBase.h"
192template <
typename TElastix>
220 using Superclass1::CostFunctionType;
221 using Superclass1::CostFunctionPointer;
231 using typename Superclass1::ParametersType;
286 itkSetMacro(MaximumStepLength,
double);
287 itkGetConstMacro(MaximumStepLength,
double);
296 itkGetConstReferenceMacro(MeanGradient, DerivativeType);
305 this->
m_Threader->SetNumberOfWorkUnits(numberOfThreads);
431 static itk::ITK_THREAD_RETURN_TYPE
465#ifndef ITK_MANUAL_INSTANTIATION
466# include "elxAdaptiveStochasticVarianceReducedGradient.hxx"
SizeValueType m_NumberOfJacobianMeasurements
void AdvanceOneStep() override
void AfterEachIteration() override
AdaptiveStochasticVarianceReducedGradientOptimizer Superclass1
OptimizerBase< TElastix > Superclass2
bool m_AutomaticParameterEstimationDone
void ThreadedAdvanceOneStep(ThreadIdType threadId, ParametersType &newPosition)
SizeValueType m_NumberOfInnerLoopSamples
typename ImageSampleContainerType::Pointer ImageSampleContainerPointer
AdaptiveStochasticVarianceReducedGradient()
SizeValueType m_NumberOfGradientMeasurements
itk::ImageRandomCoordinateSampler< FixedImageType > ImageRandomCoordinateSamplerType
void MetricErrorResponse(itk::ExceptionObject &err) override
virtual void AutomaticParameterEstimation()
typename RegistrationType::FixedImageType FixedImageType
SizeValueType m_PreviousErrorAtIteration
itk::ImageRandomSamplerBase< FixedImageType > ImageRandomSamplerBaseType
unsigned int ThreadIdType
void BeforeRegistration() override
virtual void AutomaticParameterEstimationOriginal()
JacobianType TransformJacobianType
virtual void GetScaledDerivativeWithExceptionHandling(const ParametersType ¶meters, DerivativeType &derivative)
SettingsVectorType m_SettingsVector
itk::Statistics::MersenneTwisterRandomVariateGenerator RandomGeneratorType
itkOverrideGetNameOfClassMacro(AdaptiveStochasticVarianceReducedGradient)
itk::ComputeDisplacementDistribution< FixedImageType, TransformType > ComputeDisplacementDistributionType
bool m_UseNoiseCompensation
DerivativeType m_ExactGradient
itk::SizeValueType SizeValueType
void StopOptimization() override
typename Superclass2::ITKBaseType ITKBaseType
AdvancedTransformType::Pointer m_AdvancedTransform
typename JacobianType::ValueType JacobianValueType
void AfterRegistration() override
typename ImageSamplerBaseType::ImageSampleType ImageSampleType
SizeValueType m_MaximumNumberOfSamplingAttempts
typename itkRegistrationType::TransformType TransformType
virtual void SampleGradients(const ParametersType &mu0, double perturbationSigma, double &gg, double &ee)
itk::SmartPointer< const Self > ConstPointer
void SetNumberOfWorkUnits(ThreadIdType numberOfThreads)
itk::SmartPointer< Self > Pointer
typename ImageSamplerBaseType::Pointer ImageSamplerBasePointer
double m_MaximumStepLength
typename FixedImageType::RegionType FixedImageRegionType
ITK_DISALLOW_COPY_AND_MOVE(AdaptiveStochasticVarianceReducedGradient)
typename FixedImageType::IndexType FixedImageIndexType
void StartOptimization() override
typename ImageRandomCoordinateSamplerType::Pointer ImageRandomCoordinateSamplerPointer
static itk::ITK_THREAD_RETURN_TYPE AdvanceOneStepThreaderCallback(void *arg)
SizeValueType m_OutsideIterations
itk::ImageGridSampler< FixedImageType > ImageGridSamplerType
itkStaticConstMacro(MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
itk::AdvancedTransform< CoordinateRepresentationType, Self::FixedImageDimension, Self::MovingImageDimension > AdvancedTransformType
typename ImageRandomSamplerType::Pointer ImageRandomSamplerPointer
bool m_OriginalButSigmoidToDefault
~AdaptiveStochasticVarianceReducedGradient() override=default
SizeValueType m_NumberOfBandStructureSamples
AdaptiveStochasticVarianceReducedGradient Self
typename ImageRadomSampleContainerType::Pointer ImageRadomSampleContainerPointer
typename std::vector< SettingsType > SettingsVectorType
typename FixedImageType::PointType FixedImagePointType
void BeforeEachResolution() override
typename TransformType::JacobianType JacobianType
typename TransformType::ScalarType CoordinateRepresentationType
DerivativeType m_MeanGradient
itkStaticConstMacro(FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
typename ImageRandomSamplerType::ImageSampleContainerType ImageRadomSampleContainerType
typename AdvancedTransformType::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
typename ImageRandomSamplerBaseType::Pointer ImageRandomSamplerBasePointer
typename RegistrationType::ITKBaseType itkRegistrationType
elxClassNameMacro("AdaptiveStochasticVarianceReducedGradient")
bool m_AutomaticParameterEstimation
virtual void AddRandomPerturbation(ParametersType ¶meters, double sigma)
SizeValueType m_CurrentNumberOfSamplingAttempts
typename ImageGridSamplerType::ImageSampleContainerType ImageSampleContainerType
itk::ImageRandomSampler< FixedImageType > ImageRandomSamplerType
SizeValueType m_MaxBandCovSize
typename RegistrationType::MovingImageType MovingImageType
SizeValueType m_NumberOfSamplesForExactGradient
typename ImageGridSamplerType::Pointer ImageGridSamplerPointer
virtual void AutomaticParameterEstimationUsingDisplacementDistribution()
SizeValueType m_NumberOfSpatialSamples
void AfterEachResolution() override
void ResumeOptimization() override
itk::ImageSamplerBase< FixedImageType > ImageSamplerBaseType
double m_SigmoidScaleFactor
typename ElastixType::RegistrationBaseType RegistrationType
itk::Optimizer ITKBaseType
typename std::vector< SettingsType > SettingsVectorType
typename ITKBaseType::ParametersType ParametersType
This class implements a gradient descent optimizer with adaptive gain.
AdaptiveStochasticVarianceReducedGradientOptimizer()
This is a helper class for the automatic parameter estimation of the ASGD optimizer.
Samples image voxels on a regular grid.
VectorDataContainer< ImageSampleType > ImageSampleContainerType
SmartPointer< Self > Pointer
Samples an image by randomly composing a set of physical coordinates.
SmartPointer< Self > Pointer
This class is a base class for any image sampler that randomly picks samples.
SmartPointer< Self > Pointer
Samples randomly some voxels of an image.
SmartPointer< Self > Pointer
This class is a base class for any image sampler.
VectorDataContainer< ImageSampleType > ImageSampleContainerType
ImageSample< InputImageType > ImageSampleType
SmartPointer< Self > Pointer
MultiThreaderBase::Pointer m_Threader
ParametersType * t_NewPosition