Open gdevenyi opened 5 years ago
Same errors using the example code:
import SimpleITK as sitk
...: import disptools.displacements as dsp
...: import disptools.drawing as drw
...:
...: # Create an example Jacobian map
...: # A spherical ROI with a Jacobian of 1.1 (expansion)
...: jacobian = drw.create_sphere(10, 40, fg_val=1.1, bg_val=1.0)
...:
...: # Create a binary mask for the ROI
...: mask = drw.create_sphere(10, 40) > 0
...:
...: # Generate the displacement
...: displacement = dsp.displacement(jacobian, mask=mask)
INFO:root:Size (42, 42, 42)
Iteration 0: total error 4.169057e+01 max voxel error 1.000000e-01 eta 1.000000e-01
Iteration 1: total error 3.767800e+01 max voxel error 1.025000e-01 eta 1.000000e-01
Iteration 2: total error 3.416297e+01 max voxel error 1.013584e-01 eta 1.200000e-01
Iteration 3: total error 3.095255e+01 max voxel error 1.014295e-01 eta 1.440000e-01
Iteration 4: total error 2.792110e+01 max voxel error 1.006818e-01 eta 1.728000e-01
Iteration 5: total error 2.499454e+01 max voxel error 1.006704e-01 eta 2.073600e-01
Iteration 6: total error 2.213361e+01 max voxel error 1.003411e-01 eta 2.488321e-01
Iteration 7: total error 1.932155e+01 max voxel error 1.003936e-01 eta 2.985985e-01
Iteration 8: total error 1.655839e+01 max voxel error 1.004028e-01 eta 3.583182e-01
Iteration 9: total error 1.403733e+01 max voxel error 1.003130e-01 eta 4.000000e-01
Iteration 10: total error 1.195901e+01 max voxel error 9.935379e-02 eta 4.000000e-01
Iteration 11: total error 1.022061e+01 max voxel error 9.723294e-02 eta 4.000000e-01
Iteration 12: total error 8.776272e+00 max voxel error 9.405363e-02 eta 4.000000e-01
Iteration 13: total error 7.571195e+00 max voxel error 9.007967e-02 eta 4.000000e-01
Iteration 14: total error 6.538893e+00 max voxel error 8.557022e-02 eta 4.000000e-01
Iteration 15: total error 5.663041e+00 max voxel error 8.078063e-02 eta 4.000000e-01
Iteration 16: total error 4.950387e+00 max voxel error 7.598853e-02 eta 4.000000e-01
Iteration 17: total error 4.533962e+00 max voxel error 7.119632e-02 eta 4.000000e-01
Iteration 18: total error 4.025313e+00 max voxel error 6.919014e-02 eta 2.000000e-01
Iteration 19: total error 3.686731e+00 max voxel error 6.594694e-02 eta 2.400000e-01
Iteration 20: total error 3.406360e+00 max voxel error 6.345820e-02 eta 2.880000e-01
Iteration 21: total error 3.074172e+00 max voxel error 6.102419e-02 eta 1.728000e-01
Iteration 22: total error 2.842756e+00 max voxel error 5.918205e-02 eta 2.073600e-01
Iteration 23: total error 2.606036e+00 max voxel error 5.721033e-02 eta 2.488320e-01
Iteration 24: total error 2.370334e+00 max voxel error 5.386865e-02 eta 2.985985e-01
Iteration 25: total error 2.232203e+00 max voxel error 5.972445e-02 eta 3.583182e-01
Iteration 26: total error 1.999063e+00 max voxel error 5.338156e-02 eta 2.000000e-01
Iteration 27: total error 1.854095e+00 max voxel error 5.627108e-02 eta 2.400000e-01
Iteration 28: total error 1.671549e+00 max voxel error 4.551816e-02 eta 1.440000e-01
Iteration 29: total error 1.569178e+00 max voxel error 4.408491e-02 eta 1.728000e-01
Iteration 30: total error 1.458386e+00 max voxel error 4.253674e-02 eta 2.073600e-01
Iteration 31: total error 1.336401e+00 max voxel error 4.067469e-02 eta 2.488320e-01
Iteration 32: total error 1.204530e+00 max voxel error 3.862584e-02 eta 2.985985e-01
Iteration 33: total error 1.071164e+00 max voxel error 4.079080e-02 eta 3.583182e-01
Iteration 34: total error 9.958804e-01 max voxel error 4.588461e-02 eta 4.000000e-01
Iteration 35: total error 8.992261e-01 max voxel error 4.383492e-02 eta 2.000000e-01
Iteration 36: total error 8.386999e-01 max voxel error 4.145873e-02 eta 2.400000e-01
Iteration 37: total error 7.523102e-01 max voxel error 3.235316e-02 eta 1.440000e-01
Iteration 38: total error 7.060592e-01 max voxel error 2.961183e-02 eta 1.728000e-01
Iteration 39: total error 6.565093e-01 max voxel error 2.854609e-02 eta 2.073600e-01
Iteration 40: total error 6.019614e-01 max voxel error 2.735507e-02 eta 2.488320e-01
Iteration 41: total error 5.433196e-01 max voxel error 2.726245e-02 eta 2.985985e-01
Iteration 42: total error 4.868629e-01 max voxel error 2.821720e-02 eta 3.583182e-01
Iteration 43: total error 4.504502e-01 max voxel error 2.740490e-02 eta 2.000000e-01
Iteration 44: total error 4.161237e-01 max voxel error 2.565706e-02 eta 2.400000e-01
Iteration 45: total error 3.869427e-01 max voxel error 3.000963e-02 eta 2.880000e-01
Iteration 46: total error 3.528799e-01 max voxel error 2.301490e-02 eta 1.728000e-01
Iteration 47: total error 3.272822e-01 max voxel error 2.282906e-02 eta 2.073600e-01
Iteration 48: total error 3.018977e-01 max voxel error 2.167249e-02 eta 2.488320e-01
Iteration 49: total error 2.805161e-01 max voxel error 2.583516e-02 eta 2.985985e-01
Iteration 50: total error 2.560512e-01 max voxel error 2.018666e-02 eta 1.791591e-01
Iteration 51: total error 2.371749e-01 max voxel error 2.032828e-02 eta 2.149909e-01
Iteration 52: total error 2.194462e-01 max voxel error 1.985490e-02 eta 2.579891e-01
Iteration 53: total error 2.095271e-01 max voxel error 2.524257e-02 eta 3.095869e-01
Iteration 54: total error 1.872542e-01 max voxel error 1.953423e-02 eta 1.857522e-01
Iteration 55: total error 1.735517e-01 max voxel error 2.013683e-02 eta 2.229026e-01
Iteration 56: total error 1.650538e-01 max voxel error 2.091348e-02 eta 2.674831e-01
Iteration 57: total error 1.459152e-01 max voxel error 1.617503e-02 eta 1.604899e-01
Iteration 58: total error 1.354755e-01 max voxel error 1.369357e-02 eta 1.925879e-01
Iteration 59: total error 1.252622e-01 max voxel error 1.422763e-02 eta 2.311054e-01
Iteration 60: total error 1.153871e-01 max voxel error 1.431632e-02 eta 2.773266e-01
Iteration 61: total error 1.111862e-01 max voxel error 1.922667e-02 eta 3.327919e-01
Iteration 62: total error 1.000900e-01 max voxel error 1.576006e-02 eta 1.996751e-01
Iteration 63: total error 9.449227e-02 max voxel error 1.739705e-02 eta 2.396102e-01
Iteration 64: total error 8.249310e-02 max voxel error 1.054764e-02 eta 1.437661e-01
Iteration 65: total error 7.729201e-02 max voxel error 9.918809e-03 eta 1.725193e-01
Iteration 66: total error 7.190663e-02 max voxel error 9.577870e-03 eta 2.070232e-01
Iteration 67: total error 6.603608e-02 max voxel error 9.180546e-03 eta 2.484279e-01
Iteration 68: total error 5.987564e-02 max voxel error 9.067178e-03 eta 2.981134e-01
Iteration 69: total error 5.492738e-02 max voxel error 1.168847e-02 eta 3.577361e-01
Iteration 70: total error 5.042106e-02 max voxel error 9.806991e-03 eta 2.000000e-01
Iteration 71: total error 4.698703e-02 max voxel error 1.066899e-02 eta 2.400000e-01
Iteration 72: total error 4.569136e-02 max voxel error 1.191223e-02 eta 2.880000e-01
Iteration 73: total error 3.975906e-02 max voxel error 9.537816e-03 eta 1.728000e-01
Iteration 74: total error 3.669360e-02 max voxel error 8.260846e-03 eta 2.073600e-01
Iteration 75: total error 3.426506e-02 max voxel error 9.210110e-03 eta 2.488320e-01
Iteration 76: total error 3.121822e-02 max voxel error 6.338596e-03 eta 1.492992e-01
Iteration 77: total error 2.924658e-02 max voxel error 6.145716e-03 eta 1.791591e-01
Iteration 78: total error 2.714594e-02 max voxel error 5.926371e-03 eta 2.149909e-01
Iteration 79: total error 2.486176e-02 max voxel error 5.668283e-03 eta 2.579891e-01
Iteration 80: total error 2.251615e-02 max voxel error 5.723476e-03 eta 3.095869e-01
Iteration 81: total error 2.101993e-02 max voxel error 7.849813e-03 eta 3.715043e-01
Iteration 82: total error 1.914391e-02 max voxel error 6.500483e-03 eta 2.000000e-01
Iteration 83: total error 1.797470e-02 max voxel error 7.173181e-03 eta 2.400000e-01
Iteration 84: total error 1.605218e-02 max voxel error 4.565716e-03 eta 1.440000e-01
Iteration 85: total error 1.505964e-02 max voxel error 4.431844e-03 eta 1.728000e-01
Iteration 86: total error 1.401156e-02 max voxel error 4.279256e-03 eta 2.073600e-01
Iteration 87: total error 1.286449e-02 max voxel error 4.099846e-03 eta 2.488320e-01
Iteration 88: total error 1.165263e-02 max voxel error 3.896594e-03 eta 2.985985e-01
Iteration 89: total error 1.063008e-02 max voxel error 4.980206e-03 eta 3.583182e-01
Iteration 90: total error 9.785049e-03 max voxel error 4.189849e-03 eta 2.000000e-01
Iteration 91: total error 9.108164e-03 max voxel error 4.563332e-03 eta 2.400000e-01
Iteration 92: total error 8.791749e-03 max voxel error 5.093813e-03 eta 2.880000e-01
Iteration 93: total error 7.721302e-03 max voxel error 4.094362e-03 eta 1.728000e-01
Iteration 94: total error 7.134668e-03 max voxel error 3.551364e-03 eta 2.073600e-01
Iteration 95: total error 6.654064e-03 max voxel error 3.966689e-03 eta 2.488320e-01
Iteration 96: total error 6.083455e-03 max voxel error 2.832294e-03 eta 1.492992e-01
Iteration 97: total error 5.700232e-03 max voxel error 2.746224e-03 eta 1.791591e-01
Iteration 98: total error 5.290784e-03 max voxel error 2.647996e-03 eta 2.149909e-01
Iteration 99: total error 4.845709e-03 max voxel error 2.532721e-03 eta 2.579891e-01
Iteration 100: total error 4.387955e-03 max voxel error 2.478957e-03 eta 3.095869e-01
Iteration 101: total error 4.090753e-03 max voxel error 3.423452e-03 eta 3.715043e-01
Iteration 102: total error 3.729813e-03 max voxel error 2.833486e-03 eta 2.000000e-01
Iteration 103: total error 3.502598e-03 max voxel error 3.136992e-03 eta 2.400000e-01
Iteration 104: total error 3.131138e-03 max voxel error 2.039075e-03 eta 1.440000e-01
Iteration 105: total error 2.937867e-03 max voxel error 1.979232e-03 eta 1.728000e-01
Iteration 106: total error 2.733764e-03 max voxel error 1.910806e-03 eta 2.073600e-01
Iteration 107: total error 2.510424e-03 max voxel error 1.830578e-03 eta 2.488320e-01
Iteration 108: total error 2.274750e-03 max voxel error 1.739502e-03 eta 2.985985e-01
Iteration 109: total error 2.077749e-03 max voxel error 2.196074e-03 eta 3.583182e-01
Iteration 110: total error 1.912354e-03 max voxel error 1.845837e-03 eta 2.000000e-01
Iteration 111: total error 1.781420e-03 max voxel error 2.017498e-03 eta 2.400000e-01
Iteration 112: total error 1.724724e-03 max voxel error 2.268910e-03 eta 2.880000e-01
Iteration 113: total error 1.510800e-03 max voxel error 1.813650e-03 eta 1.728000e-01
Iteration 114: total error 1.395920e-03 max voxel error 1.572967e-03 eta 2.073600e-01
Iteration 115: total error 1.303507e-03 max voxel error 1.764655e-03 eta 2.488320e-01
Iteration 116: total error 1.189269e-03 max voxel error 1.263261e-03 eta 1.492992e-01
Iteration 117: total error 1.114294e-03 max voxel error 1.224756e-03 eta 1.791591e-01
Iteration 118: total error 1.034320e-03 max voxel error 1.180887e-03 eta 2.149909e-01
Iteration 119: total error 9.474029e-04 max voxel error 1.129270e-03 eta 2.579891e-01
Iteration 120: total error 8.584728e-04 max voxel error 1.101971e-03 eta 3.095869e-01
Iteration 121: total error 8.041012e-04 max voxel error 1.541734e-03 eta 3.715043e-01
Iteration 122: total error 7.319092e-04 max voxel error 1.273990e-03 eta 2.000000e-01
Iteration 123: total error 6.885864e-04 max voxel error 1.415610e-03 eta 2.400000e-01
Iteration 124: total error 6.122192e-04 max voxel error 9.086132e-04 eta 1.440000e-01
Iteration 125: total error 5.741921e-04 max voxel error 8.819103e-04 eta 1.728000e-01
Iteration 126: total error 5.342650e-04 max voxel error 8.512735e-04 eta 2.073600e-01
Iteration 127: total error 4.906646e-04 max voxel error 8.155107e-04 eta 2.488320e-01
Iteration 128: total error 4.448291e-04 max voxel error 7.748604e-04 eta 2.985985e-01
Iteration 129: total error 4.078433e-04 max voxel error 9.934902e-04 eta 3.583182e-01
Iteration 130: total error 3.748271e-04 max voxel error 8.329153e-04 eta 2.000000e-01
Iteration 131: total error 3.496422e-04 max voxel error 9.136200e-04 eta 2.400000e-01
Iteration 132: total error 3.192622e-04 max voxel error 6.587505e-04 eta 1.440000e-01
Iteration 133: total error 2.999855e-04 max voxel error 6.394386e-04 eta 1.728000e-01
Iteration 134: total error 2.791558e-04 max voxel error 6.172657e-04 eta 2.073600e-01
Iteration 135: total error 2.562579e-04 max voxel error 5.912781e-04 eta 2.488320e-01
Iteration 136: total error 2.317804e-04 max voxel error 5.617142e-04 eta 2.985985e-01
Iteration 137: total error 2.093210e-04 max voxel error 6.505251e-04 eta 3.583182e-01
Iteration 138: total error 1.935454e-04 max voxel error 5.528927e-04 eta 2.000000e-01
Iteration 139: total error 1.795989e-04 max voxel error 5.990267e-04 eta 2.400000e-01
Iteration 140: total error 1.702814e-04 max voxel error 6.593466e-04 eta 2.880000e-01
Iteration 141: total error 1.525659e-04 max voxel error 5.408525e-04 eta 1.728000e-01
Iteration 142: total error 1.412938e-04 max voxel error 4.721880e-04 eta 2.073600e-01
Terminating: reached desired tolerance.
In [2]: displacement = dsp.displacement(jacobian, mask=mask, gpu_id=0)
INFO:root:Size (42, 42, 42)
Iteration 0: total error 4.169001e+01 max voxel error 1.000000e-01 eta 1.000000e-01
Iteration 1: total error 3.767780e+01 max voxel error 1.025000e-01 eta 1.000000e-01
Iteration 2: total error 3.416287e+01 max voxel error 1.013584e-01 eta 1.200000e-01
Iteration 3: total error 3.095257e+01 max voxel error 1.014295e-01 eta 1.440000e-01
Iteration 4: total error 2.792105e+01 max voxel error 1.006818e-01 eta 1.728000e-01
Iteration 5: total error 2.499453e+01 max voxel error 1.006704e-01 eta 2.073600e-01
Iteration 6: total error 2.213363e+01 max voxel error 1.003411e-01 eta 2.488321e-01
Iteration 7: total error 1.932154e+01 max voxel error 1.003936e-01 eta 2.985985e-01
Iteration 8: total error 1.655835e+01 max voxel error 1.004028e-01 eta 3.583182e-01
Iteration 9: total error 1.403731e+01 max voxel error 1.003130e-01 eta 4.000000e-01
Iteration 10: total error 1.195903e+01 max voxel error 9.935379e-02 eta 4.000000e-01
Iteration 11: total error 1.022061e+01 max voxel error 9.723294e-02 eta 4.000000e-01
Iteration 12: total error 8.776262e+00 max voxel error 9.405363e-02 eta 4.000000e-01
Iteration 13: total error 7.571187e+00 max voxel error 9.007967e-02 eta 4.000000e-01
Iteration 14: total error 6.538883e+00 max voxel error 8.557022e-02 eta 4.000000e-01
Iteration 15: total error 5.663037e+00 max voxel error 8.078063e-02 eta 4.000000e-01
Iteration 16: total error 4.950373e+00 max voxel error 7.598853e-02 eta 4.000000e-01
Iteration 17: total error 4.533884e+00 max voxel error 7.119620e-02 eta 4.000000e-01
Iteration 18: total error 4.025270e+00 max voxel error 6.919026e-02 eta 2.000000e-01
Iteration 19: total error 3.686694e+00 max voxel error 6.594682e-02 eta 2.400000e-01
Iteration 20: total error 3.406293e+00 max voxel error 6.345832e-02 eta 2.880000e-01
Iteration 21: total error 3.074154e+00 max voxel error 6.102419e-02 eta 1.728000e-01
Iteration 22: total error 2.842746e+00 max voxel error 5.918205e-02 eta 2.073600e-01
Iteration 23: total error 2.606024e+00 max voxel error 5.720484e-02 eta 2.488320e-01
Iteration 24: total error 2.370300e+00 max voxel error 5.386865e-02 eta 2.985985e-01
Iteration 25: total error 2.232041e+00 max voxel error 5.970454e-02 eta 3.583182e-01
Iteration 26: total error 1.998966e+00 max voxel error 5.336559e-02 eta 2.000000e-01
Iteration 27: total error 1.853985e+00 max voxel error 5.625379e-02 eta 2.400000e-01
Iteration 28: total error 1.671541e+00 max voxel error 4.551816e-02 eta 1.440000e-01
Iteration 29: total error 1.569177e+00 max voxel error 4.408491e-02 eta 1.728000e-01
Iteration 30: total error 1.458385e+00 max voxel error 4.253662e-02 eta 2.073600e-01
Iteration 31: total error 1.336399e+00 max voxel error 4.067469e-02 eta 2.488320e-01
Iteration 32: total error 1.204527e+00 max voxel error 3.862596e-02 eta 2.985985e-01
Iteration 33: total error 1.071142e+00 max voxel error 4.078305e-02 eta 3.583182e-01
Iteration 34: total error 9.957523e-01 max voxel error 4.586542e-02 eta 4.000000e-01
Iteration 35: total error 8.991528e-01 max voxel error 4.382002e-02 eta 2.000000e-01
Iteration 36: total error 8.386085e-01 max voxel error 4.144216e-02 eta 2.400000e-01
Iteration 37: total error 7.523035e-01 max voxel error 3.234839e-02 eta 1.440000e-01
Iteration 38: total error 7.060565e-01 max voxel error 2.961183e-02 eta 1.728000e-01
Iteration 39: total error 6.565081e-01 max voxel error 2.854609e-02 eta 2.073600e-01
Iteration 40: total error 6.019588e-01 max voxel error 2.735507e-02 eta 2.488320e-01
Iteration 41: total error 5.435179e-01 max voxel error 2.725828e-02 eta 2.985985e-01
Iteration 42: total error 4.870992e-01 max voxel error 2.820861e-02 eta 3.583182e-01
Iteration 43: total error 4.506922e-01 max voxel error 2.739799e-02 eta 2.000000e-01
Iteration 44: total error 4.163606e-01 max voxel error 2.564979e-02 eta 2.400000e-01
Iteration 45: total error 3.896616e-01 max voxel error 2.203810e-02 eta 1.440000e-01
Iteration 46: total error 3.666542e-01 max voxel error 2.140462e-02 eta 1.728000e-01
Iteration 47: total error 3.412113e-01 max voxel error 2.065063e-02 eta 2.073600e-01
Iteration 48: total error 3.130282e-01 max voxel error 1.979148e-02 eta 2.488320e-01
Iteration 49: total error 3.050168e-01 max voxel error 1.954150e-02 eta 7.464962e-02
Iteration 50: total error 3.050168e-01 max voxel error 1.954150e-02 eta 6.674196e-10
Error not decreasing, terminating.
Hi Gabriel, thanks for reporting this issue, and thanks for the detailed logs! It seems the GPU implementation of the gradient
algorithm has some bug. The figures in the output do not add up either, I will need to look into this.
I mainly use the greedy
algorithm, so I had invested less effort into extensive testing of the gradient
after porting it to the GPU. (In retrospective, it was a mistake on my side to leave it as the default algorithm.)
Indeed looks like greedy works for me.
Contingent on #1 I don't really care which algorithm I end up using :)
Running on anaconda:
With disptools installed via pip, with cuda enabled:
And nvidia-430, cuda-10-1, on Ubuntu 14.04.5
Running in CPU mode:
But fails with cuda: