Ejemplo n.º 1
0
        def sin2set(x,sets=3):
            oper0 = iaa.Invert(0.50, per_channel=False) 
            oper1 = iaa.Invert(0.25, per_channel=True)
            oper2 = iaa.Add((-15,15),per_channel=0.5)
            #oper3 = iaa.AddToHueAndSaturation((-10))
            oper4 = iaa.Multiply((0.75, 1.25), per_channel=0.5)
            oper5 = iaa.GaussianBlur((0, 1.25))
            oper6 = iaa.AverageBlur(k=(2, 7))
            #oper7 = iaa.MedianBlur(k=(3, 5))
            #oper8 = iaa.BilateralBlur(d=7,sigma_color=250,sigma_space=250)
            oper9 = iaa.Emboss(alpha=(0,1.0), strength=(0,2.0))
            oper10 = iaa.EdgeDetect(alpha=(0, 0.25))
            oper11 = iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.25*255), per_channel=True)
            oper12 = iaa.Dropout((0.01, 0.1), per_channel=0.5)
            l0 = [oper0,oper1,oper2,oper4,oper5,oper6,oper9,oper10,oper11,oper12]
            l={}

            for si in range(1,sets+1):
                tol=len(l0)
                t=random.randint(1,tol-1)
                l[si]=l0[t]
                l0.pop(t)   
            img_aug1 = l[1].augment_image(x.reshape(32,280,3).cpu().numpy())
            img_aug2 = l[2].augment_image(x.reshape(32,280,3).cpu().numpy())
            img_aug3 = l[3].augment_image(x.reshape(32,280,3).cpu().numpy())
         
            transform2 = transforms.Compose([transforms.ToTensor(), ])
            x=transform2(img_aug1).unsqueeze(0)
            x2=transform2(img_aug2).unsqueeze(0)
            x3=transform2(img_aug3).unsqueeze(0)
            x=torch.cat([x,x2],0)
            x=torch.cat([x,x3],0)
            #print(x.size()) #(3,3,32,280)
            return x
 def augment():
     with open(CONFIG, "r") as file:
         config = json.loads(file.read())
     if config[ImageAugmentation.AUGMENT_DATA]:
         matrix = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]])
         return iaa.Sometimes(ImageAugmentation.AUG_PERCENTAGE, [
             iaa.GaussianBlur(sigma=2.0),
             iaa.Sequential([iaa.Affine(rotate=45),
                             iaa.Sharpen(alpha=1.0)]),
             iaa.WithColorspace(to_colorspace="HSV",
                                from_colorspace="RGB",
                                children=iaa.WithChannels(
                                    0, iaa.Add((10, 50)))),
             iaa.AdditiveGaussianNoise(scale=0.2 * 255),
             iaa.Add(50, per_channel=True),
             iaa.Sharpen(alpha=0.5),
             iaa.WithChannels(0, iaa.Add((10, 100))),
             iaa.WithChannels(0, iaa.Affine(rotate=(0, 45))),
             iaa.Noop(),
             iaa.Superpixels(p_replace=0.5, n_segments=64),
             iaa.Superpixels(p_replace=(0.1, 1.0), n_segments=(16, 128)),
             iaa.ChangeColorspace(from_colorspace="RGB",
                                  to_colorspace="HSV"),
             iaa.WithChannels(0, iaa.Add((50, 100))),
             iaa.ChangeColorspace(from_colorspace="HSV",
                                  to_colorspace="RGB"),
             iaa.Grayscale(alpha=(0.0, 1.0)),
             iaa.GaussianBlur(sigma=(0.0, 3.0)),
             iaa.AverageBlur(k=(2, 11)),
             iaa.AverageBlur(k=((5, 11), (1, 3))),
             iaa.MedianBlur(k=(3, 11)),
             iaa.Convolve(matrix=matrix),
             iaa.Sharpen(alpha=(0.0, 1.0), lightness=(0.75, 2.0)),
             iaa.Emboss(alpha=(0.0, 1.0), strength=(0.5, 1.5)),
             iaa.EdgeDetect(alpha=(0.0, 1.0)),
             iaa.DirectedEdgeDetect(alpha=(0.0, 1.0), direction=(0.0, 1.0)),
             iaa.Add((-40, 40)),
             iaa.Add((-40, 40), per_channel=0.5),
             iaa.AddElementwise((-40, 40)),
             iaa.AddElementwise((-40, 40), per_channel=0.5),
             iaa.AdditiveGaussianNoise(scale=(0, 0.05 * 255)),
             iaa.AdditiveGaussianNoise(scale=0.05 * 255),
             iaa.AdditiveGaussianNoise(scale=0.05 * 255, per_channel=0.5),
             iaa.Multiply((0.5, 1.5), per_channel=0.5),
             iaa.Dropout(p=(0, 0.2)),
             iaa.Dropout(p=(0, 0.2), per_channel=0.5),
             iaa.CoarseDropout(0.02, size_percent=0.5),
             iaa.CoarseDropout((0.0, 0.05), size_percent=(0.02, 0.25)),
             iaa.CoarseDropout(0.02, size_percent=0.15, per_channel=0.5),
             iaa.Invert(0.25, per_channel=0.5),
             iaa.Invert(0.5),
             iaa.ContrastNormalization((0.5, 1.5)),
             iaa.ContrastNormalization((0.5, 1.5), per_channel=0.5),
             iaa.ElasticTransformation(alpha=(0, 5.0), sigma=0.25)
         ])
     else:
         return None
