Closed yshvrdhn closed 6 years ago
@fepegar Can you shed some light on this issue?
It looks like your input image and corresponding label image have different shapes:
'image': (477, 451, 187, 1, 1), 'label': (391, 369, 147, 1, 1)}
Can you check that?
@fepegar I have 6 images. Does the image id corresponds to that same row in the csv file is that how I identify which image is causing the issue? UPDATE : I checked the shapes of corresponding image and labels they have same shape but individually they have different shapes Could you help me understand how the uniform sampler generates these shapes ?
@fepegar I singled out 1 image that is causing a similar issue : So I passed only 1 image with the following dimensions :
[CUSTOM]
-- num_classes: 14
-- output_prob: True
-- label_normalisation: True
-- softmax: True
-- min_sampling_ratio: 0
-- compulsory_labels: (0, 1)
-- rand_samples: 0
-- min_numb_labels: 1
-- proba_connect: True
-- evaluation_units: foreground
-- image: ('images',)
-- label: ('label',)
-- sampler: ()
-- weight: ()
-- inferred: ()
-- name: net_segment
[CONFIG_FILE]
-- path: /home/ubuntu/niftynet/extensions/deepmedic/deepmedic_single_task_renambed_labels.ini
[IMAGES]
-- csv_file:
-- path_to_search: /home/ubuntu/med_deacthalon/Task_all_same_names/images_liver_padded_3
-- filename_contains: ()
-- filename_not_contains: ()
-- interp_order: 3
-- loader: None
-- pixdim: (1.0, 1.0, 1.0)
-- axcodes: ('A', 'R', 'S')
-- spatial_window_size: (51, 51, 51)
[LABEL]
-- csv_file:
-- path_to_search: /home/ubuntu/med_deacthalon/Task_all_same_names/labels_liver_padded_3
-- filename_contains: ()
-- filename_not_contains: ()
-- interp_order: 0
-- loader: None
-- pixdim: (1.0, 1.0, 1.0)
-- axcodes: ('A', 'R', 'S')
-- spatial_window_size: (9, 9, 9)
[SYSTEM]
-- cuda_devices: ""
-- num_threads: 2
-- num_gpus: 1
-- model_dir: /home/ubuntu/models_nifty/deepmedic/single_task_labels_rename_liver_padded_3
-- dataset_split_file: ./dataset_split.csv
-- action: train
[NETWORK]
-- name: deepmedic
-- activation_function: relu
-- batch_size: 32
-- decay: 0.0
-- reg_type: L2
-- volume_padding_size: (0, 0, 0)
-- volume_padding_mode: minimum
-- window_sampling: uniform
-- queue_length: 128
-- multimod_foreground_type: and
-- histogram_ref_file: histogram_standardisation_liver_padded_3.txt
-- norm_type: percentile
-- cutoff: (0.01, 0.99)
-- foreground_type: otsu_plus
-- normalisation: False
-- whitening: True
-- normalise_foreground_only: True
-- weight_initializer: he_normal
-- bias_initializer: zeros
-- keep_prob: 1.0
-- weight_initializer_args: {}
-- bias_initializer_args: {}
[TRAINING]
-- optimiser: adam
-- sample_per_volume: 32
-- rotation_angle: (-10.0, 10.0)
-- rotation_angle_x: ()
-- rotation_angle_y: ()
-- rotation_angle_z: ()
-- scaling_percentage: (-10.0, 10.0)
-- random_flipping_axes: -1
-- do_elastic_deformation: False
-- num_ctrl_points: 4
-- deformation_sigma: 15
-- proportion_to_deform: 0.5
-- lr: 0.001
-- loss_type: Dice
-- starting_iter: 0
-- save_every_n: 45
-- tensorboard_every_n: 20
-- max_iter: 50
-- max_checkpoints: 20
-- validation_every_n: 5
-- validation_max_iter: 1
-- exclude_fraction_for_validation: 0.2
-- exclude_fraction_for_inference: 0.0
[INFERENCE]
-- spatial_window_size: (57, 57, 57)
-- inference_iter: -1
-- dataset_to_infer:
-- save_seg_dir: ./deepmedic/alltask_newname_heart
-- output_postfix: _niftynet_out
-- output_interp_order: 0
-- border: (36, 36, 36)
image_id : 0
image_shapes : {'image': (382, 390, 614, 1, 1), 'label': (501, 512, 767, 1, 1)} static_window_shapes : {'image': (51, 51, 51, 1, 1), 'label': (9, 9, 9, 1, 1)}
subject_id : 0
img_sizes {'image': (382, 390, 614, 1, 1), 'label': (501, 512, 767, 1, 1)} win_sizes : {'image': (51, 51, 51, 1, 1), 'label': (9, 9, 9, 1, 1)} n_samples : 32
CRITICAL:niftynet: Don't know how to generate sampling locations: Spatial dimensions of the grouped input sources are not consistent. {(501, 512, 767), (382, 390, 614)}
INFO:niftynet: Cleaning up...
Exception in thread Thread-1:
Traceback (most recent call last):
File "/home/ubuntu/anaconda3/envs/python3/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/home/ubuntu/anaconda3/envs/python3/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "/home/ubuntu/niftynet/NiftyNet/niftynet/engine/image_window_buffer.py", line 148, in _push
for output_dict in self():
File "/home/ubuntu/niftynet/NiftyNet/niftynet/engine/sampler_uniform.py", line 81, in layer_op
self.window.n_samples)
File "/home/ubuntu/niftynet/NiftyNet/niftynet/engine/sampler_uniform.py", line 151, in _spatial_coordinates_generator
_infer_spatial_size(img_sizes, win_sizes)
File "/home/ubuntu/niftynet/NiftyNet/niftynet/engine/sampler_uniform.py", line 238, in _infer_spatial_size
raise NotImplementedError
NotImplementedError
image_id : 0 image_shapes : {'image': (359, 411, 629, 1, 1), 'label': (470, 539, 786, 1, 1)} static_window_shapes : {'image': (51, 51, 51, 1, 1), 'label': (9, 9, 9, 1, 1)} subject_id : 0 INFO:niftynet: iter 1 saved: /home/ubuntu/models_nifty/deepmedic/single_task_labels_rename_liver_padded_3/models/model.ckpt img_sizes {'image': (359, 411, 629, 1, 1), 'label': (470, 539, 786, 1, 1)} win_sizes : {'image': (51, 51, 51, 1, 1), 'label': (9, 9, 9, 1, 1)} n_samples : 32 INFO:niftynet: stopping sampling threads CRITICAL:niftynet: Don't know how to generate sampling locations: Spatial dimensions of the grouped input sources are not consistent. {(470, 539, 786), (359, 411, 629)} INFO:niftynet: SegmentationApplication stopped (time in second 169.39).
Hi @yshvrdhn now this looks like a voxel spacing issue. In the config file you provided pixdim = (1.0, 1.0, 1.0)
, which means resampling all inputs from the volumes's original voxel spacing to 1.0x1.0x1.0mm spacing before feeding them to the network. Perhaps the corresponding image and labels have different voxel spacing values stored in header, and therefore different shapes after resampling? If this is the case, you could remove pixdim=(1.0, 1.0, 1.0)
in the config which means using volume's original spacing.
@wyli Yep that was the issue. It fixed the error! Thank you!
I have the same problem, but there is no pixdim in my configuration file. How can I solve it?
@zhaoxiaoqian666 Please open a new issue specifying your configuration and output.
Hi I am running a task on deep medic which has 14 classes : I am getting an error in uniform sampling layer : I tried debugging the shapes that are passed to _infer_spatial_size function which are shown in the output below. Any help would be greatly appreciated. How is the images and label sample size generatd : {'image': (477, 451, 187, 1, 1), 'label': (391, 369, 147, 1, 1)} that causes the error ?
The whole output is given below :