def test_generators_shift_in_flow(ct_path): ct_array, meta = load_ct.load_ct(ct_path) batch = np.expand_dims(np.expand_dims(ct_array[45:90], 0), 0) dg = generators.DataGenerator(shift_range=[.1, .4, .4], data_format='channels_first') augmented = next(dg.flow(batch, batch_size=1, seed=21)) assert len(augmented.shape) == 5 assert augmented.shape == batch.shape np.random.seed(21) shifted = generators.random_shift(batch[0], (.1, .4, .4)) assert not np.abs(shifted - augmented).sum()
def set_params(self): self.clip_lower = -1000 self.clip_upper = 400 self.train_data_generator = generators.DataGenerator( rotation_range=20, shift_range=.1, zoom_lower=.8, zoom_upper=1.2, zoom_independent=False, fill_mode='nearest', preprocessing_function=None) self.test_data_generator = generators.DataGenerator() if self.data_format is None: self.data_format = keras.backend.image_data_format() if self.data_format == 'channels_last': self.channel_axis = 4 elif self.data_format == 'channel_first': self.channel_axis = 1 else: raise ValueError( "The `data_format` should lie in {None, 'channels_last', 'channels_first'}." )
def test_generators_zoom_in_flow(ct_path): ct_array, meta = load_ct.load_ct(ct_path) batch = np.expand_dims(np.expand_dims(ct_array[45:90], 0), 0) dg = generators.DataGenerator(zoom_lower=[1, .8, .8], zoom_upper=[1, 1.2, 1.2], zoom_independent=True, data_format='channels_first') augmented = next(dg.flow(batch, batch_size=1, seed=21)) assert len(augmented.shape) == 5 assert augmented.shape == batch.shape np.random.seed(21) zoomed = generators.random_zoom(batch[0], zoom_lower=[1, .8, .8], zoom_upper=[1, 1.2, 1.2], independent=True) assert not np.abs(zoomed - augmented).sum()
def test_generators_standardization(ct_path): ct_array, meta = load_ct.load_ct(ct_path) batch = np.expand_dims(np.expand_dims(ct_array[45:90], 0), 0) dg = generators.DataGenerator(featurewise_center=True, featurewise_std_normalization=True, samplewise_center=True, samplewise_std_normalization=True) with warnings.catch_warnings(): warnings.filterwarnings('error') try: next(dg.flow(batch, batch_size=1)) except Warning as w: assert "Fit it first by calling `.fit(numpy_data)`" in str(w) dg.fit(batch) normalized = next(dg.flow(batch, batch_size=1)) assert len(normalized.shape) == 5 assert normalized.shape == batch.shape
def test_generators_save_to_dir(ct_path, tmpdir): ct_array, meta = load_ct.load_ct(ct_path) batch = np.expand_dims(np.expand_dims(ct_array[45:90], 0), 0) dg = generators.DataGenerator() np.random.seed(1) save_prefix = 'test' fname = '{prefix}_{index}_{hash}.{format}'.format( prefix=save_prefix, index=0, hash=np.random.randint(1e4), format='npy') fname = str(tmpdir.mkdir("processed").join(fname)) batch = next( dg.flow(batch, seed=1, batch_size=1, save_to_dir=os.path.dirname(fname), save_prefix=save_prefix)) saved = np.load(fname) assert len(saved.shape) == 4 assert saved.shape == batch[0].shape assert not np.abs(saved - batch[0]).sum()