Ejemplo n.º 3
0
def chapter_augmenters_invert():
    aug = iaa.Invert(0.5)
    run_and_save_augseq("invert.jpg",
                        aug, [ia.quokka(size=(64, 64)) for _ in range(16)],
                        cols=8,
                        rows=2)

    aug = iaa.Invert(0.25, per_channel=0.5)
    run_and_save_augseq("invert_per_channel.jpg",
                        aug, [ia.quokka(size=(64, 64)) for _ in range(16)],
                        cols=8,
                        rows=2)
Ejemplo n.º 4
0
def apply_inver(root_dir, dir_name, base_name, img):
    # if base_name.startswith("avers_"):
    file_path = root_dir + "/" + dir_name + "/invert" + base_name
    tf.logging.info("Processing  inver ... target ${0}".format(file_path))
    invert = iaa.Invert(1, )
    updated_image = invert.augment_image(img)
    misc.imsave(file_path, updated_image)
Ejemplo n.º 5
0
def augmentation_sequence_Invert(images, labels):
    labels = labels.astype(np.uint8)
    seq = iaa.Sequential([iaa.Invert(p=1,
                                     per_channel=0.6)])  #, iaa.Flipud(0.8),\
    #iaa.OneOf([iaa.Rotate((270, 270))]) iaa.Fliplr(0.8),
    #iaa.Rotate((90, 90)) only invert in order to avoid weight issues and masks
    return seq(images=images, segmentation_maps=labels)
 def augmentator(images):
     """Apply data augmentation"""
     augmenter = iaa.Sequential([
         # Invert pixel values on 25% images
         iaa.Invert(0.25, per_channel=0.5),
         # Blur 30% of images
         iaa.Sometimes(
             .3,
             iaa.OneOf([
                 iaa.GaussianBlur(sigma=(0.0, 3.0)),
                 iaa.AverageBlur(k=(2, 2)),
                 iaa.MedianBlur(k=(1, 3)),
             ]),
         ),
         # Do embossing or sharpening
         iaa.OneOf([
             iaa.Sometimes(.2, iaa.Emboss(alpha=(0.0, .3),
                                          strength=(.2, .8))),
             iaa.Sometimes(
                 .2, iaa.Sharpen(alpha=(0.0, 1.0), lightness=(0.75, 2.0))),
         ]),
         # Add one noise (or none)
         iaa.OneOf([
             iaa.Dropout((0, 0.01)),
             iaa.AdditiveGaussianNoise(scale=0.01 * 255),
             iaa.SaltAndPepper(0.01),
             iaa.Noop(),
         ]),
         # Convert to grayscale
         iaa.Sometimes(.2, iaa.Grayscale(alpha=(0.0, 1.0))),
         iaa.Sometimes(.4, iaa.LinearContrast((0.5, 1.5), per_channel=0.5)),
         # iaa.PiecewiseAffine(scale=(0.005, 0.05)),
     ])
     images = augmenter(images=images)
     return images
Ejemplo n.º 7
0
    def augmentData(self, images):

        sometimes = lambda aug: iaa.Sometimes(0.5, aug)

        augumenters = iaa.Sequential(
            [
                iaa.SomeOf(
                    n=(0, 4),
                    children=[
                        # iaa.Superpixe-ls(p_replace=(0.1, 1.0), n_segments=(10, 120)),
                        iaa.Invert(0.2, 0.5),
                        iaa.Add(value=(-40, 40), per_channel=0.5),
                        iaa.Multiply(mul=(0.5, 1.5), per_channel=0.5),
                        iaa.OneOf([
                            iaa.GaussianBlur(sigma=(0.0, 0.2)),
                            iaa.AverageBlur(k=(2, 9)),
                            iaa.MedianBlur(k=(3, 9))
                        ]),
                        iaa.AdditiveGaussianNoise(scale=0.05 * 255,
                                                  per_channel=0.5),
                        iaa.Dropout(p=(0, 0.2), per_channel=0.5),
                        iaa.Grayscale(alpha=(0.0, 1.0)),
                        iaa.ContrastNormalization((0.5, 1.5), per_channel=0.5),
                        iaa.Sharpen(alpha=(0.0, 1.0), lightness=(0.75, 2.0))
                    ],
                    random_order=True),
                sometimes(
                    iaa.CropAndPad(percent=(-0.05, 0.1),
                                   pad_mode=["constant", "edge"],
                                   pad_cval=(0, 128)))
            ],
            random_order=False)
        augumenters = augumenters.to_deterministic()  #
        newDatas = augumenters.augment_images(images)
        return newDatas  # -> dua vao train binh thuong
