def test_close_early(self):
     sampler = UniformSampler(reader=get_dynamic_window_reader(),
                              window_sizes=DYNAMIC_MOD_DATA,
                              batch_size=2,
                              windows_per_image=10,
                              queue_length=10)
     sampler.close_all()
 def __init__(self,
              reader,
              window_sizes,
              batch_size=1,
              windows_per_image=1,
              queue_length=10,
              name='weighted_sampler'):
     UniformSampler.__init__(self,
                             reader=reader,
                             window_sizes=window_sizes,
                             batch_size=batch_size,
                             windows_per_image=windows_per_image,
                             queue_length=queue_length,
                             name=name)
     tf.logging.info('Initialised weighted sampler window instance')
     self.window_centers_sampler = weighted_spatial_coordinates
 def test_ill_init(self):
     with self.assertRaisesRegexp(ValueError, ""):
         sampler = UniformSampler(reader=get_3d_reader(),
                                  window_sizes=MOD_2D_DATA,
                                  batch_size=2,
                                  windows_per_image=10,
                                  queue_length=10)
 def initialise_uniform_sampler(self):
     self.sampler = [[UniformSampler(
         reader=reader,
         window_sizes=self.data_param,
         batch_size=self.net_param.batch_size,
         windows_per_image=self.action_param.sample_per_volume,
         queue_length=self.net_param.queue_length) for reader in
         self.readers]]
Esempio n. 5
0
 def __init__(self,
              reader,
              data_param,
              batch_size,
              windows_per_image,
              constraint,
              random_windows_per_image=0,
              queue_length=10):
     UniformSampler.__init__(self,
                             reader=reader,
                             data_param=data_param,
                             batch_size=batch_size,
                             windows_per_image=windows_per_image,
                             queue_length=queue_length)
     self.constraint = constraint
     self.n_samples_rand = random_windows_per_image
     self.spatial_coordinates_generator = \
         self.selective_spatial_coordinates()
     tf.logging.info('initialised selective sampling')
 def test_dynamic_init(self):
     sampler = UniformSampler(reader=get_dynamic_window_reader(),
                              window_sizes=DYNAMIC_MOD_DATA,
                              batch_size=2,
                              windows_per_image=10,
                              queue_length=10)
     with self.test_session() as sess:
         sampler.set_num_threads(2)
         out = sess.run(sampler.pop_batch_op())
         self.assertAllClose(out['image'].shape[1:], (8, 2, 256, 2))
     sampler.close_all()
 def test_2d_init(self):
     sampler = UniformSampler(reader=get_2d_reader(),
                              window_sizes=MOD_2D_DATA,
                              batch_size=2,
                              windows_per_image=10,
                              queue_length=10)
     with self.test_session() as sess:
         sampler.set_num_threads(2)
         out = sess.run(sampler.pop_batch_op())
         self.assertAllClose(out['image'].shape, (2, 10, 9, 1))
     sampler.close_all()
Esempio n. 8
0
def get_sampler(image_reader, patch_size, phase):
    if phase in ('training', 'validation'):
        sampler = UniformSampler(image_reader,
                                 window_sizes=patch_size,
                                 windows_per_image=2)
    elif phase == 'inference':
        sampler = GridSampler(image_reader,
                              window_sizes=patch_size,
                              window_border=(8, 8, 8),
                              batch_size=1)
    else:
        raise Exception('Invalid phase choice: {}'.format(
            {'phase': ['train', 'validation', 'inference']}))

    return sampler
 def test_3d_concentric_init(self):
     sampler = UniformSampler(reader=get_concentric_window_reader(),
                              window_sizes=MULTI_WINDOW_DATA,
                              batch_size=2,
                              windows_per_image=10,
                              queue_length=10)
     with self.test_session() as sess:
         sampler.set_num_threads(2)
         out = sess.run(sampler.pop_batch_op())
         img_loc = out['image_location']
         seg_loc = out['label_location']
         self.assertTrue(np.all(img_loc[:, 0] == seg_loc[:, 0]))
         self.assertTrue(np.all((img_loc - seg_loc)[:, 1:4] == [1, 1, 0]))
         self.assertTrue(np.all((img_loc - seg_loc)[:, 4:] == [-2, -1, 1]))
         self.assertAllClose(out['image'].shape, (2, 4, 10, 3, 1))
         self.assertAllClose(out['label'].shape, (2, 7, 12, 2, 1))
     sampler.close_all()
###
reader = ImageReader().initialise(data_param)
reader.add_preprocessing_layers(  # add volume padding layer
    [PadLayer(image_name=['MR'], border=volume_padding_size, mode='constant')])

###
# show 'volume' -- without window sampling
###
image_2d = ImageWindowDataset(reader)()['MR'][0, :, :, 0, 0, 0]
vis_coordinates(image_2d, saving_name='output/image.png')

###
# create & show uniform random samples
###
uniform_sampler = UniformSampler(reader,
                                 spatial_window_size,
                                 windows_per_image=100)
next_window = uniform_sampler.pop_batch_op()
coords = []
with tf.Session() as sess:
    for _ in range(20):
        uniform_windows = sess.run(next_window)
        coords.append(uniform_windows['MR_location'])
coords = np.concatenate(coords, axis=0)
vis_coordinates(image_2d, coords, 'output/uniform.png')

###
# create & show all grid samples
###
grid_sampler = GridSampler(reader, spatial_window_size, window_border=border)
next_grid = grid_sampler.pop_batch_op()
Esempio n. 11
0
#Create image reader and add padding layer with 'constant' value 0
#This will ensure that samples are taken even at the beginning and ending slice
reader = ImageReader().initialise(data_param)
reader.add_preprocessing_layers(
    PadLayer(image_name=['MR', 'sampler'],
             border=(20, 20, 20),
             mode='constant'))
_, img, _ = reader(idx=0)

#Create samplers with window_size
weighted_sampler = WeightedSampler(reader, window_sizes=(48, 48, 48))

balanced_sampler = BalancedSampler(reader, window_sizes=(48, 48, 48))

uniform_sampler = UniformSampler(reader, window_sizes=(48, 48, 48))

#Generate N samples for each type
N = 30
import tensorflow as tf
# adding the tensorflow tensors
next_window = weighted_sampler.pop_batch_op()
# run the tensors
with tf.Session() as sess:
    weighted_sampler.run_threads(sess)  #initialise the iterator
    w_coords = []
    for _ in range(N):
        windows = sess.run(next_window)
        #print(windows.keys(), windows['MR_location'], windows['MR'].shape)
        w_coords.append(windows['MR_location'])