def test_resize_in_memory(): tmpdir = tempfile.mkdtemp() tmp = tempfile.NamedTemporaryFile(dir=tmpdir, suffix='.JPEG') im = Image.new('RGB', original_dimensions) im.save(tmp.name, 'JPEG') resize = Operations.Resize(probability=1, width=larger_dimensions[0], height=larger_dimensions[1], resample_filter="BICUBIC") im = [im] im_resized = resize.perform_operation(im) assert im_resized[0].size == larger_dimensions resize_smaller = Operations.Resize(probability=1, width=smaller_dimensions[0], height=smaller_dimensions[1], resample_filter="BICUBIC") im_resized_smaller = resize_smaller.perform_operation(im) assert im_resized_smaller[0].size == smaller_dimensions tmp.close()
def test_in_memory_distortions(): im, tmpdir = create_colour_temp_image((800, 800), "JPEG") r_d = Operations.Distort(probability=1, grid_width=8, grid_height=8, magnitude=8) tmp_im = r_d.perform_operation([im]) assert tmp_im is not None assert tmp_im[0].size == (800, 800) im_bw, tmpdir_bw = create_greyscale_temp_image((800, 800), "PNG") r_d_bw = Operations.Distort(probability=1, grid_width=8, grid_height=8, magnitude=8) tmp_im_bw = r_d_bw.perform_operation([im_bw]) assert tmp_im_bw is not None assert tmp_im_bw[0].size == (800, 800) assert isinstance(tmp_im_bw[0], Image.Image) shutil.rmtree(tmpdir) shutil.rmtree(tmpdir_bw)
def test_random_contrast_in_memory(): im, tmpdir = create_colour_temp_image((800, 800), "JPEG") op = Operations.RandomContrast(probability=1, min_factor=0.5, max_factor=1.5) tmp_im = op.perform_operation([im]) assert tmp_im is not None assert isinstance(tmp_im[0], Image.Image) shutil.rmtree(tmpdir) im_bw, tmpdir_bw = create_greyscale_temp_image((800, 800), "PNG") op = Operations.RandomContrast(probability=1, min_factor=0.5, max_factor=1.5) tmp_im = op.perform_operation([im_bw]) assert tmp_im is not None assert isinstance(tmp_im[0], Image.Image) shutil.rmtree(tmpdir_bw)
def test_random_brightness_in_memory(): im, tmpdir = create_colour_temp_image((800, 800), "JPEG") op = Operations.RandomBrightness(probability=1, min_factor=0.5, max_factor=1.5) tmp_im = op.perform_operation([im]) assert tmp_im is not None assert isinstance(tmp_im[0], Image.Image) shutil.rmtree(tmpdir) if os.name == "nt": # not testing bw images return im_bw, tmpdir_bw = create_greyscale_temp_image((800, 800), "PNG") op = Operations.RandomBrightness(probability=1, min_factor=0.5, max_factor=1.5) tmp_im = op.perform_operation([im_bw]) assert tmp_im is not None assert isinstance(tmp_im[0], Image.Image) shutil.rmtree(tmpdir_bw)
def test_random_brightness_in_memory(): tmp, tmpdir = create_colour_temp_image((800, 800), "JPEG") op = Operations.RandomBrightness(probability=1, min_factor=0.5, max_factor=1.5) tmp_im = [] tmp_im.append(Image.open(tmp)) tmp_im = op.perform_operation(tmp_im) assert tmp_im is not None assert isinstance(tmp_im[0], Image.Image) tmp_bw, tmpdir_bw = create_greyscale_temp_image((800, 800), "PNG") op = Operations.RandomBrightness(probability=1, min_factor=0.5, max_factor=1.5) tmp_im = [] tmp_im.append(Image.open(tmp)) tmp_im = op.perform_operation(tmp_im) assert tmp_im is not None assert isinstance(tmp_im[0], Image.Image) tmp.close() tmp_bw.close() shutil.rmtree(tmpdir) shutil.rmtree(tmpdir_bw)
def __init__(self): self.augmentor_pipeline = Pipeline() self.augmentor_pipeline.add_operation(Operations.Crop(probability=1, width=64, height=64, centre=False)) self.augmentor_pipeline.add_operation( Operations.Resize(probability=1, width=512, height=512, resample_filter="BILINEAR") ) self.imgaug_transform = iaa.Sequential( [iaa.CropToFixedSize(width=64, height=64), iaa.Scale(size=512, interpolation="linear")] ) self.solt_stream = slc.Stream( [slt.CropTransform(crop_size=(64, 64), crop_mode="r"), slt.ResizeTransform(resize_to=(512, 512))] )
def __init__(self): self.imgaug_transform = iaa.Sequential( [iaa.Multiply((1.5, 1.5), per_channel=False), iaa.Add((127, 127), per_channel=False)] ) self.augmentor_pipeline = Pipeline() self.augmentor_pipeline.add_operation( Operations.RandomBrightness(probability=1, min_factor=1.5, max_factor=1.5) ) self.augmentor_pipeline.add_operation(Operations.RandomContrast(probability=1, min_factor=1.5, max_factor=1.5)) self.solt_stream = slc.Stream( [ slt.ImageRandomBrightness(p=1, brightness_range=(127, 127)), slt.ImageRandomContrast(p=1, contrast_range=(1.5, 1.5)), ] )
def __init__(self): self.imgaug_transform = iaa.Add((127, 127), per_channel=False) self.augmentor_op = Operations.RandomBrightness(probability=1, min_factor=1.5, max_factor=1.5) self.solt_stream = slc.Stream( [slt.ImageRandomBrightness(p=1, brightness_range=(127, 127))])
def __init__(self): self.imgaug_transform = iaa.Multiply((1.5, 1.5), per_channel=False) self.augmentor_op = Operations.RandomContrast(probability=1, min_factor=1.5, max_factor=1.5) self.solt_stream = slc.Stream( [slt.ImageRandomContrast(p=1, contrast_range=(1.5, 1.5))])
def __init__(self): self.imgaug_transform = iaa.Scale(size=512, interpolation="linear") self.solt_stream = slc.Stream([slt.Resize(resize_to=(512, 512))]) self.augmentor_op = Operations.Resize(probability=1, width=512, height=512, resample_filter="BILINEAR")
def __init__(self): self.imgaug_transform = iaa.CropToFixedSize(width=64, height=64) self.augmentor_op = Operations.Crop(probability=1, width=64, height=64, centre=False) self.solt_stream = slc.Stream( [slt.CropTransform(crop_size=(64, 64), crop_mode="r")])
def __init__(self): self.imgaug_transform = iaa.Affine(rotate=(45, 45), order=1, mode="reflect") self.augmentor_op = Operations.RotateStandard(probability=1, max_left_rotation=45, max_right_rotation=45) self.solt_stream = slc.Stream( [slt.RandomRotate(p=1, rotation_range=(45, 45))], padding="r")
def rotate_images(tmpdir, rot): original_dimensions = (800, 800) im_tmp = tmpdir.mkdir("subfolder").join('test.JPEG') im = Image.new('RGB', original_dimensions) im.save(str(im_tmp), 'JPEG') r = Operations.Rotate(probability=1, rotation=rot) im = [im] im_r = r.perform_operation(im) assert im_r is not None assert im_r[0].size == original_dimensions
def test_rotate_images_custom_temp_files(): original_dimensions = (800, 800) tmpdir = tempfile.mkdtemp() tmp = create_temp_file(tmpdir, '.JPEG') im = Image.new('RGB', original_dimensions) im.save(tmp.name, 'JPEG') r = Operations.Rotate(probability=1, rotation=90) im = [im] im_r = r.perform_operation(im) assert im_r is not None assert im_r[0].size == original_dimensions shutil.rmtree(tmpdir)
def test_rotate_images_custom_temp_files(): original_dimensions = (800, 800) tmpdir = tempfile.mkdtemp() tmp = tempfile.NamedTemporaryFile(dir=tmpdir, suffix='.JPEG') im = Image.new('RGB', original_dimensions) im.save(tmp.name, 'JPEG') r = Operations.Rotate(probability=1, rotation=90) im_r = r.perform_operation(im) assert im_r is not None assert im_r.size == original_dimensions tmp.close() shutil.rmtree(tmpdir)
def test_zoom_min_max(): original_dimensions = (800, 800) tmpdir = tempfile.mkdtemp() tmp = None try: tmp = tempfile.NamedTemporaryFile(dir=tmpdir, suffix='.JPEG') im = Image.new('RGB', original_dimensions) im.save(tmp.name, 'JPEG') r = Operations.ZoomRandom(probability=1, min_zoom=0.5, max_zoom=0.9) im_r = r.perform_operation(im) assert im_r is not None assert im_r.size == original_dimensions finally: if tmp is not None: tmp.close() shutil.rmtree(tmpdir)
def __init__(self): self.augmentor_op = Operations.Greyscale(probability=1) self.imgaug_transform = iaa.Grayscale(alpha=1.0) self.solt_stream = slc.Stream([slt.ImageColorTransform(mode="rgb2gs")])
def get_augmentation_group(data_aug_group, input_size, center=True, resize=True): resize_prob = 1 if resize else 0 center_prob = 1 if center else 0 DATA_AUGMENTATION_GROUPS = [ # GROUP 0 (NO DATA AUGMENTATION) [ # Center crop CropCenter(probability=center_prob), # Resize the image to the desired input size Operations.Resize(probability=resize_prob, width=input_size[0], height=input_size[1], resample_filter="BICUBIC") ], # GROUP 1 (Common transformations: rotations, flips, crops, shears) [ # Rotate the image by 90 degrees randomly Operations.Rotate(probability=0.5, rotation=-1), # Flip top/bottom Operations.Flip(probability=0.5, top_bottom_left_right="TOP_BOTTOM"), # Flip left/right Operations.Flip(probability=0.5, top_bottom_left_right="LEFT_RIGHT"), # Random crops Operations.CropPercentage(probability=0.5, percentage_area=0.85, centre=center, randomise_percentage_area=True), # Resize the image to the desired input size Operations.Resize(probability=resize_prob, width=input_size[0], height=input_size[1], resample_filter="BICUBIC") ], # GROUP 2 (Pixel intensity transformations) [ # Rotate the image by 90 degrees randomly Operations.Rotate(probability=0.5, rotation=-1), # Flip top/bottom Operations.Flip(probability=0.5, top_bottom_left_right="TOP_BOTTOM"), # Flip left/right Operations.Flip(probability=0.5, top_bottom_left_right="LEFT_RIGHT"), # Random change brightness of the image Operations.RandomBrightness(probability=0.5, min_factor=0.5, max_factor=1.5), # Random change saturation of the image Operations.RandomColor(probability=0.5, min_factor=0.5, max_factor=1.5), # Random change saturation of the image Operations.RandomContrast(probability=0.5, min_factor=0.5, max_factor=1.5), # Random crops Operations.CropPercentage(probability=0.5, percentage_area=0.85, centre=center, randomise_percentage_area=True), # Resize the image to the desired input size Operations.Resize(probability=resize_prob, width=input_size[0], height=input_size[1], resample_filter="BICUBIC") ], # GROUP 3 (Perspective transformations) [ # Rotate the image by 90 degrees randomly Operations.Rotate(probability=0.5, rotation=-1), # Flip top/bottom Operations.Flip(probability=0.5, top_bottom_left_right="TOP_BOTTOM"), # Flip left/right Operations.Flip(probability=0.5, top_bottom_left_right="LEFT_RIGHT"), # Shear Image Operations.Shear(probability=0.5, max_shear_left=20, max_shear_right=20), # Random Tilt up down Operations.Skew(probability=0.5, skew_type="TILT_TOP_BOTTOM", magnitude=1.0), # Random Tilt left right Operations.Skew(probability=0.5, skew_type="TILT_LEFT_RIGHT", magnitude=1.0), # Random Skew CORNER Operations.Skew(probability=0.5, skew_type="CORNER", magnitude=1.3), # Random crops Operations.CropPercentage(probability=0.5, percentage_area=0.85, centre=center, randomise_percentage_area=True), # Resize the image to the desired input size Operations.Resize(probability=resize_prob, width=input_size[0], height=input_size[1], resample_filter="BICUBIC") ], # GROUP 4 (Noise transformations) [ # Center crop CropCenter(probability=1), # Rotate the image by 90 degrees randomly Operations.Rotate(probability=0.5, rotation=-1), # Flip top/bottom Operations.Flip(probability=0.5, top_bottom_left_right="TOP_BOTTOM"), # Flip left/right Operations.Flip(probability=0.5, top_bottom_left_right="LEFT_RIGHT"), # Random distortions Operations.Distort(probability=0.5, grid_width=8, grid_height=8, magnitude=15), # Random erasing Operations.RandomErasing(probability=0.5, rectangle_area=0.25), # Random crops Operations.CropPercentage(probability=0.5, percentage_area=0.85, centre=center, randomise_percentage_area=True), # Resize the image to the desired input size Operations.Resize(probability=resize_prob, width=input_size[0], height=input_size[1], resample_filter="BICUBIC") ] ] return DATA_AUGMENTATION_GROUPS[data_aug_group]
def __init__(self): self.imgaug_transform = iaa.AllChannelsHistogramEqualization() self.augmentor_op = Operations.HistogramEqualisation(probability=1)
def __init__(self): self.imgaug_transform = iaa.Fliplr(p=1) self.augmentor_op = Operations.Flip(probability=1, top_bottom_left_right="LEFT_RIGHT") self.solt_stream = slc.Stream([slt.Flip(p=1, axis=1)])
def __init__(self): self.imgaug_transform = iaa.Flipud(p=1) self.augmentor_op = Operations.Flip(probability=1, top_bottom_left_right="TOP_BOTTOM") self.solt_stream = slc.Stream([slt.RandomFlip(p=1, axis=0)])