def customizedImgAug(input_img):
    rarely = lambda aug: iaa.Sometimes(0.1, aug)
    sometimes = lambda aug: iaa.Sometimes(0.25, aug)
    often = lambda aug: iaa.Sometimes(0.5, aug)

    seq = iaa.Sequential([
        iaa.Fliplr(0.5),
        often(
            iaa.Affine(
                scale={
                    "x": (0.9, 1.1),
                    "y": (0.9, 1.1)
                },
                translate_percent={
                    "x": (-0.1, 0.1),
                    "y": (-0.12, 0)
                },
                rotate=(-10, 10),
                shear=(-8, 8),
                order=[0, 1],
                cval=(0, 255),
            )),
        iaa.SomeOf((0, 4), [
            rarely(iaa.Superpixels(p_replace=(0, 0.3), n_segments=(20, 200))),
            iaa.OneOf([
                iaa.GaussianBlur((0, 2.0)),
                iaa.AverageBlur(k=(2, 4)),
                iaa.MedianBlur(k=(3, 5)),
            ]),
            iaa.Sharpen(alpha=(0, 0.3), lightness=(0.75, 1.5)),
            iaa.Emboss(alpha=(0, 1.0), strength=(0, 0.5)),
            rarely(
                iaa.OneOf([
                    iaa.EdgeDetect(alpha=(0, 0.3)),
                    iaa.DirectedEdgeDetect(alpha=(0, 0.7),
                                           direction=(0.0, 1.0)),
                ])),
            iaa.AdditiveGaussianNoise(
                loc=0, scale=(0.0, 0.05 * 255), per_channel=0.5),
            iaa.OneOf([
                iaa.Dropout((0.0, 0.05), per_channel=0.5),
                iaa.CoarseDropout(
                    (0.03, 0.05), size_percent=(0.01, 0.05), per_channel=0.2),
            ]),
            rarely(iaa.Invert(0.05, per_channel=True)),
            often(iaa.Add((-40, 40), per_channel=0.5)),
            iaa.Multiply((0.7, 1.3), per_channel=0.5),
            iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5),
            iaa.Grayscale(alpha=(0.0, 1.0)),
            sometimes(iaa.PiecewiseAffine(scale=(0.01, 0.03))),
            sometimes(iaa.ElasticTransformation(alpha=(0.5, 1.5), sigma=0.25)),
        ],
                   random_order=True),
        iaa.Fliplr(0.5),
        iaa.AddToHueAndSaturation(value=(-10, 10), per_channel=True)
    ],
                         random_order=True)  # apply augmenters in random order

    output_img = seq.augment_image(input_img)
    return output_img
def imgAug(inputImage, crop=True, flip=True, gaussianBlur=True, channelInvert=True, brightness=True, hueSat=True):
    augList = []
    if crop:
        augList += [iaa.Crop(px=(0, 16))]  # crop images from each side by 0 to 16px (randomly chosen)
    if flip:
        augList += [iaa.Fliplr(0.5)]  # horizontally flip 50% of the images
    if gaussianBlur:
        augList += [iaa.GaussianBlur(sigma=(0, 3.0))]  # blur images with a sigma of 0 to 3.0
    if channelInvert:
        augList += [iaa.Invert(0.05, per_channel=True)]  # invert color channels
    if brightness:
        augList += [iaa.Add((-10, 10), per_channel=0.5)]  # change brightness of images (by -10 to 10 of original value)
    if hueSat:
        augList += [iaa.AddToHueAndSaturation((-20, 20))]  # change hue and saturation
    seq = iaa.Sequential(augList)
    # seq = iaa.Sequential([
    #     iaa.Crop(px=(0, 16)),  # crop images from each side by 0 to 16px (randomly chosen)
    #     # iaa.Fliplr(0.5),  # horizontally flip 50% of the images
    #     iaa.GaussianBlur(sigma=(0, 3.0)),  # blur images with a sigma of 0 to 3.0
    #     iaa.Invert(0.05, per_channel=True),  # invert color channels
    #     iaa.Add((-10, 10), per_channel=0.5),  # change brightness of images (by -10 to 10 of original value)
    #     iaa.AddToHueAndSaturation((-20, 20)),  # change hue and saturation
    # ])

    image_aug = seq.augment_image(inputImage)
    return image_aug
Ejemplo n.º 10
0
 def logic(self, image):
     for param in self.augmentation_params:
         self.augmentation_data.append([
             str(param.augmentation_value),
             iaa.Invert(p=param.augmentation_value).to_deterministic().
             augment_image(image), param.detection_tag
         ])
Ejemplo n.º 11
0
def matsushita_aug():
    return iaa.SomeOf((1, 4), [
        iaa.Noop(),
        iaa.Superpixels(p_replace=0.5, n_segments=64),
        iaa.Add((-50, 50), per_channel=True),
        iaa.Grayscale(alpha=(0.0, 1.0)),
        iaa.GaussianBlur(sigma=(0.1, 1.0)),
        iaa.ContrastNormalization((0.5, 2), per_channel=0.5),
        iaa.AdditiveGaussianNoise(scale=0.075 * 255, per_channel=0.5),
        iaa.CoarseDropout(
            (0.1, 0.25), size_percent=(0.02, 0.25), per_channel=0.5),
        iaa.OneOf([
            iaa.Emboss(alpha=0.25),
            iaa.Sharpen(alpha=0.5),
            iaa.Invert(1, per_channel=1.0),
        ]),
        iaa.Affine(scale={
            'x': (0.84, 1.16),
            'y': (0.84, 1.16)
        },
                   mode=['edge', 'wrap']),
        iaa.Affine(translate_percent={
            'x': (-0.16, 0.16),
            'y': (-0.16, 0.16)
        },
                   mode=['edge', 'wrap']),
        iaa.Affine(rotate=(-16, 16), mode=['edge', 'wrap']),
        iaa.Affine(shear=(-16, 16), mode=['edge', 'wrap']),
        iaa.Fliplr(1)
    ])
