Merge remote-tracking branch 'origin/HF_spatialtransformer' into HF_spatialtransformer
Browse files- DeepDeformationMapRegistration/main.py +1 -1
- demo/src/gui.py +7 -7
- demo/src/utils.py +0 -2
DeepDeformationMapRegistration/main.py
CHANGED
|
@@ -300,7 +300,6 @@ def main():
|
|
| 300 |
|
| 301 |
LOGGER.info('Applying displacement map...')
|
| 302 |
time_pred_img_start = time.time()
|
| 303 |
-
# pred_image = SpatialTransformer(interp_method='linear', indexing='ij', single_transform=False)([moving_image[np.newaxis, ...], disp_map[np.newaxis, ...]]).eval()
|
| 304 |
pred_image = spatialtransformer_model.predict([moving_image[np.newaxis, ...], disp_map[np.newaxis, ...]])
|
| 305 |
time_pred_img_end = time.time()
|
| 306 |
LOGGER.info(f'\t... done ({time_pred_img_end - time_pred_img_start} s)')
|
|
@@ -313,6 +312,7 @@ def main():
|
|
| 313 |
# disp_map = disp_map_or
|
| 314 |
pred_image = zoom(pred_image, 1 / zoom_factors)
|
| 315 |
pred_image = pad_crop_to_original_shape(pred_image, fixed_image_or.shape, crop_min)
|
|
|
|
| 316 |
LOGGER.info('Done...')
|
| 317 |
|
| 318 |
if args.original_resolution:
|
|
|
|
| 300 |
|
| 301 |
LOGGER.info('Applying displacement map...')
|
| 302 |
time_pred_img_start = time.time()
|
|
|
|
| 303 |
pred_image = spatialtransformer_model.predict([moving_image[np.newaxis, ...], disp_map[np.newaxis, ...]])
|
| 304 |
time_pred_img_end = time.time()
|
| 305 |
LOGGER.info(f'\t... done ({time_pred_img_end - time_pred_img_start} s)')
|
|
|
|
| 312 |
# disp_map = disp_map_or
|
| 313 |
pred_image = zoom(pred_image, 1 / zoom_factors)
|
| 314 |
pred_image = pad_crop_to_original_shape(pred_image, fixed_image_or.shape, crop_min)
|
| 315 |
+
pred_image = np.squeeze(pred_image, axis=-1)
|
| 316 |
LOGGER.info('Done...')
|
| 317 |
|
| 318 |
if args.original_resolution:
|
demo/src/gui.py
CHANGED
|
@@ -20,7 +20,7 @@ class WebUI:
|
|
| 20 |
self.pred_images = []
|
| 21 |
|
| 22 |
# @TODO: This should be dynamically set based on chosen volume size
|
| 23 |
-
self.nb_slider_items =
|
| 24 |
|
| 25 |
self.model_name = model_name
|
| 26 |
self.cwd = cwd
|
|
@@ -60,8 +60,8 @@ class WebUI:
|
|
| 60 |
|
| 61 |
self.fixed_images = load_ct_to_numpy(fixed_image_path)
|
| 62 |
self.moving_images = load_ct_to_numpy(moving_image_path)
|
| 63 |
-
self.pred_images =
|
| 64 |
-
return
|
| 65 |
|
| 66 |
def get_fixed_image(self, k):
|
| 67 |
k = int(k) - 1
|
|
@@ -151,7 +151,7 @@ class WebUI:
|
|
| 151 |
for i in range(self.nb_slider_items):
|
| 152 |
visibility = True if i == 1 else False
|
| 153 |
t = gr.Image(
|
| 154 |
-
visible=visibility, elem_id="model-2d-fixed"
|
| 155 |
).style(
|
| 156 |
height=512,
|
| 157 |
width=512,
|
|
@@ -162,7 +162,7 @@ class WebUI:
|
|
| 162 |
for i in range(self.nb_slider_items):
|
| 163 |
visibility = True if i == 1 else False
|
| 164 |
t = gr.Image(
|
| 165 |
-
visible=visibility, elem_id="model-2d-moving"
|
| 166 |
).style(
|
| 167 |
height=512,
|
| 168 |
width=512,
|
|
@@ -173,7 +173,7 @@ class WebUI:
|
|
| 173 |
for i in range(self.nb_slider_items):
|
| 174 |
visibility = True if i == 1 else False
|
| 175 |
t = gr.Image(
|
| 176 |
-
visible=visibility, elem_id="model-2d-pred"
|
| 177 |
).style(
|
| 178 |
height=512,
|
| 179 |
width=512,
|
|
@@ -183,7 +183,7 @@ class WebUI:
|
|
| 183 |
self.run_btn.click(
|
| 184 |
fn=lambda x: self.process(x),
|
| 185 |
inputs=file_output,
|
| 186 |
-
outputs=
|
| 187 |
)
|
| 188 |
|
| 189 |
self.slider.input(
|
|
|
|
| 20 |
self.pred_images = []
|
| 21 |
|
| 22 |
# @TODO: This should be dynamically set based on chosen volume size
|
| 23 |
+
self.nb_slider_items = 128
|
| 24 |
|
| 25 |
self.model_name = model_name
|
| 26 |
self.cwd = cwd
|
|
|
|
| 60 |
|
| 61 |
self.fixed_images = load_ct_to_numpy(fixed_image_path)
|
| 62 |
self.moving_images = load_ct_to_numpy(moving_image_path)
|
| 63 |
+
self.pred_images = load_ct_to_numpy(output_path + "pred_image.nii.gz")
|
| 64 |
+
return None
|
| 65 |
|
| 66 |
def get_fixed_image(self, k):
|
| 67 |
k = int(k) - 1
|
|
|
|
| 151 |
for i in range(self.nb_slider_items):
|
| 152 |
visibility = True if i == 1 else False
|
| 153 |
t = gr.Image(
|
| 154 |
+
visible=visibility, elem_id="model-2d-fixed", label="fixed image", show_label=True,
|
| 155 |
).style(
|
| 156 |
height=512,
|
| 157 |
width=512,
|
|
|
|
| 162 |
for i in range(self.nb_slider_items):
|
| 163 |
visibility = True if i == 1 else False
|
| 164 |
t = gr.Image(
|
| 165 |
+
visible=visibility, elem_id="model-2d-moving", label="moving image", show_label=True,
|
| 166 |
).style(
|
| 167 |
height=512,
|
| 168 |
width=512,
|
|
|
|
| 173 |
for i in range(self.nb_slider_items):
|
| 174 |
visibility = True if i == 1 else False
|
| 175 |
t = gr.Image(
|
| 176 |
+
visible=visibility, elem_id="model-2d-pred", label="predicted fixed image", show_label=True,
|
| 177 |
).style(
|
| 178 |
height=512,
|
| 179 |
width=512,
|
|
|
|
| 183 |
self.run_btn.click(
|
| 184 |
fn=lambda x: self.process(x),
|
| 185 |
inputs=file_output,
|
| 186 |
+
outputs=None,
|
| 187 |
)
|
| 188 |
|
| 189 |
self.slider.input(
|
demo/src/utils.py
CHANGED
|
@@ -21,7 +21,6 @@ def load_ct_to_numpy(data_path):
|
|
| 21 |
data = data / np.amax(data) * 255
|
| 22 |
data = data.astype("uint8")
|
| 23 |
|
| 24 |
-
print(data.shape)
|
| 25 |
return [data[..., i] for i in range(data.shape[-1])]
|
| 26 |
|
| 27 |
|
|
@@ -38,7 +37,6 @@ def load_pred_volume_to_numpy(data_path):
|
|
| 38 |
data[data > 0] = 1
|
| 39 |
data = data.astype("uint8")
|
| 40 |
|
| 41 |
-
print(data.shape)
|
| 42 |
return [data[..., i] for i in range(data.shape[-1])]
|
| 43 |
|
| 44 |
|
|
|
|
| 21 |
data = data / np.amax(data) * 255
|
| 22 |
data = data.astype("uint8")
|
| 23 |
|
|
|
|
| 24 |
return [data[..., i] for i in range(data.shape[-1])]
|
| 25 |
|
| 26 |
|
|
|
|
| 37 |
data[data > 0] = 1
|
| 38 |
data = data.astype("uint8")
|
| 39 |
|
|
|
|
| 40 |
return [data[..., i] for i in range(data.shape[-1])]
|
| 41 |
|
| 42 |
|