[ITK] Determinism & Registration v4
Lowekamp, Bradley (NIH/NLM/LHC) [C]
blowekamp at mail.nih.gov
Wed Mar 15 09:05:54 EDT 2017
Hello,
> Is it possible to get a determinist pipeline ?
Yes. There are two known sources of non-determinism. The first is where pseudo-random number generation is used and the second can be more subtle with multi-threading and non-commutative floating point operations.
With the recent 4.11 release there has been significant improvements in the available usage of seed for pseudo-random number generation. With the 4.11 release the seeds are now initialized with the wall-clock, which would give non-deterministic behavior. Additionally, methods were added to registration components which used the MersenneTwisterRandomVariateGenerator fro pseudo-random number generation to allow manually setting the seed for deterministic behavior.
Specifically, in the ImageRegistrationMethodv4 a seed was exposed for sampling for the metric[1]. This is used for both the REGULAR and RANDOM sampling[2].
Also, there is some usage of the pseudo-random number generation for the sampling certain cases. Recently the method used for affine transforms changed to be deterministic [3].
Lastly regarding multi-threading non-determinism, just using one thread is the simple work around. But there is also an experimental method SetFloaringPointCorrectionResolution which may help [4] determinism and portability.
HTH,
Brad
[1] https://itk.org/Doxygen/html/classitk_1_1ImageRegistrationMethodv4.html#ab1ae25c0b7ef720a7743c3c828eeca6c
[2] https://github.com/InsightSoftwareConsortium/ITK/blob/1b666d295bdb39ba174b381f20c91df4ecb00849/Modules/Registration/RegistrationMethodsv4/include/itkImageRegistrationMethodv4.hxx#L954-L1032
[3] https://github.com/InsightSoftwareConsortium/ITK/commit/99a7ac8f3ab88cdc508084e4921f0f4c9678468b
[4] https://itk.org/Doxygen/html/classitk_1_1ImageToImageMetricv4.html#a341ca404fc872698f3225e3e8361149b
> On Mar 15, 2017, at 5:54 AM, Timothee Evain <tevain at telecom-paristech.fr> wrote:
>
> Hi everyone,
>
> A small question about the registration v4 framework:
> Is it possible to get a determinist pipeline ?
> I use the Mattes mutual information combined with the Regular step gradient descent and my problem is that each run produce a different parameter set.
> The deviation is really small, but I expected to see same results with same inputs.
> I was testing with the REGULAR sampling strategy at first, but there is a random perturbation of the point picking in the code, so I tried with dense sampling, but here again, the results are varying.
> Is that an expected behavior ?
>
> Tim
> _______________________________________________
> Community mailing list
> Community at itk.org
> http://public.kitware.com/mailman/listinfo/community
More information about the Community
mailing list