Ejemplo n.º 12
0
  def __init__(self):
    sometimes = lambda aug: iaa.Sometimes(0.3, aug)

    self.aug = iaa.Sequential(iaa.SomeOf((1, 5), 
        [
        # blur

        sometimes(iaa.OneOf([iaa.GaussianBlur(sigma=(0, 1.0)),
                            iaa.MotionBlur(k=3)])),
        
        # color
        sometimes(iaa.AddToHueAndSaturation(value=(-10, 10), per_channel=True)),
        sometimes(iaa.SigmoidContrast(gain=(3, 10), cutoff=(0.4, 0.6), per_channel=True)),
        sometimes(iaa.Invert(0.25, per_channel=0.5)),
        sometimes(iaa.Solarize(0.5, threshold=(32, 128))),
        sometimes(iaa.Dropout2d(p=0.5)),
        sometimes(iaa.Multiply((0.5, 1.5), per_channel=0.5)),
        sometimes(iaa.Add((-40, 40), per_channel=0.5)),

        sometimes(iaa.JpegCompression(compression=(5, 80))),
        
        # distort
        sometimes(iaa.Crop(percent=(0.01, 0.05), sample_independently=True)),
        sometimes(iaa.PerspectiveTransform(scale=(0.01, 0.01))),
        sometimes(iaa.Affine(scale=(0.7, 1.3), translate_percent=(-0.1, 0.1), 
#                            rotate=(-5, 5), shear=(-5, 5), 
                            order=[0, 1], cval=(0, 255), 
                            mode=ia.ALL)),
        sometimes(iaa.PiecewiseAffine(scale=(0.01, 0.01))),
        sometimes(iaa.OneOf([iaa.Dropout(p=(0, 0.1)),
                            iaa.CoarseDropout(p=(0, 0.1), size_percent=(0.02, 0.25))])),

    ],
        random_order=True),
    random_order=True)
Ejemplo n.º 13
0
def augment_image(img_array):
    """Augment images randomly

    Parameters
    ----------
    img_array : array-like shape(N, W, H, C)

    Returns
    ----------
    img_array : array-like
        Augmented images
    """
    def st(aug):
        return iaa.Sometimes(0.5, aug)

    seq = iaa.Sequential(
        [
            st(iaa.Multiply(mul=(0.25, 1.50))),  # Brightness
            st(iaa.Crop(percent=(0, 0.1))),  # Random Crop
            st(iaa.Dropout((0, 0.7))),  # Pixel Dropout
            st(iaa.Invert(1)),
            st(iaa.Affine(translate_percent=(0, 0.3),
                          shear=(-45, 45))),  # Shear
            st(iaa.Superpixels(p_replace=(0, 0.25), n_segments=100))
        ],
        random_order=True)

    # Visualize Augmentation
    # idx = np.random.choice(np.arange(len(img_array)))
    # seq.show_grid(img_array[idx], cols=8, rows=8)
    # assert 0

    return seq.augment_images(img_array)
Ejemplo n.º 14
0
    def randomDataAugument(self, num_trans):
        # 以下で定義する変換処理の内ランダムに幾つかの処理を選択
        seq = iaa.SomeOf(num_trans, [
            iaa.Affine(rotate=(-90, 90), order=1, mode="edge"),
            iaa.Fliplr(1.0),
            iaa.OneOf([
                # 同じ系統の変換はどれか1つが起きるように 1つにまとめる
                iaa.Affine(translate_percent={"x": (-0.125, 0.125)}, order=1, mode="edge"),
                iaa.Affine(translate_percent={"y": (-0.125, 0.125)}, order=1, mode="edge")
            ]),
            iaa.Affine(scale={"x": (0.8, 1.2), "y": (0.8, 1.2)}, order=1, mode="edge"),
            iaa.OneOf([
                iaa.AdditiveGaussianNoise(scale=[0.05 * 255, 0.2 * 255]),
                iaa.AdditiveLaplaceNoise(scale=[0.05 * 255, 0.2 * 255]),
                iaa.AdditivePoissonNoise(lam=(16.0, 48.0), per_channel=True)
            ]),
            iaa.OneOf([
                iaa.LogContrast((0.5, 1.5)),
                iaa.LinearContrast((0.5, 2.0))
            ]),
            iaa.OneOf([
                iaa.GaussianBlur(sigma=(0.5, 1.0)),
                iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)),
                iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0))
            ]),
            iaa.Invert(1.0)
        ], random_order=True)

        return seq
Ejemplo n.º 15
0
def augmentation_sequence(params):
    if params is None:
        params = dicto.load_("params.yml")

    n_augmenters = params.data_augmentation.n_augmenters

    return iaa.SomeOf(n_augmenters, [
        iaa.Grayscale(alpha=(0.0, 1.0)),
        iaa.GaussianBlur(sigma=(0.0, 3.0)),
        iaa.AverageBlur(k=(2, 9)),
        iaa.MedianBlur(k=(3, 9)),
        iaa.Sharpen(alpha=(0.0, 1.0), lightness=(0.75, 2.0)),
        iaa.Emboss(alpha=(0.0, 1.0), strength=(0.5, 1.5)),
        iaa.Add((-40, 40), per_channel=0.5),
        iaa.AddElementwise((-40, 40), per_channel=0.5),
        iaa.AdditiveGaussianNoise(scale=0.05 * 255, per_channel=0.5),
        iaa.Multiply((0.5, 1.5), per_channel=0.5),
        iaa.MultiplyElementwise((0.5, 1.5), per_channel=0.5),
        iaa.Dropout(p=(0, 0.2), per_channel=0.5),
        iaa.CoarseDropout(0.05, size_percent=0.1),
        iaa.Invert(1.0, per_channel=0.5),
        iaa.ContrastNormalization((0.5, 1.5), per_channel=0.5),
        iaa.ElasticTransformation(alpha=(0, 5.0), sigma=0.25),
        iaa.PiecewiseAffine(scale=(0.01, 0.05)),
    ])
