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()
Beispiel #2
0
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)
Beispiel #6
0
 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))]
     )
Beispiel #7
0
 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)),
         ]
     )
Beispiel #8
0
 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))])
Beispiel #9
0
 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))])
Beispiel #10
0
 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")
Beispiel #11
0
 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")])
Beispiel #12
0
 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")
Beispiel #13
0
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
Beispiel #14
0
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)
Beispiel #15
0
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)
Beispiel #16
0
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)
Beispiel #17
0
 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")])
Beispiel #18
0
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]
Beispiel #19
0
 def __init__(self):
     self.imgaug_transform = iaa.AllChannelsHistogramEqualization()
     self.augmentor_op = Operations.HistogramEqualisation(probability=1)
Beispiel #20
0
 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)])
Beispiel #21
0
 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)])