Ejemplo n.º 16
0
def build_seqlist ():
  seq_list = []  # choose aug method here
  seq_list.append(iaa.Sequential([iaa.Fliplr(1)]))
  seq_list.append(iaa.Sequential([iaa.Flipud(1)]))
  seq_list.append(iaa.Sequential([iaa.Crop(percent=(0, 0.1))]))
  seq_list.append(iaa.Sequential([iaa.Affine(
      scale={"x": (0.8, 1.2), "y": (0.8, 1.2)}, # scale images to 80-120% of their size, individually per axis
      translate_percent={"x": (-0.2, 0.2), "y": (-0.2, 0.2)}, # translate by -20 to +20 percent (per axis)
      rotate=(-45, 45), # rotate by -45 to +45 degrees
      shear=(-16, 16), # shear by -16 to +16 degrees
      order=[0, 1], # use nearest neighbour or bilinear interpolation (fast)
      cval=(0, 255), # if mode is constant, use a cval between 0 and 255
      mode=ia.ALL # use any of scikit-image's warping modes (see 2nd image from the top for examples)
  )]))
  seq_list.append(iaa.Sequential([iaa.GaussianBlur((0, 3.0))]))
  seq_list.append(iaa.Sequential([iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5))]))
  seq_list.append(iaa.Sequential([iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0))]))
  seq_list.append(iaa.Sequential([iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05*255), per_channel=0.5)]))
  seq_list.append(iaa.Sequential([iaa.Dropout((0.01, 0.1), per_channel=0.5)]))
  seq_list.append(iaa.Sequential([iaa.CoarseDropout((0.03, 0.15), size_percent=(0.02, 0.05), per_channel=0.2)]))
  seq_list.append(iaa.Sequential([iaa.Invert(0.05, per_channel=True)]))
  seq_list.append(iaa.Sequential([iaa.Add((-10, 10), per_channel=0.5)]))
  seq_list.append(iaa.Sequential([iaa.Multiply((0.5, 1.5), per_channel=0.5)]))
  seq_list.append(iaa.Sequential([iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5)]))
  seq_list.append(iaa.Sequential([iaa.Grayscale(alpha=(0.0, 1.0))]))
  seq_list.append(iaa.Sequential([iaa.ElasticTransformation(alpha=(0.5, 3.5), sigma=0.25)]))
  seq_list.append(iaa.Sequential([iaa.PiecewiseAffine(scale=(0.01, 0.05))]))

  return seq_list
 def augmentation2(image, mask):
     sometimes = lambda aug: iaa.Sometimes(0.5, aug)
     seq = iaa.Sequential(
         [
             sometimes(
                 iaa.CropAndPad(percent=(-0.05, 0.1),
                                pad_mode=ia.ALL,
                                pad_cval=(0, 255))),
             iaa.SomeOf(
                 (0, 5),
                 [
                     sometimes(
                         iaa.Superpixels(p_replace=(0, 1.0),
                                         n_segments=(20, 200))),
                     # convert images into their superpixel representation
                     iaa.OneOf([
                         iaa.GaussianBlur(
                             (0, 3.0)
                         ),  # blur images with a sigma between 0 and 3.0
                         iaa.AverageBlur(k=(2, 7)),
                         # blur image using local means with kernel sizes between 2 and 7
                         iaa.MedianBlur(k=(3, 11)),
                     ]),
                     iaa.Sharpen(alpha=(0, 1.0),
                                 lightness=(0.75, 1.5)),  # sharpen images
                     iaa.Emboss(alpha=(0, 1.0),
                                strength=(0, 2.0)),  # emboss images
                     iaa.SimplexNoiseAlpha(
                         iaa.OneOf([
                             iaa.EdgeDetect(alpha=(0.5, 1.0)),
                             iaa.DirectedEdgeDetect(alpha=(0.5, 1.0),
                                                    direction=(0.0, 1.0)),
                         ])),
                     iaa.AdditiveGaussianNoise(
                         loc=0, scale=(0.0, 0.05 * 255), per_channel=0.5),
                     # add gaussian noise to images
                     iaa.OneOf([
                         iaa.Dropout(
                             (0.01, 0.1), per_channel=0.5
                         ),  # randomly remove up to 10% of the pixels
                         iaa.CoarseDropout((0.03, 0.15),
                                           size_percent=(0.02, 0.05),
                                           per_channel=0.2),
                     ]),
                     iaa.Invert(0.05,
                                per_channel=True),  # invert color channels
                     iaa.Add((-10, 10), per_channel=0.5),
                     iaa.AddToHueAndSaturation(
                         (-20, 20)),  # change hue and saturation
                     iaa.OneOf([
                         iaa.Multiply((0.5, 1.5), per_channel=0.5),
                     ]),
                     iaa.Grayscale(alpha=(0.0, 1.0)),
                 ],
                 random_order=True)
         ],
         random_order=True)
     image_heavy, mask_heavy = seq(images=image, segmentation_maps=mask)
     return image_heavy, mask_heavy
def generateAugSeq():
    sometimes = lambda aug: iaa.Sometimes(0.5, aug)

    return iaa.Sequential([
        sometimes(
            iaa.CropAndPad(
                percent=(-0.05, 0.1), pad_mode=ia.ALL, pad_cval=(0, 255))),
        sometimes(
            iaa.Affine(scale={
                "x": (0.8, 1.2),
                "y": (0.8, 1.2)
            },
                       translate_percent={
                           "x": (-0.2, 0.2),
                           "y": (-0.2, 0.2)
                       },
                       order=[0, 1],
                       cval=(0, 255),
                       mode=ia.ALL)),
        iaa.SomeOf((0, 5), [
            sometimes(iaa.Superpixels(p_replace=(0, 1.0),
                                      n_segments=(20, 200))),
            iaa.OneOf([
                iaa.GaussianBlur((0, 3.0)),
                iaa.AverageBlur(k=(2, 7)),
                iaa.MedianBlur(k=(3, 11)),
            ]),
            iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)),
            iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)),
            iaa.SimplexNoiseAlpha(
                iaa.OneOf([
                    iaa.EdgeDetect(alpha=(0.5, 1.0)),
                    iaa.DirectedEdgeDetect(alpha=(0.5, 1.0),
                                           direction=(0.0, 1.0)),
                ])),
            iaa.AdditiveGaussianNoise(
                loc=0, scale=(0.0, 0.05 * 255), per_channel=0.5),
            iaa.OneOf([
                iaa.Dropout((0.01, 0.1), per_channel=0.5),
                iaa.CoarseDropout(
                    (0.03, 0.15), size_percent=(0.02, 0.05), per_channel=0.2),
            ]),
            iaa.Invert(0.05, per_channel=True),
            iaa.Add((-10, 10), per_channel=0.5),
            iaa.AddToHueAndSaturation((-20, 20)),
            iaa.OneOf([
                iaa.Multiply((0.5, 1.5), per_channel=0.5),
                iaa.FrequencyNoiseAlpha(exponent=(-4, 0),
                                        first=iaa.Multiply(
                                            (0.5, 1.5), per_channel=True),
                                        second=iaa.ContrastNormalization(
                                            (0.5, 2.0)))
            ]),
            iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5),
            iaa.Grayscale(alpha=(0.0, 1.0)),
        ],
                   random_order=True)
    ],
                          random_order=True)
Ejemplo n.º 19
0
    def augment(self):
        image_paths = []
        for root, dirs, files in os.walk(self.source_dir):
            for name in files:
                image_paths.append(os.path.join(root, name))

        # loop over the input images
        j = 0

        for image_path in tqdm(image_paths):
            # load the image, pre-process it, and store it in the data list
            image = cv2.imread(image_path)

            while (True):
                if self.STATE == self.ORIGINAL_IMAGE:
                    cv2.imwrite(image_path, image)
                    self.increment_state()
                    continue

                seq = iaa.Sequential([
                    iaa.Affine(shear=self.STATE[self.SHEAR],
                               cval=(255)),  #Good
                    iaa.Invert(1),
                    iaa.CoarseDropout(self.STATE[self.DAMAGE],
                                      size_percent=self.coarse_dropout),  #Good
                    iaa.Invert(1),
                    #iaa.Sometimes(0.5, iaa.GaussianBlur(sigma=2.0)), #Good
                    #iaa.Resize({"width": (0.5, 0.75), "height": [24, 32, 40]}) #Good
                ])

                images_aug = seq.augment_image(image)

                cv2.imwrite(
                    os.path.split(image_path)[0] + "/Augmented" + str(j) +
                    "-S" + str(self.STATE[self.SHEAR]) + "-D" +
                    str(self.STATE[self.DAMAGE]) + ".jpeg", images_aug)

                state = numpy.around(self.STATE, decimals=2)
                self.STATE = [state[0], state[1]]
                if (self.STATE == self.MAX_STATE):
                    self.STATE = list(self.MIN_STATE)
                    break
                else:
                    self.increment_state()

            j = j + 1
Ejemplo n.º 20
0
 def __init__(self):
     self._seq = iaa.Sequential([
         iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)),
         iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)),
         iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05 * 255), per_channel=0.5),
         iaa.Invert(0.05, per_channel=True),
         iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5),
     ])
Ejemplo n.º 21
0
def main():
    imgs = []
    for f in os.listdir(PATH):
        if not f.endswith('png'):
            continue
        im = cv2.imread(os.path.join(PATH, f))
        imgs.append(im)

    seq = iaa.Sequential([
        iaa.Invert(p=1),
        iaa.Affine(rotate=(-5, 5), scale=(0.5, 1.1)),
        iaa.ElasticTransformation(alpha=10.0, sigma=5.0),
        # iaa.SaltAndPepper(p=0.2),
        iaa.Invert(p=1),
    ])
    seq.show_grid(imgs[:1], cols=1, rows=1)
    seq.show_grid(imgs[2:], cols=1, rows=1)
Ejemplo n.º 22
0
def augmenter_1(p=0.99):
    """Create augmenter.

    Contains no coordinate transforms.

    Parameters
    ----------
    p : float
        Number in [0, 1] representing the probability of a random augmentation happening.

    Returns
    -------
    seq : iaa.Augmenter
        Augmenter where each augmentation was manually inspected and makes
        sense.

    """
    subsubseq_1 = iaa.Multiply(mul=(0.8, 1.2))
    subsubseq_2 = iaa.Sequential([iaa.Sharpen(alpha=(0, 1))])

    subsubseq_3 = iaa.Sequential([iaa.EdgeDetect(alpha=(0, 0.9))])

    subsubseq_4 = iaa.OneOf(
        [iaa.GaussianBlur((0, 3.0)),
         iaa.AverageBlur(k=(2, 7))])

    subsubseq_5 = iaa.AdditiveGaussianNoise(loc=(0, 0.5), scale=(0, 0.2))

    subsubseq_6 = iaa.Add((-0.3, 0.3))

    subsubseq_7 = iaa.Invert(p=1)

    subsubseq_8 = iaa.CoarseDropout(p=0.25, size_percent=(0.005, 0.06))

    subsubseq_9 = iaa.SigmoidContrast(gain=(0.8, 1.2))

    subsubseq_10 = iaa.LinearContrast(alpha=(0.8, 1.2))

    subsubseq_11 = iaa.Sequential([iaa.Emboss(alpha=(0, 1))])

    seq = iaa.Sometimes(
        p,
        iaa.OneOf([
            subsubseq_1,
            subsubseq_2,
            subsubseq_3,
            subsubseq_4,
            subsubseq_5,
            subsubseq_6,
            subsubseq_7,
            subsubseq_8,
            subsubseq_9,
            subsubseq_10,
            subsubseq_11,
        ]),
    )

    return seq
Ejemplo n.º 23
0
 def __init__(self):
     self.aug_img_seq = iaa.Sequential(
         [
             # iaa.Fliplr(0.8),
             # iaa.Flipud(0.8),
             iaa.Invert(1.0),
             # iaa.Crop(percent=0.1)
         ],
         random_order=True)
Ejemplo n.º 24
0
def transform_op(transform):

    if transform == 'flip_h':
        seq = iaa.Sequential([
            iaa.Fliplr(1),
        ])
    elif transform == 'invert':
        seq = iaa.Sequential([
            iaa.Invert(1, True),
        ])
    elif transform == 'brigth':
        seq = iaa.Sequential([
            iaa.Multiply(1.5, True),
        ])
    elif transform == 'dark':
        seq = iaa.Sequential([
            iaa.Multiply(0.5, True),
        ])
    elif transform == 'blur':
        seq = iaa.Sequential([
            iaa.GaussianBlur(0.5),
        ])
    elif transform == 'sharp':
        seq = iaa.Sequential([
            iaa.Sharpen(1, 1.25),
        ])
    elif transform == 'dark_sharp':
        seq = iaa.Sequential([
            iaa.Sharpen(1, 0.25),
        ])
    elif transform == 'gauss_noise':
        seq = iaa.Sequential([
            iaa.AdditiveGaussianNoise(0.03, 10, True),
        ])
    elif transform == 'dropout':
        seq = iaa.Sequential([
            iaa.Dropout(0.08, True),
        ])
    elif transform == 'salt':
        seq = iaa.Sequential([
            iaa.Salt(0.08, True),
        ])
    elif transform == 'salt_pepper':
        seq = iaa.Sequential([
            iaa.SaltAndPepper(0.08, True),
        ])
    elif transform == 'contrast':
        seq = iaa.Sequential([
            iaa.ContrastNormalization(1.5, True),
        ])
    else:
        # So far it's only implemented horizontal flips
        print("Sorry, only those operations listed in help are implemented. \
                Check data_augmentation.py -help for further instructions")
        return None

    return seq
 def build_augmentor(self):
     self.augmentor = iaa.Sometimes(
         0.5,
         iaa.OneOf([
             iaa.ChannelShuffle(p=1.0),
             iaa.Invert(p=1.0, per_channel=True),
             iaa.AddToHueAndSaturation((-45, 45), per_channel=True),
             iaa.Emboss(alpha=1, strength=(0.5, 1.0))
         ]))
Ejemplo n.º 26
0
                def process(l):
                    l = l.strip()
                    if not l:
                        return
                    img_path, formula = l.split(',')
                    formula = ' '.join(list(formula))
                    # check img path
                    if not os.path.isfile(
                            os.path.join(self._raw_dir_images, img_path)):
                        return

                    raw_img = Image.open(
                        os.path.join(self._raw_dir_images,
                                     img_path)).convert('L')
                    self.resize_and_save_img(raw_img, img_path)
                    formulas.append((formula, img_path))

                    if self._use_aug:
                        seq = iaa.Sequential([
                            iaa.Invert(p=1),
                            sometimes(iaa.Affine(rotate=(-10, 10))),
                            sometimes(iaa.Affine(shear=(-10, 10))),
                            sometimes(iaa.Affine(scale=(0.8, 1.3))),
                            sometimes(
                                iaa.ElasticTransformation(alpha=10.0,
                                                          sigma=5.0)),
                            sometimes(
                                iaa.Affine(translate_percent={
                                    "x": (-0.1, 0.1),
                                    "y": (-0.2, 0.0)
                                })),
                            sometimesNoise(
                                iaa.AdditiveGaussianNoise(scale=0.1 * 255)),
                            iaa.Invert(p=1),
                        ])
                        img = np.array(raw_img)
                        # seq.show_grid(img, cols=1, rows=1)

                        for i in xrange(aug_times):
                            image_aug = seq.augment_image(img)
                            image_aug = Image.fromarray(image_aug)
                            path = 'aug_{}_{}'.format(i, img_path)
                            self.resize_and_save_img(image_aug, path)
                            formulas.append((formula, path))
    def get_ill_seq(self):
        light_change = 50
        seq = iaa.Sequential([
            # 全局调整,含有颜色空间调整
            iaa.Sometimes(
                0.5,
                iaa.OneOf([
                    iaa.WithColorspace(
                        to_colorspace="HSV",
                        from_colorspace="RGB",
                        children=iaa.OneOf([
                            iaa.WithChannels(0, iaa.Add((-5, 5))),
                            iaa.WithChannels(1, iaa.Add((-20, 20))),
                            iaa.WithChannels(
                                2, iaa.Add((-light_change, light_change))),
                        ])),
                    iaa.Grayscale((0.2, 0.6)),
                    iaa.ChannelShuffle(1),
                    iaa.Add((-light_change, light_change)),
                    iaa.Multiply((0.5, 1.5)),
                ])),

            # # dropout阴影模仿,暂时不使用,转而使用了自定义的阴影模仿
            # iaa.Sometimes(0.5, iaa.OneOf([
            #     iaa.Alpha((0.2, 0.7), iaa.CoarseDropout(p=0.2, size_percent=(0.02, 0.005)))
            # ])),

            # 椒盐噪声
            iaa.Sometimes(
                0.5,
                iaa.OneOf(
                    [iaa.Alpha((0.2, 0.6), iaa.SaltAndPepper((0.01, 0.03)))])),

            # 图像反转
            iaa.Sometimes(0.5, iaa.OneOf([
                iaa.Invert(1),
            ])),

            # 对比度调整
            iaa.Sometimes(0.5,
                          iaa.OneOf([
                              iaa.ContrastNormalization((0.5, 1.5)),
                          ])),
            iaa.Sometimes(
                0.5,
                iaa.OneOf([
                    iaa.AdditiveGaussianNoise(0, (3, 6)),
                    iaa.AdditivePoissonNoise((3, 6)),
                    iaa.JpegCompression((30, 60)),
                    iaa.GaussianBlur(sigma=1),
                    iaa.AverageBlur((1, 3)),
                    iaa.MedianBlur((1, 3)),
                ])),
        ])
        return seq
Ejemplo n.º 28
0
    def __init__(self):
        self._add_augmentation_list = [
            iaa.Add((-30, 30), per_channel=True),
            iaa.Add((-30, 30), per_channel=False),
            iaa.AddElementwise((-30, 30), per_channel=False),
            iaa.AddElementwise((-30, 30), per_channel=True),
            iaa.Invert(p=0.2, per_channel=True),
            iaa.Invert(p=0.2, per_channel=False),
            iaa.AddToHueAndSaturation((0, 80), True),
            iaa.Multiply((0.8, 1.2), per_channel=True),
            iaa.Multiply((0.8, 1.2), per_channel=False),
            iaa.MultiplyElementwise((0.8, 1.2), per_channel=True),
            iaa.MultiplyElementwise((0.8, 1.2), per_channel=False)
        ]

        self._blur_augmentation_list = [
            iaa.GaussianBlur((2, 3)),
            iaa.AverageBlur((2, 3)),
            iaa.MedianBlur((3, 5)),
            iaa.BilateralBlur((2, 3))
        ]

        self._noise_augmentation_list = [
            iaa.AdditiveGaussianNoise(0, (5, 20), per_channel=True),
            iaa.AdditiveGaussianNoise(0, (5, 20), per_channel=False),
            iaa.Dropout((0.05, 0.15), per_channel=False),
            iaa.Dropout((0.05, 0.15), per_channel=True),
            iaa.CoarseDropout((0.05, 0.15), size_percent=(0.65, 0.85))
        ]

        self._other_augmentation_list = [
            iaa.Sharpen((0.9, 0.11), (0.8, 1.2)),
            iaa.Emboss((0.9, 0.11), (0.3, 1.6)),
            iaa.EdgeDetect((0, 0.4)),
            iaa.Grayscale((0, 1))
        ]

        self.noise_list = self._add_augmentation_list +\
            self._blur_augmentation_list +\
            self._noise_augmentation_list +\
            self._other_augmentation_list
Ejemplo n.º 29
0
def img_aug_seq():
    # first we need switch height and width

    def sometimes(aug):
        return iaa.Sometimes(0.5, aug)

    seq = iaa.Sequential([
        iaa.AdditiveGaussianNoise(scale=(0, 20)),
        iaa.SaltAndPepper(p=0.05),
        sometimes(iaa.Invert(p=1)),
    ])
    return seq
Ejemplo n.º 30
0
def image_augmentor(img, name_img):
    seqs = [
        iaa.Sequential([
            iaa.SaltAndPepper(p=0.03),
        ]),
        iaa.Sequential([
            iaa.Invert(0.1, per_channel=True),
            iaa.GaussianBlur(sigma=(0, 2.0))
        ]),
        iaa.Sequential([
            iaa.Fliplr(0.5),
            iaa.Invert(0.05, per_channel=True),
            iaa.GaussianBlur(sigma=(0, 3.0))
        ]),
        iaa.Sequential([iaa.MotionBlur(k=5)])
    ]
    step = 0
    for seq in seqs:
        images_aug = seq.augment_images(img)
        imgPath = name_img + '_aug_' + str(step) + '.jpg'
        cv2.imwrite(imgPath, images_aug)
        step += 1