示例#1
0
    def test_augment_images__deterministic(self):
        rs = np.random.RandomState(1)
        images = rs.randint(0, 255, size=(32, 4, 4, 3), dtype=np.uint8)

        for deterministic in [False, True]:
            aug = iaa.MultiplyHueAndSaturation(mul=(0.1, 5.0),
                                               deterministic=deterministic)
            images_aug1 = aug.augment_images(images)
            images_aug2 = aug.augment_images(images)
            equal = np.array_equal(images_aug1, images_aug2)
            if deterministic:
                assert equal
            else:
                assert not equal

            aug = iaa.MultiplyHueAndSaturation(mul_hue=(0.1, 5.0),
                                               mul_saturation=(0.1, 5.0),
                                               deterministic=deterministic)
            images_aug1 = aug.augment_images(images)
            images_aug2 = aug.augment_images(images)
            equal = np.array_equal(images_aug1, images_aug2)
            if deterministic:
                assert equal
            else:
                assert not equal
def main():
    image = ia.quokka_square((128, 128))
    images_aug = []

    for mul in np.linspace(0.0, 2.0, 10):
        aug = iaa.MultiplyHueAndSaturation(mul)
        image_aug = aug.augment_image(image)
        images_aug.append(image_aug)

    for mul_hue in np.linspace(0.0, 5.0, 10):
        aug = iaa.MultiplyHueAndSaturation(mul_hue=mul_hue)
        image_aug = aug.augment_image(image)
        images_aug.append(image_aug)

    for mul_saturation in np.linspace(0.0, 5.0, 10):
        aug = iaa.MultiplyHueAndSaturation(mul_saturation=mul_saturation)
        image_aug = aug.augment_image(image)
        images_aug.append(image_aug)

    ia.imshow(ia.draw_grid(images_aug, rows=3))

    images_aug = []
    images_aug.extend(iaa.MultiplyHue().augment_images([image] * 10))
    images_aug.extend(iaa.MultiplySaturation().augment_images([image] * 10))
    ia.imshow(ia.draw_grid(images_aug, rows=2))
示例#3
0
    def __init__(self,
                 coco_dir,
                 set_name='val2014',
                 img_size=416,
                 multiscale=False,
                 phase='Test'):
        super().__init__(coco_dir, set_name, img_size)

        self.coco_dir = coco_dir
        self.set_name = set_name
        self.img_size = img_size
        self.max_objects = 100
        self.min_size = img_size - 3 * 32
        self.max_size = img_size + 3 * 32

        self.multiscale = multiscale
        self.batch_count = 0
        self.augmentation = False

        if phase == 'Train':
            self.augmentation = True

            self.aug_seq = iaa.Sequential([
                iaa.Affine(
                    scale=(0.8, 1.2),
                    rotate=(-10, 10),
                    shear=(-15, 15),
                    translate_percent=(-0.05, 0.05),
                ),
                iaa.Fliplr(p=0.5),
                iaa.MultiplyHueAndSaturation((0.5, 1.5), per_channel=True),
            ])

        self.mosaic = self.augmentation
 def __init__(self):
     self.seq = iaa.Sequential(
         [
             # iaa.Fliplr(0.5), # horizontal flips
             # Small gaussian blur with random sigma between 0 and 0.5.
             # But we only blur about 50% of all images.
             iaa.GaussianBlur(sigma=(0, 0.5)),
             iaa.MotionBlur(k=[5, 12], angle=[-45, 45]),
             # Strengthen or weaken the contrast in each image.
             iaa.Alpha([0.25, 0.35, 0.55],
                       iaa.Sequential([
                           iaa.GaussianBlur(sigma=(60, 100)),
                           iaa.LinearContrast((1, 3)),
                           iaa.Add((0, 30))
                       ])),
             #iaa.Lambda(radial_blur),
             # Add gaussian noise.
             # For 50% of all images, we sample the noise once per pixel.
             # For the other 50% of all images, we sample the noise per pixel AND
             # channel. This can change the color (not only brightness) of the
             # pixels.
             iaa.LinearContrast((0.5, 1.0)),
             iaa.MultiplyHueAndSaturation((0.5, 1.5))
             # iaa.Alpha([0.25, 0.35], iaa.Clouds()),
         ],
         random_order=False)
示例#5
0
    def __init__(self, data_root, image_shape, plus1, mode, \
                 use_subset=False, no_flow=False, precomputed_val=None, \
                 sample_length=5):
        self.no_flow = no_flow
        self.mode = mode
        self.precomputed_val = precomputed_val
        self.sample_length = sample_length
        assert self.mode in ['train', 'val']
        if self.precomputed_val is not None:
            assert self.mode == 'val'
        self.data_root = data_root
        if plus1:
            self.image_shape = [image_shape[0] + 1, image_shape[1] + 1]
        else:
            self.image_shape = list(image_shape)
        setname = '{}_videos_subset.txt' if use_subset else '{}_videos.txt'
        setname = setname.format(self.mode)

        with open(os.path.join(self.data_root, 'frame_corr.json'), 'r') as f:
            self.frame_corr = json.load(f)
        with open(os.path.join(self.data_root, setname), 'r') as f:
            self.samples = self.parse(f)
        #self.samples = self.samples[:240]
        self.dataset_length = len(self.samples)

        # apply to fg, bg
        self.pixel_aug = iaa.Sequential([
            iaa.MultiplyHueAndSaturation(mul=iap.TruncatedNormal(
                1.0, 0.2, 0.5, 1.5)),  # mean, std, low, high
            iaa.GammaContrast(gamma=iap.TruncatedNormal(1.0, 0.2, 0.5, 1.5)),
            iaa.AddToHue(value=iap.TruncatedNormal(0.0, 0.1 * 100, -0.2 *
                                                   255, 0.2 * 255)),
        ])
        self.jpeg_aug = iaa.Sometimes(
            0.6, iaa.JpegCompression(compression=(70, 99)))
示例#6
0
def YOLO():
    """
    Data augmentation model for YOLOv3 training
    """
    return iaa.Sequential([
        iaa.KeepSizeByResize(
            iaa.Affine(
                scale=iap.Normal(1, 0.125),
                translate_percent=0.1,
                cval=128,
            )),
        iaa.Fliplr(0.5),
        iaa.Resize({
            "height": iap.Normal(1, 0.1),
            "width": iap.Normal(1, 0.1)
        }),
        iaa.Resize({
            "longer-side": 416,
            "shorter-side": "keep-aspect-ratio"
        }),
        iaa.PadToFixedSize(416, 416, pad_cval=128),
        iaa.MultiplyHueAndSaturation(mul_hue=iap.Uniform(0, 2),
                                     mul_saturation=iap.Uniform(1 / 1.5, 1.5)),
        iaa.AssertShape((None, 416, 416, 3)),
    ])
    def __init__(self, data_dir, batch_size, image_shape, training=True):
        """
        Keras Sequence object to train a model on larger-than-memory data.
            @:param: data_dir: directory in which we have got the kitti images and the corresponding masks
            @:param: batch_size: define the number of training samples to be propagated.
            @:param: image_shape: shape of the input image
        """

        self.batch_size = batch_size
        self.image_shape = image_shape
        self.training = training
        self.image_paths = glob(os.path.join(data_dir, 'image_2', '*.png'))
        #print(self.image_paths)       
        print("*****************[DATA INFO]*****************")
        if (training):
            print("Found " + str(len(self.image_paths)) + " training images")
        else:
            print("Found " + str(len(self.image_paths)) + " validation images")
        print("*********************************************")
        
        if (training):
            self.label_paths = {re.sub(r'_(lane|road)_', '_', os.path.basename(path)): path
                for path in glob(os.path.join(data_dir, 'gt_image_2', '*_road_*.png'))}
            #glob(os.path.join(data_dir, 'gt_image_2', '*.png'))
        else:
            self.label_paths = {os.path.basename(path): path
                for path in glob(os.path.join(data_dir, 'gt_image_2', '*.png'))}
                    
        #print(self.label_paths)        
        self.sometimes = lambda aug: iaa.Sometimes(0.5, aug)

        self.aug_pipe = iaa.Sequential(
            [
                iaa.SomeOf((0, 5),
                           [
                               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)),
                                   # blur image using local medians with kernel sizes between 2 and 7
                               ]),
                               iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)),  # sharpen images

                               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),  # randomly remove up to 10% of the pixels
                               ]),
                               iaa.Add((-10, 10), per_channel=0.5),
                               # change brightness of images (by -10 to 10 of original value)
                               iaa.Multiply((0.5, 1.5), per_channel=0.5),
                               iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5),  # improve or worsen the contrast
                               iaa.MultiplyHueAndSaturation((0.5, 1.5)),
                           ],
                           random_order=True
                           )
            ],
            random_order=True
        )
示例#8
0
    def hue_transform1(self, image):
        z = image.shape[0]
        para = random.randrange(6, 14, 1)
        hue_m = para / 10
        aug = iaa.MultiplyHueAndSaturation((hue_m, hue_m))
        for stack in range(z):
            image[stack] = aug.augment_image(image[stack])

        return image
示例#9
0
def chapter_augmenters_multiplyhueandsaturation():
    fn_start = "color/multiplyhueandsaturation"

    aug = iaa.MultiplyHueAndSaturation((0.5, 1.5), per_channel=True)
    run_and_save_augseq(fn_start + ".jpg",
                        aug, [ia.quokka(size=(128, 128)) for _ in range(8)],
                        cols=4,
                        rows=2)

    aug = iaa.MultiplyHueAndSaturation(mul_hue=(0.5, 1.5))
    run_and_save_augseq(fn_start + "_mul_hue.jpg",
                        aug, [ia.quokka(size=(128, 128)) for _ in range(8)],
                        cols=4,
                        rows=2)

    aug = iaa.MultiplyHueAndSaturation(mul_saturation=(0.5, 1.5))
    run_and_save_augseq(fn_start + "_mul_saturation.jpg",
                        aug, [ia.quokka(size=(128, 128)) for _ in range(8)],
                        cols=4,
                        rows=2)
示例#10
0
 def test_returns_correct_objects__mul(self):
     aug = iaa.MultiplyHueAndSaturation((0.9, 1.1), per_channel=True)
     assert isinstance(aug, iaa.WithHueAndSaturation)
     assert isinstance(aug.children, iaa.Sequential)
     assert len(aug.children) == 1
     assert isinstance(aug.children[0], iaa.Multiply)
     assert isinstance(aug.children[0].mul, iap.Uniform)
     assert np.isclose(aug.children[0].mul.a.value, 0.9)
     assert np.isclose(aug.children[0].mul.b.value, 1.1)
     assert isinstance(aug.children[0].per_channel, iap.Deterministic)
     assert aug.children[0].per_channel.value == 1
示例#11
0
 def test_returns_correct_objects__mul_saturation(self):
     aug = iaa.MultiplyHueAndSaturation(mul_saturation=(0.9, 1.1))
     assert isinstance(aug, iaa.WithHueAndSaturation)
     assert isinstance(aug.children, iaa.Sequential)
     assert len(aug.children) == 1
     assert isinstance(aug.children[0], iaa.WithChannels)
     assert aug.children[0].channels == [1]
     assert len(aug.children[0].children) == 1
     assert isinstance(aug.children[0].children[0], iaa.Multiply)
     assert isinstance(aug.children[0].children[0].mul, iap.Uniform)
     assert np.isclose(aug.children[0].children[0].mul.a.value, 0.9)
     assert np.isclose(aug.children[0].children[0].mul.b.value, 1.1)
def ol_aug(image, mask):
    # ia.seed(seed)

    # Example batch of images.
    # The array has shape (32, 64, 64, 3) and dtype uint8.
    images = image  # B,H,W,C
    masks = mask  # B,H,W,C

    # print('In Aug',images.shape,masks.shape)
    combo = np.concatenate((images, masks), axis=3)
    # print('COMBO: ',combo.shape)

    seq_all = iaa.Sequential([
        iaa.Fliplr(0.5),  # horizontal flips
        # iaa.PadToFixedSize(width=crop_size[0], height=crop_size[1]),
        # iaa.CropToFixedSize(width=crop_size[0], height=crop_size[1]),
        iaa.Affine(
            scale={"x": (0.9, 1.1), "y": (0.9, 1.1)},
            # scale images to 90-110% of their size, individually per axis
            translate_percent={"x": (-0.1, 0.1), "y": (-0.1, 0.1)},
            # translate by -10 to +10 percent (per axis)
            rotate=(-5, 5),  # rotate by -5 to +5 degrees
            shear=(-3, 3),  # shear by -3 to +3 degrees
        ),
        # iaa.Cutout(nb_iterations=(1, 5), size=0.2, cval=0, squared=False),
    ], random_order=False)  # apply augmenters in random order

    seq_f = iaa.Sequential([
        iaa.Sometimes(0.5,
                      iaa.OneOf([
                          iaa.GaussianBlur((0.0, 3.0)),
                          iaa.MotionBlur(k=(3, 20)),
                      ]),
                      ),
        iaa.Sometimes(0.5,
                      iaa.OneOf([
                          iaa.Multiply((0.8, 1.2), per_channel=0.2),
                          iaa.MultiplyBrightness((0.5, 1.5)),
                          iaa.LinearContrast((0.5, 2.0), per_channel=0.2),
                          iaa.BlendAlpha((0., 1.), iaa.HistogramEqualization()),
                          iaa.MultiplyHueAndSaturation((0.5, 1.5), per_channel=0.2),
                      ]),
                      ),
    ], random_order=False)

    combo_aug = np.array(seq_all.augment_images(images=combo))
    # print('combo_au: ', combo_aug.shape)
    images_aug = combo_aug[:, :, :, :3]
    masks_aug = combo_aug[:, :, :, 3:]
    images_aug = seq_f.augment_images(images=images_aug)

    return images_aug, masks_aug
示例#13
0
def data_augmentation(path):
    ia.seed(2)

    seq = iaa.Sequential([
        iaa.Sometimes(0.5, iaa.Grayscale(alpha=(0.1, 0.5))),
        iaa.Sometimes(0.5, iaa.Multiply((0.5, 1.5), per_channel=0.5)),
        iaa.Sometimes(0.5,
                      iaa.MultiplyHueAndSaturation(mul_saturation=(0.5, 1.5))),
        iaa.Sometimes(0.5, iaa.GaussianBlur(sigma=(0, 2.0))),
        iaa.Sometimes(0.8, iaa.MultiplyBrightness((0.5, 1.5))),
        iaa.AddToBrightness((-30, 30)),
        iaa.Sometimes(0.6,
                      iaa.MultiplyHueAndSaturation(mul_saturation=(0.5, 1.5)))
    ],
                         random_order=True)

    i = 0
    for fname in os.listdir(path):

        try:
            img = imageio.imread(os.path.join(path, fname), pilmode="RGB")
            print(i)
            if i % 5 == 0:
                img_aug = seq.augment_image(img)
                imageio.imwrite(
                    os.path.join(path, fname.replace(".jpg", "_imgaug.jpg")),
                    img_aug)
                fname_txt = fname.replace('.jpg', '.txt')
                print(
                    os.path.join(path,
                                 fname_txt.replace(".txt", "_imgaug.txt")))
                shutil.copyfile(
                    os.path.join(path, fname_txt),
                    os.path.join(path,
                                 fname_txt.replace(".txt", "_imgaug.txt")))

        except:
            print('Error reading img')
        i += 1
def augmentor(images):
    'Apply data augmentation'
    seq = iaa.Sequential(
        [
            # apply the following augmenters to most images
            iaa.Fliplr(0.9),  # horizontally flip 50% of all images
            iaa.Flipud(0.9),  # vertically flip 20% of all images
            iaa.ElasticTransformation(alpha=(10, 20), sigma=6),
            iaa.GammaContrast((0.8, 1.2)),
            iaa.MultiplyHueAndSaturation(mul_hue=(0.6, 1.4)),
            iaa.GaussianBlur((0.0, 0.8)),
        ],
        random_order=True)
    return seq.augment_images(images)
示例#15
0
    def __init__(self, key_source='image', key_target=None):
        super(RandomColorJitter, self).__init__(key_source=key_source,
                                                key_target=key_target)

        self.sequence = iaa.Sequential([
            iaa.Sometimes(
                0.8,
                iaa.Sequential([
                    iaa.MultiplyBrightness((0.8, 1.25)),
                    iaa.MultiplyHueAndSaturation(mul_hue=(0.8, 1.25),
                                                 mul_saturation=(0.8, 1.25))
                ])),
            iaa.Sometimes(0.2, iaa.Grayscale())
        ])
示例#16
0
    def test_augment_images__mul_hue_and_mul_saturation(self):
        # this is almost identical to test_augment_images__mul
        # only
        #     aug = ...
        # and
        #     image_hsv[...] *= 1.2
        # have been changed

        aug = iaa.MultiplyHueAndSaturation(mul_hue=1.5,
                                           mul_saturation=1.6)  # changed

        # example image
        image = np.arange(0, 255).reshape((1, 255, 1)).astype(np.uint8)
        image = np.tile(image, (1, 1, 3))
        image[..., 0] += 0
        image[..., 1] += 5
        image[..., 2] += 10

        # compute expected output
        image_hsv = cv2.cvtColor(image, cv2.COLOR_RGB2HSV)
        image_hsv = image_hsv.astype(np.int16)  # simulate WithHueAndSaturation
        image_hsv[..., 0] = ((image_hsv[..., 0].astype(np.float32) / 180) *
                             255).astype(np.int16)
        image_hsv = image_hsv.astype(np.float32)  # simulate Multiply

        image_hsv[..., 0] *= 1.5
        image_hsv[..., 1] *= 1.6  # changed over __mul
        image_hsv = np.round(image_hsv).astype(np.int16)

        image_hsv[..., 0] = np.mod(image_hsv[..., 0], 255)
        image_hsv[..., 0] = ((image_hsv[..., 0].astype(np.float32) / 255) *
                             180).astype(np.int16)
        image_hsv[..., 1] = np.clip(image_hsv[..., 1], 0, 255)

        image_hsv = image_hsv.astype(np.uint8)
        image_expected = cv2.cvtColor(image_hsv, cv2.COLOR_HSV2RGB)
        assert not np.array_equal(image_expected, image)

        # augment and verify
        images_aug = aug.augment_images(np.stack([image, image], axis=0))
        assert ia.is_np_array(images_aug)
        for image_aug in images_aug:
            assert image_aug.shape == (1, 255, 3)
            diff = np.abs(image_aug.astype(np.int16) - image_expected)
            assert np.all(diff <= 1)
示例#17
0
def _load_augmentation_aug_non_geometric():
    return iaa.Sequential([
        iaa.Sometimes(0.3, iaa.Multiply((0.5, 1.5), per_channel=0.5)),
        iaa.Sometimes(0.2, iaa.JpegCompression(compression=(70, 99))),
        iaa.Sometimes(0.2, iaa.GaussianBlur(sigma=(0, 3.0))),
        iaa.Sometimes(0.2, iaa.MotionBlur(k=15, angle=[-45, 45])),
        iaa.Sometimes(0.2, iaa.MultiplyHue((0.5, 1.5))),
        iaa.Sometimes(0.2, iaa.MultiplySaturation((0.5, 1.5))),
        iaa.Sometimes(
            0.34, iaa.MultiplyHueAndSaturation((0.5, 1.5), per_channel=True)),
        iaa.Sometimes(0.34, iaa.Grayscale(alpha=(0.0, 1.0))),
        iaa.Sometimes(0.2, iaa.ChangeColorTemperature((1100, 10000))),
        iaa.Sometimes(0.1, iaa.GammaContrast((0.5, 2.0))),
        iaa.Sometimes(0.2, iaa.SigmoidContrast(gain=(3, 10),
                                               cutoff=(0.4, 0.6))),
        iaa.Sometimes(0.1, iaa.CLAHE()),
        iaa.Sometimes(0.1, iaa.HistogramEqualization()),
        iaa.Sometimes(0.2, iaa.LinearContrast((0.5, 2.0), per_channel=0.5)),
        iaa.Sometimes(0.1, iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)))
    ])
 def load_augmentation_aug_non_geometric():
     return iaa.Sequential([
         iaa.Sometimes(
             0.5,
             iaa.AdditiveGaussianNoise(loc=0,
                                       scale=(0.0, 0.05 * 255),
                                       per_channel=0.5)),
         iaa.Sometimes(
             0.5,
             iaa.OneOf([
                 iaa.GaussianBlur(sigma=(0.0, 3.0)),
                 iaa.GaussianBlur(sigma=(0.0, 5.0))
             ])),
         iaa.Sometimes(0.5, iaa.MultiplyAndAddToBrightness(mul=(0.4, 1.7))),
         iaa.Sometimes(0.5, iaa.GammaContrast((0.4, 1.7))),
         iaa.Sometimes(0.5, iaa.Multiply((0.4, 1.7), per_channel=0.5)),
         iaa.Sometimes(0.5, iaa.MultiplyHue((0.4, 1.7))),
         iaa.Sometimes(
             0.5, iaa.MultiplyHueAndSaturation((0.4, 1.7),
                                               per_channel=True)),
         iaa.Sometimes(0.5, iaa.LinearContrast((0.4, 1.7), per_channel=0.5))
     ])
示例#19
0
    def __init__(self, da):
        assert check_data_aug(da), 'Parameters for custom data augmentation missing. Should have: {}'.format(
                                    keys_data_aug)

        aug_geometric = [iaa.Affine(scale=(da['scalem'], da['scaleM']),
                                    translate_percent={'x': (-da['trans'], da['trans']),
                                                       'y': (-da['trans'], da['trans'])},
                                    rotate=(-da['rot'], da['rot']),
                                    shear=(-da['shear'], da['shear']),
                                    cval=FILL_COLOR),
                         iaa.PerspectiveTransform(scale=(0, da['pers']),
                                                  cval=FILL_COLOR, keep_size=True)]

        aug_camera = [iaa.GaussianBlur(sigma=(0, da['sigma'])),
                      iaa.MotionBlur(k=(da['mot_km'], da['mot_kM']),
                                     angle=(-da['mot_an'], da['mot_an']),
                                     direction=(da['mot_dm'], da['mot_dM'])),
                      iaa.JpegCompression(compression=(da['jpegm'], da['jpegM'])),
                      iaa.LinearContrast(alpha=(da['con_alpham'], da['con_alphaM']),
                                         per_channel=da['con_chan']),
                      iaa.MultiplyHueAndSaturation(mul=(da['col_mulm'], da['col_mulM']),
                                                   per_channel=da['col_chan'],
                                                   from_colorspace='BGR'),
                      iaa.AddToHueAndSaturation((da['col_addm'], da['col_addM']),
                                                per_channel=da['col_chan'])
                      ]

        cutout = iaa.Cutout(nb_iterations=(0, da['co_num']),
                            size=(da['co_sm'], da['co_sM']),
                            squared=False,
                            cval=FILL_COLOR)

        # Create a mix of all others
        self.augmenter = iaa.Sequential([iaa.SomeOf((0, 1), aug_geometric),  # none or 1
                                         iaa.SomeOf((0, len(aug_camera) - 2), aug_camera),  # from none to all-2
                                         cutout], random_order=True)  # mix the apply order
示例#20
0
    .loc[lambda df: df.label == "ASSIETTE_26"]
    .pipe(RandomAssignment("tray_name"))
)

train_set = all_annotations.loc[lambda df: df.random_split == "train"]
support_set = train_set.assign(crop_coordinates=lambda df: df[["x1", "y1", "x2", "y2"]].agg(list, axis=1))
val_set = all_annotations.loc[lambda df: df.random_split == "val"]

#%% Init training
query_preprocessing = iaa.Sequential(
    [
        iaa.Resize({"longer-side": 416, "shorter-side": "keep-aspect-ratio"}),
        iaa.PadToFixedSize(416, 416),
        iaa.Fliplr(0.5),
        iaa.Flipud(0.5),
        iaa.MultiplyHueAndSaturation(mul_hue=iap.Uniform(0, 2), mul_saturation=iap.Uniform(1 / 1.5, 1.5)),
        iaa.AssertShape((None, 416, 416, 3)),
    ]
)

support_preprocessing = iaa.Sequential(
    [
        iaa.Fliplr(0.5),
        iaa.Flipud(0.5),
        iaa.Affine(rotate=(-180, 180)),
        iaa.Resize({"longer-side": 128, "shorter-side": "keep-aspect-ratio"}),
        iaa.PadToFixedSize(128, 128, pad_mode="symmetric"),
        iaa.MultiplyHueAndSaturation(mul_hue=iap.Uniform(0, 2), mul_saturation=iap.Uniform(1 / 1.5, 1.5)),
        iaa.AssertShape((None, 128, 128, 3)),
    ]
)
示例#21
0
##augmentation functions used in sequences pipeline
seq1 = iaa.Sequential([
    iaa.AdditiveGaussianNoise(scale=(0, 0.3), per_channel=True),
    iaa.Add((-25, 60)),
    iaa.JpegCompression(compression=(30, 87)),
    iaa.MedianBlur(k=(1, 3)),
    iaa.PiecewiseAffine(scale=(0.01, 0.05)),
    iaa.Fliplr(0.5),
    iaa.Flipud(0.5),
    iaa.CoarseDropout((0.0, 0.09), size_percent=(0.02, 0.15))
],
                      random_order=True)

seq2 = iaa.Sequential([
    iaa.GaussianBlur(sigma=(0, 3)),
    iaa.MultiplyHueAndSaturation((0.5, 1.5)),
    iaa.JpegCompression(compression=(45, 87)),
    iaa.PiecewiseAffine(scale=(0.01, 0.05)),
    iaa.SaltAndPepper(p=(0.1, 0.15), per_channel=True),
    iaa.Fliplr(0.5),
    iaa.Flipud(0.5),
    iaa.CoarseDropout((0.0, 0.09), size_percent=(0.02, 0.15))
],
                      random_order=True)

##divide the dataset into two batches
first_image_list = []
second_image_list = []
first_segmap_list = []
second_segmap_list = []
j = len(image_name_list)
示例#22
0
path = 'idcard/'

sqe_list = [
    iaa.ChangeColorspace(from_colorspace="RGB", to_colorspace="HSV"),
    iaa.WithChannels(0, iaa.Add((-50, 50))),
    iaa.WithChannels(1, iaa.Add((-50, 50))),
    iaa.WithChannels(2, iaa.Add((-50, 50))),
    iaa.ChangeColorspace(from_colorspace="HSV", to_colorspace="RGB"),
    iaa.Add((-80, 80), per_channel=0.5),
    iaa.Multiply((0.5, 1.5), per_channel=0.5),
    iaa.AverageBlur(k=((5), (1, 3))),
    iaa.AveragePooling(2),
    iaa.AddElementwise((-20, -5)),
    iaa.AdditiveGaussianNoise(scale=(0, 0.05 * 255)),
    iaa.JpegCompression(compression=(50, 99)),
    iaa.MultiplyHueAndSaturation(mul_hue=(0.5, 1.5)),
    iaa.WithBrightnessChannels(iaa.Add((-50, 50))),
    iaa.WithBrightnessChannels(iaa.Add((-50, 50)),
                               to_colorspace=[iaa.CSPACE_Lab, iaa.CSPACE_HSV]),
    iaa.MaxPooling(2),
    iaa.MinPooling((1, 2)),
    # iaa.Superpixels(p_replace=(0.1, 0.2), n_segments=(16, 128)),
    iaa.Clouds(),
    iaa.Fog(),
    iaa.AdditiveGaussianNoise(scale=0.1 * 255, per_channel=True),
    iaa.Dropout(p=(0, 0.2)),

    # iaa.WithChannels(0, iaa.Affine(rotate=(0, 0))),
    iaa.ChannelShuffle(0.35),
    iaa.WithColorspace(to_colorspace="HSV",
                       from_colorspace="RGB",
示例#23
0
                                                per_channel=0.5),

                   ]),
                   # Dropout some pixels
                   iaa.OneOf([
                       iaa.Dropout((0.01, 0.1), per_channel=0.5),
                       iaa.CoarseDropout((0.01, 0.1),
                                         size_percent=(0.01, 0.5),
                                         per_channel=0.5),
                       iaa.SaltAndPepper((0.01, 0.3))
                   ]),
                   # Play with the colors of the image
                   iaa.OneOf([
                       iaa.Invert(0.01, per_channel=0.5),
                       iaa.AddToHueAndSaturation((-1, 1)),
                       iaa.MultiplyHueAndSaturation((-1, 1))
                   ]),
                   # Change brightness and contrast
                   iaa.OneOf([
                       iaa.Add((-10, 10), per_channel=0.5),
                       iaa.Multiply((0.5, 1.5), per_channel=0.5),
                       iaa.GammaContrast(gamma=(0.5, 1.75), per_channel=0.5),
                       iaa.SigmoidContrast(cutoff=(0, 1), per_channel=0.5),
                       iaa.LogContrast(gain=(0.5, 1), per_channel=0.5),
                       iaa.LinearContrast(alpha=(0.25, 1.75), per_channel=0.5),
                       iaa.HistogramEqualization()
                   ]),
                   sometimes(iaa.ElasticTransformation(alpha=(0.5, 3.5),
                                                       sigma=0.25)),
                   # move pixels locally around (with random strengths)
                   sometimes(iaa.PiecewiseAffine(scale=(0.01, 0.05))),
sometimes = lambda aug: iaa.Sometimes(0.5, aug)

AUGMENTATIONS = iaa.Sequential([
    iaa.Fliplr(0.5),
    iaa.Flipud(0.5),
    sometimes(iaa.Affine(
        scale=(0.8, 1.2),
        rotate=(90),
        mode=ia.ALL)),
    sometimes(iaa.ElasticTransformation(alpha=(0.8, 1.2),\
                                        sigma=(9.0, 11.0))),
    sometimes(iaa.AdditiveGaussianNoise(scale=(0, 0.1))),
    sometimes(iaa.GaussianBlur((0, 0.1))),
    sometimes(iaa.MultiplyBrightness((0.65, 1.35))),
    sometimes(iaa.LinearContrast((0.5, 1.5))),
    sometimes(iaa.MultiplyHueAndSaturation((-1, 1)))
    ], random_order=True)

# instantiate datagen objects
train_datagen = ImageDataAugmentor(
    #     featurewise_center=True,
    #     featurewise_std_normalization=True,
    augment=AUGMENTATIONS,
    rescale=1. / 255,
    preprocess_input=None)

val_datagen = ImageDataAugmentor(rescale=1. / 255)

# define the ImageNet mean subtraction (in RGB order)
mean = np.array([123.68, 116.779, 103.939], dtype="float32")
# set the mean subtraction value for each of the data augmentation objects
示例#25
0
    def __getitem__(self, index):
        mosaic_pro = random.random()
        if mosaic_pro > 0:
            img_id = self.images[index]
            img, labels = self.load_mosaic(index)
            all_ann = []
            for da_label in labels:
                da_label = da_label.tolist()
                for da_l in da_label:
                    all_ann.append(da_l)
            num_objs = min(len(all_ann), self.max_objs)
        else:
            positive_aug = random.random()
            if positive_aug > 2:
                index1 = random.randint(0, self.num_samples - 1)
                # chartlet_dir = "/home/raid5/daming/HandDataMix/TrainImg/AnnImgMix"
                img_id = self.images[index]
                img_id1 = self.images[index1]

                file_name = self.coco.loadImgs(ids=[img_id])[0]['file_name']
                file_name1 = self.coco.loadImgs(ids=[img_id1])[0]['file_name']

                path_num = random.random()
                img_path = os.path.join(self.img_dir, file_name)
                img_path1 = os.path.join(self.img_dir, file_name1)
                # if path_num > 0.5:
                #   img_path = os.path.join(chartlet_dir, file_name)

                ann_ids = self.coco.getAnnIds(imgIds=[img_id])
                ann_ids1 = self.coco.getAnnIds(imgIds=[img_id1])

                anns = self.coco.loadAnns(ids=ann_ids)
                anns1 = self.coco.loadAnns(ids=ann_ids1)

                img = cv2.imread(img_path)
                img1 = cv2.imread(img_path1)
                hand_num = len(anns1)
                if hand_num > 0:
                    for ann1 in anns1:
                        ran_id = random.randint(0, 26000)
                        hand_x = ann1['bbox'][0]
                        hand_y = ann1['bbox'][1]
                        hand_w = ann1['bbox'][2]
                        hand_h = ann1['bbox'][3]
                        temp = img1[hand_y:hand_y + hand_h,
                                    hand_x:hand_x + hand_w]
                        temp_h, temp_w, c = temp.shape
                        src_h, src_w, src_c = img.shape
                        for n in range(100):
                            min_src = min(src_w, src_h)
                            max_temp = max(temp_h, temp_w)
                            if (max_temp > 0.5 * min_src):
                                break
                            if (src_w < temp_w or src_h < temp_h):
                                break
                            x_tmp = random.randint(0, src_w - temp_w)
                            y_tmp = random.randint(0, src_h - temp_h)
                            src_rect = [
                                x_tmp, y_tmp, x_tmp + temp_w, y_tmp + temp_h
                            ]
                            iou_all = 0
                            for gt in anns:
                                gt = [
                                    gt['bbox'][0], gt['bbox'][1],
                                    gt['bbox'][0] + gt['bbox'][2],
                                    gt['bbox'][1] + gt['bbox'][3]
                                ]
                                iou = self.compute_iou(gt, src_rect)
                                iou_all = iou_all + iou
                                # print(iou_all)
                                if iou_all == 0:
                                    img[y_tmp:y_tmp + temp_h,
                                        x_tmp:x_tmp + temp_w] = temp
                                    a = {
                                        'bbox': [x_tmp, y_tmp, temp_w, temp_h],
                                        'category_id': 1
                                    }
                                    anns.append(a)
                                    break
                    num_objs = min(len(anns), self.max_objs)
            else:
                img_id = self.images[index]
                file_name = self.coco.loadImgs(ids=[img_id])[0]['file_name']
                # daming_dir = "/home/raid5/daming/HandDataMix/TrainImg/AnnImgMix"
                img_path = os.path.join(self.img_dir, file_name)
                # img_path1 = os.path.join(daming_dir, file_name)
                ann_ids = self.coco.getAnnIds(imgIds=[img_id])
                anns = self.coco.loadAnns(ids=ann_ids)
                num_objs = min(len(anns), self.max_objs)
                img = cv2.imread(img_path)
                # daming_num = random.random()
                # if daming_num > 0.5:
                #   img = cv2.imread(img_path)
                # else:
                #   img = cv2.imread(img_path1)

        gray_pro = random.random()
        if gray_pro > 2:
            img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
            img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)

        height, width = img.shape[0], img.shape[1]
        c = np.array([img.shape[1] / 2., img.shape[0] / 2.], dtype=np.float32)
        if self.opt.keep_res:
            input_h = (height | self.opt.pad) + 1
            input_w = (width | self.opt.pad) + 1
            s = np.array([input_w, input_h], dtype=np.float32)
        else:
            s = max(img.shape[0], img.shape[1]) * 1.0
            input_h, input_w = self.opt.input_h, self.opt.input_w

        flipped = False
        if self.split == 'train':
            if not self.opt.not_rand_crop:
                s = s * np.random.choice(np.arange(0.6, 1.4, 0.1))
                # s = s * np.random.choice(np.arange(0.3, 1.2, 0.1))
                w_border = self._get_border(128, img.shape[1])
                h_border = self._get_border(128, img.shape[0])
                c[0] = np.random.randint(low=w_border,
                                         high=img.shape[1] - w_border)
                c[1] = np.random.randint(low=h_border,
                                         high=img.shape[0] - h_border)
            else:
                sf = self.opt.scale
                cf = self.opt.shift
                c[0] += s * np.clip(np.random.randn() * cf, -2 * cf, 2 * cf)
                c[1] += s * np.clip(np.random.randn() * cf, -2 * cf, 2 * cf)
                s = s * np.clip(np.random.randn() * sf + 1, 1 - sf, 1 + sf)

            if np.random.random() < self.opt.flip:
                flipped = True
                img = img[:, ::-1, :]
                c[0] = width - c[0] - 1

        trans_input = get_affine_transform(c, s, 0, [input_w, input_h])
        inp = cv2.warpAffine(img,
                             trans_input, (input_w, input_h),
                             flags=cv2.INTER_LINEAR)
        iaa_pro = random.random()
        if iaa_pro > 2:
            aug_seq = iaa.Sequential(
                [iaa.MultiplyHueAndSaturation((0.5, 1.5), per_channel=True)])
            #   aug_seq = iaa.Sequential([
            #     iaa.Sometimes(
            #         0.5,
            #         iaa.GaussianBlur(sigma=(0, 0.5))
            #     ),
            #     iaa.LinearContrast((0.75, 1.5)),
            #     iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05*255), per_channel=0.5),
            #     iaa.Multiply((0.8, 1.2), per_channel=0.2),
            # ], random_order=True)
            inp, _ = aug_seq(image=inp, bounding_boxes=None)
        inp = (inp.astype(np.float32) / 255.)
        if self.split == 'train' and not self.opt.no_color_aug:
            color_aug(self._data_rng, inp, self._eig_val, self._eig_vec)
        inp = (inp - self.mean) / self.std
        inp = inp.transpose(2, 0, 1)

        output_h = input_h // self.opt.down_ratio
        output_w = input_w // self.opt.down_ratio
        num_classes = self.num_classes
        trans_output = get_affine_transform(c, s, 0, [output_w, output_h])

        hm = np.zeros((num_classes, output_h, output_w), dtype=np.float32)
        wh = np.zeros((self.max_objs, 2), dtype=np.float32)
        dense_wh = np.zeros((2, output_h, output_w), dtype=np.float32)
        # ind is the center index, reg is the offset of center point in extracted feature maps
        reg = np.zeros((self.max_objs, 2), dtype=np.float32)
        ind = np.zeros((self.max_objs), dtype=np.int64)
        reg_mask = np.zeros((self.max_objs), dtype=np.uint8)
        cat_spec_wh = np.zeros((self.max_objs, num_classes * 2),
                               dtype=np.float32)
        cat_spec_mask = np.zeros((self.max_objs, num_classes * 2),
                                 dtype=np.uint8)

        draw_gaussian = draw_msra_gaussian if self.opt.mse_loss else \
            draw_umich_gaussian

        gt_det = []
        for k in range(num_objs):
            if mosaic_pro > 0:
                ann = all_ann[k]
                bbox = np.array([
                    float(ann[0]),
                    float(ann[1]),
                    float(ann[2]),
                    float(ann[3])
                ],
                                dtype=np.float32)
            else:
                ann = anns[k]
                bbox = self._coco_box_to_bbox(ann['bbox'])
            cls_id = 0
            if flipped:
                bbox[[0, 2]] = width - bbox[[2, 0]] - 1
            bbox[:2] = affine_transform(bbox[:2], trans_output)
            bbox[2:] = affine_transform(bbox[2:], trans_output)
            bbox[[0, 2]] = np.clip(bbox[[0, 2]], 0, output_w - 1)
            bbox[[1, 3]] = np.clip(bbox[[1, 3]], 0, output_h - 1)
            h, w = bbox[3] - bbox[1], bbox[2] - bbox[0]
            if h > 0 and w > 0:
                # print("- h : ", h," - w : ", w)
                radius = gaussian_radius((math.ceil(h), math.ceil(w)))
                radius = max(0, int(radius))
                radius = self.opt.hm_gauss if self.opt.mse_loss else radius
                ct = np.array([(bbox[0] + bbox[2]) / 2,
                               (bbox[1] + bbox[3]) / 2],
                              dtype=np.float32)
                ct_int = ct.astype(np.int32)
                draw_gaussian(hm[cls_id], ct_int, radius)
                wh[k] = 1. * w, 1. * h
                ind[k] = ct_int[1] * output_w + ct_int[0]
                reg[k] = ct - ct_int
                reg_mask[k] = 1
                cat_spec_wh[k, cls_id * 2:cls_id * 2 + 2] = wh[k]
                cat_spec_mask[k, cls_id * 2:cls_id * 2 + 2] = 1
                if self.opt.dense_wh:
                    draw_dense_reg(dense_wh, hm.max(axis=0), ct_int, wh[k],
                                   radius)
                gt_det.append([
                    ct[0] - w / 2, ct[1] - h / 2, ct[0] + w / 2, ct[1] + h / 2,
                    1, cls_id
                ])
        ret = {
            'input': inp,
            'hm': hm,
            'reg_mask': reg_mask,
            'ind': ind,
            'wh': wh
        }
        if self.opt.dense_wh:
            hm_a = hm.max(axis=0, keepdims=True)
            dense_wh_mask = np.concatenate([hm_a, hm_a], axis=0)
            ret.update({'dense_wh': dense_wh, 'dense_wh_mask': dense_wh_mask})
            del ret['wh']
        elif self.opt.cat_spec_wh:
            ret.update({
                'cat_spec_wh': cat_spec_wh,
                'cat_spec_mask': cat_spec_mask
            })
            del ret['wh']
        if self.opt.reg_offset:
            ret.update({'reg': reg})
        if self.opt.debug > 0 or not self.split == 'train':
            gt_det = np.array(gt_det, dtype=np.float32) if len(gt_det) > 0 else \
                np.zeros((1, 6), dtype=np.float32)
            meta = {'c': c, 's': s, 'gt_det': gt_det, 'img_id': img_id}
            ret['meta'] = meta

        return ret
示例#26
0
import imgaug.augmenters as iaa
import random

import numpy as np
import cv2
from PIL import Image

aug_transform = iaa.SomeOf((0, None), [
    iaa.OneOf([
        iaa.MultiplyAndAddToBrightness(mul=(0.3, 1.6), add=(-50, 50)),
        iaa.MultiplyHueAndSaturation((0.5, 1.5), per_channel=True),
        iaa.ChannelShuffle(0.5),
        iaa.RemoveSaturation(),
        iaa.Grayscale(alpha=(0.0, 1.0)),
        iaa.ChangeColorTemperature((1100, 35000)),
    ]),
    iaa.OneOf([
        iaa.MedianBlur(k=(3, 7)),
        iaa.BilateralBlur(
            d=(3, 10), sigma_color=(10, 250), sigma_space=(10, 250)),
        iaa.MotionBlur(k=(3, 9), angle=[-45, 45]),
        iaa.MeanShiftBlur(spatial_radius=(5.0, 10.0),
                          color_radius=(5.0, 10.0)),
        iaa.AllChannelsCLAHE(clip_limit=(1, 10)),
        iaa.AllChannelsHistogramEqualization(),
        iaa.GammaContrast((0.5, 1.5), per_channel=True),
        iaa.GammaContrast((0.5, 1.5)),
        iaa.SigmoidContrast(gain=(3, 10), cutoff=(0.4, 0.6), per_channel=True),
        iaa.SigmoidContrast(gain=(3, 10), cutoff=(0.4, 0.6)),
        iaa.HistogramEqualization(),
        iaa.Sharpen(alpha=0.5)
color_augmentation = args.color
geometric_augmentation = args.geometric
all_aumenters = args.all


augmenters = [
    iaa.Dropout(p=(0, 0.1)),
    iaa.CoarseDropout((0.01, 0.05), size_percent=0.1),
    iaa.Multiply((0.5, 1.3), per_channel=(0.2)),
    iaa.GaussianBlur(sigma=(0, 5)),
    iaa.AdditiveGaussianNoise(scale=((0, 0.2*255))),
    iaa.ContrastNormalization((0.5, 1.5)),
    iaa.Grayscale(alpha=((0.1, 1))),
    iaa.ElasticTransformation(alpha=(0, 5.0), sigma=0.25),
    iaa.PerspectiveTransform(scale=(0.15)),
    iaa.MultiplyHueAndSaturation((0.7)),

    iaa.Affine(scale=((0.6, 1.2))),
    iaa.Affine(translate_percent=(-0.3, 0.3)),
    iaa.Affine(shear=(-25, 25)),
    iaa.Affine(translate_percent={"x": (-0.3, 0.3), "y": (-0.2, 0.2)}),
    iaa.Fliplr(1),
    iaa.Affine(scale={"x": (0.6, 1.4), "y": (0.6, 1.4)})
]
if all_aumenters > 0:
    some_of_all = iaa.SomeOf(all_aumenters, augmenters)


# pixel manipulation
color_augmenters = [
    iaa.Dropout(p=(0, 0.1)),
def create_augmenters(height, width, height_augmentable, width_augmentable,
                      only_augmenters):
    def lambda_func_images(images, random_state, parents, hooks):
        return images

    def lambda_func_heatmaps(heatmaps, random_state, parents, hooks):
        return heatmaps

    def lambda_func_keypoints(keypoints, random_state, parents, hooks):
        return keypoints

    def assertlambda_func_images(images, random_state, parents, hooks):
        return True

    def assertlambda_func_heatmaps(heatmaps, random_state, parents, hooks):
        return True

    def assertlambda_func_keypoints(keypoints, random_state, parents, hooks):
        return True

    augmenters_meta = [
        iaa.Sequential([iaa.Noop(), iaa.Noop()],
                       random_order=False,
                       name="Sequential_2xNoop"),
        iaa.Sequential([iaa.Noop(), iaa.Noop()],
                       random_order=True,
                       name="Sequential_2xNoop_random_order"),
        iaa.SomeOf((1, 3),
                   [iaa.Noop(), iaa.Noop(), iaa.Noop()],
                   random_order=False,
                   name="SomeOf_3xNoop"),
        iaa.SomeOf((1, 3),
                   [iaa.Noop(), iaa.Noop(), iaa.Noop()],
                   random_order=True,
                   name="SomeOf_3xNoop_random_order"),
        iaa.OneOf([iaa.Noop(), iaa.Noop(), iaa.Noop()], name="OneOf_3xNoop"),
        iaa.Sometimes(0.5, iaa.Noop(), name="Sometimes_Noop"),
        iaa.WithChannels([1, 2], iaa.Noop(), name="WithChannels_1_and_2_Noop"),
        iaa.Noop(name="Noop"),
        iaa.Lambda(func_images=lambda_func_images,
                   func_heatmaps=lambda_func_heatmaps,
                   func_keypoints=lambda_func_keypoints,
                   name="Lambda"),
        iaa.AssertLambda(func_images=assertlambda_func_images,
                         func_heatmaps=assertlambda_func_heatmaps,
                         func_keypoints=assertlambda_func_keypoints,
                         name="AssertLambda"),
        iaa.AssertShape((None, height_augmentable, width_augmentable, None),
                        name="AssertShape"),
        iaa.ChannelShuffle(0.5, name="ChannelShuffle")
    ]
    augmenters_arithmetic = [
        iaa.Add((-10, 10), name="Add"),
        iaa.AddElementwise((-10, 10), name="AddElementwise"),
        #iaa.AddElementwise((-500, 500), name="AddElementwise"),
        iaa.AdditiveGaussianNoise(scale=(5, 10), name="AdditiveGaussianNoise"),
        iaa.AdditiveLaplaceNoise(scale=(5, 10), name="AdditiveLaplaceNoise"),
        iaa.AdditivePoissonNoise(lam=(1, 5), name="AdditivePoissonNoise"),
        iaa.Multiply((0.5, 1.5), name="Multiply"),
        iaa.MultiplyElementwise((0.5, 1.5), name="MultiplyElementwise"),
        iaa.Dropout((0.01, 0.05), name="Dropout"),
        iaa.CoarseDropout((0.01, 0.05),
                          size_percent=(0.01, 0.1),
                          name="CoarseDropout"),
        iaa.ReplaceElementwise((0.01, 0.05), (0, 255),
                               name="ReplaceElementwise"),
        #iaa.ReplaceElementwise((0.95, 0.99), (0, 255), name="ReplaceElementwise"),
        iaa.SaltAndPepper((0.01, 0.05), name="SaltAndPepper"),
        iaa.ImpulseNoise((0.01, 0.05), name="ImpulseNoise"),
        iaa.CoarseSaltAndPepper((0.01, 0.05),
                                size_percent=(0.01, 0.1),
                                name="CoarseSaltAndPepper"),
        iaa.Salt((0.01, 0.05), name="Salt"),
        iaa.CoarseSalt((0.01, 0.05),
                       size_percent=(0.01, 0.1),
                       name="CoarseSalt"),
        iaa.Pepper((0.01, 0.05), name="Pepper"),
        iaa.CoarsePepper((0.01, 0.05),
                         size_percent=(0.01, 0.1),
                         name="CoarsePepper"),
        iaa.Invert(0.1, name="Invert"),
        # ContrastNormalization
        iaa.JpegCompression((50, 99), name="JpegCompression")
    ]
    augmenters_blend = [
        iaa.Alpha((0.01, 0.99), iaa.Noop(), name="Alpha"),
        iaa.AlphaElementwise((0.01, 0.99), iaa.Noop(),
                             name="AlphaElementwise"),
        iaa.SimplexNoiseAlpha(iaa.Noop(), name="SimplexNoiseAlpha"),
        iaa.FrequencyNoiseAlpha((-2.0, 2.0),
                                iaa.Noop(),
                                name="FrequencyNoiseAlpha")
    ]
    augmenters_blur = [
        iaa.GaussianBlur(sigma=(1.0, 5.0), name="GaussianBlur"),
        iaa.AverageBlur(k=(3, 11), name="AverageBlur"),
        iaa.MedianBlur(k=(3, 11), name="MedianBlur"),
        iaa.BilateralBlur(d=(3, 11), name="BilateralBlur"),
        iaa.MotionBlur(k=(3, 11), name="MotionBlur")
    ]
    augmenters_color = [
        # InColorspace (deprecated)
        iaa.WithColorspace(to_colorspace="HSV",
                           children=iaa.Noop(),
                           name="WithColorspace"),
        iaa.WithHueAndSaturation(children=iaa.Noop(),
                                 name="WithHueAndSaturation"),
        iaa.MultiplyHueAndSaturation((0.8, 1.2),
                                     name="MultiplyHueAndSaturation"),
        iaa.MultiplyHue((-1.0, 1.0), name="MultiplyHue"),
        iaa.MultiplySaturation((0.8, 1.2), name="MultiplySaturation"),
        iaa.AddToHueAndSaturation((-10, 10), name="AddToHueAndSaturation"),
        iaa.AddToHue((-10, 10), name="AddToHue"),
        iaa.AddToSaturation((-10, 10), name="AddToSaturation"),
        iaa.ChangeColorspace(to_colorspace="HSV", name="ChangeColorspace"),
        iaa.Grayscale((0.01, 0.99), name="Grayscale"),
        iaa.KMeansColorQuantization((2, 16), name="KMeansColorQuantization"),
        iaa.UniformColorQuantization((2, 16), name="UniformColorQuantization")
    ]
    augmenters_contrast = [
        iaa.GammaContrast(gamma=(0.5, 2.0), name="GammaContrast"),
        iaa.SigmoidContrast(gain=(5, 20),
                            cutoff=(0.25, 0.75),
                            name="SigmoidContrast"),
        iaa.LogContrast(gain=(0.7, 1.0), name="LogContrast"),
        iaa.LinearContrast((0.5, 1.5), name="LinearContrast"),
        iaa.AllChannelsCLAHE(clip_limit=(2, 10),
                             tile_grid_size_px=(3, 11),
                             name="AllChannelsCLAHE"),
        iaa.CLAHE(clip_limit=(2, 10),
                  tile_grid_size_px=(3, 11),
                  to_colorspace="HSV",
                  name="CLAHE"),
        iaa.AllChannelsHistogramEqualization(
            name="AllChannelsHistogramEqualization"),
        iaa.HistogramEqualization(to_colorspace="HSV",
                                  name="HistogramEqualization"),
    ]
    augmenters_convolutional = [
        iaa.Convolve(np.float32([[0, 0, 0], [0, 1, 0], [0, 0, 0]]),
                     name="Convolve_3x3"),
        iaa.Sharpen(alpha=(0.01, 0.99), lightness=(0.5, 2), name="Sharpen"),
        iaa.Emboss(alpha=(0.01, 0.99), strength=(0, 2), name="Emboss"),
        iaa.EdgeDetect(alpha=(0.01, 0.99), name="EdgeDetect"),
        iaa.DirectedEdgeDetect(alpha=(0.01, 0.99), name="DirectedEdgeDetect")
    ]
    augmenters_edges = [iaa.Canny(alpha=(0.01, 0.99), name="Canny")]
    augmenters_flip = [
        iaa.Fliplr(1.0, name="Fliplr"),
        iaa.Flipud(1.0, name="Flipud")
    ]
    augmenters_geometric = [
        iaa.Affine(scale=(0.9, 1.1),
                   translate_percent={
                       "x": (-0.05, 0.05),
                       "y": (-0.05, 0.05)
                   },
                   rotate=(-10, 10),
                   shear=(-10, 10),
                   order=0,
                   mode="constant",
                   cval=(0, 255),
                   name="Affine_order_0_constant"),
        iaa.Affine(scale=(0.9, 1.1),
                   translate_percent={
                       "x": (-0.05, 0.05),
                       "y": (-0.05, 0.05)
                   },
                   rotate=(-10, 10),
                   shear=(-10, 10),
                   order=1,
                   mode="constant",
                   cval=(0, 255),
                   name="Affine_order_1_constant"),
        iaa.Affine(scale=(0.9, 1.1),
                   translate_percent={
                       "x": (-0.05, 0.05),
                       "y": (-0.05, 0.05)
                   },
                   rotate=(-10, 10),
                   shear=(-10, 10),
                   order=3,
                   mode="constant",
                   cval=(0, 255),
                   name="Affine_order_3_constant"),
        iaa.Affine(scale=(0.9, 1.1),
                   translate_percent={
                       "x": (-0.05, 0.05),
                       "y": (-0.05, 0.05)
                   },
                   rotate=(-10, 10),
                   shear=(-10, 10),
                   order=1,
                   mode="edge",
                   cval=(0, 255),
                   name="Affine_order_1_edge"),
        iaa.Affine(scale=(0.9, 1.1),
                   translate_percent={
                       "x": (-0.05, 0.05),
                       "y": (-0.05, 0.05)
                   },
                   rotate=(-10, 10),
                   shear=(-10, 10),
                   order=1,
                   mode="constant",
                   cval=(0, 255),
                   backend="skimage",
                   name="Affine_order_1_constant_skimage"),
        # TODO AffineCv2
        iaa.PiecewiseAffine(scale=(0.01, 0.05),
                            nb_rows=4,
                            nb_cols=4,
                            order=1,
                            mode="constant",
                            name="PiecewiseAffine_4x4_order_1_constant"),
        iaa.PiecewiseAffine(scale=(0.01, 0.05),
                            nb_rows=4,
                            nb_cols=4,
                            order=0,
                            mode="constant",
                            name="PiecewiseAffine_4x4_order_0_constant"),
        iaa.PiecewiseAffine(scale=(0.01, 0.05),
                            nb_rows=4,
                            nb_cols=4,
                            order=1,
                            mode="edge",
                            name="PiecewiseAffine_4x4_order_1_edge"),
        iaa.PiecewiseAffine(scale=(0.01, 0.05),
                            nb_rows=8,
                            nb_cols=8,
                            order=1,
                            mode="constant",
                            name="PiecewiseAffine_8x8_order_1_constant"),
        iaa.PerspectiveTransform(scale=(0.01, 0.05),
                                 keep_size=False,
                                 name="PerspectiveTransform"),
        iaa.PerspectiveTransform(scale=(0.01, 0.05),
                                 keep_size=True,
                                 name="PerspectiveTransform_keep_size"),
        iaa.ElasticTransformation(
            alpha=(1, 10),
            sigma=(0.5, 1.5),
            order=0,
            mode="constant",
            cval=0,
            name="ElasticTransformation_order_0_constant"),
        iaa.ElasticTransformation(
            alpha=(1, 10),
            sigma=(0.5, 1.5),
            order=1,
            mode="constant",
            cval=0,
            name="ElasticTransformation_order_1_constant"),
        iaa.ElasticTransformation(
            alpha=(1, 10),
            sigma=(0.5, 1.5),
            order=1,
            mode="nearest",
            cval=0,
            name="ElasticTransformation_order_1_nearest"),
        iaa.ElasticTransformation(
            alpha=(1, 10),
            sigma=(0.5, 1.5),
            order=1,
            mode="reflect",
            cval=0,
            name="ElasticTransformation_order_1_reflect"),
        iaa.Rot90((1, 3), keep_size=False, name="Rot90"),
        iaa.Rot90((1, 3), keep_size=True, name="Rot90_keep_size")
    ]
    augmenters_pooling = [
        iaa.AveragePooling(kernel_size=(1, 16),
                           keep_size=False,
                           name="AveragePooling"),
        iaa.AveragePooling(kernel_size=(1, 16),
                           keep_size=True,
                           name="AveragePooling_keep_size"),
        iaa.MaxPooling(kernel_size=(1, 16), keep_size=False,
                       name="MaxPooling"),
        iaa.MaxPooling(kernel_size=(1, 16),
                       keep_size=True,
                       name="MaxPooling_keep_size"),
        iaa.MinPooling(kernel_size=(1, 16), keep_size=False,
                       name="MinPooling"),
        iaa.MinPooling(kernel_size=(1, 16),
                       keep_size=True,
                       name="MinPooling_keep_size"),
        iaa.MedianPooling(kernel_size=(1, 16),
                          keep_size=False,
                          name="MedianPooling"),
        iaa.MedianPooling(kernel_size=(1, 16),
                          keep_size=True,
                          name="MedianPooling_keep_size")
    ]
    augmenters_segmentation = [
        iaa.Superpixels(p_replace=(0.05, 1.0),
                        n_segments=(10, 100),
                        max_size=64,
                        interpolation="cubic",
                        name="Superpixels_max_size_64_cubic"),
        iaa.Superpixels(p_replace=(0.05, 1.0),
                        n_segments=(10, 100),
                        max_size=64,
                        interpolation="linear",
                        name="Superpixels_max_size_64_linear"),
        iaa.Superpixels(p_replace=(0.05, 1.0),
                        n_segments=(10, 100),
                        max_size=128,
                        interpolation="linear",
                        name="Superpixels_max_size_128_linear"),
        iaa.Superpixels(p_replace=(0.05, 1.0),
                        n_segments=(10, 100),
                        max_size=224,
                        interpolation="linear",
                        name="Superpixels_max_size_224_linear"),
        iaa.UniformVoronoi(n_points=(250, 1000), name="UniformVoronoi"),
        iaa.RegularGridVoronoi(n_rows=(16, 31),
                               n_cols=(16, 31),
                               name="RegularGridVoronoi"),
        iaa.RelativeRegularGridVoronoi(n_rows_frac=(0.07, 0.14),
                                       n_cols_frac=(0.07, 0.14),
                                       name="RelativeRegularGridVoronoi"),
    ]
    augmenters_size = [
        iaa.Resize((0.8, 1.2), interpolation="nearest", name="Resize_nearest"),
        iaa.Resize((0.8, 1.2), interpolation="linear", name="Resize_linear"),
        iaa.Resize((0.8, 1.2), interpolation="cubic", name="Resize_cubic"),
        iaa.CropAndPad(percent=(-0.2, 0.2),
                       pad_mode="constant",
                       pad_cval=(0, 255),
                       keep_size=False,
                       name="CropAndPad"),
        iaa.CropAndPad(percent=(-0.2, 0.2),
                       pad_mode="edge",
                       pad_cval=(0, 255),
                       keep_size=False,
                       name="CropAndPad_edge"),
        iaa.CropAndPad(percent=(-0.2, 0.2),
                       pad_mode="constant",
                       pad_cval=(0, 255),
                       name="CropAndPad_keep_size"),
        iaa.Pad(percent=(0.05, 0.2),
                pad_mode="constant",
                pad_cval=(0, 255),
                keep_size=False,
                name="Pad"),
        iaa.Pad(percent=(0.05, 0.2),
                pad_mode="edge",
                pad_cval=(0, 255),
                keep_size=False,
                name="Pad_edge"),
        iaa.Pad(percent=(0.05, 0.2),
                pad_mode="constant",
                pad_cval=(0, 255),
                name="Pad_keep_size"),
        iaa.Crop(percent=(0.05, 0.2), keep_size=False, name="Crop"),
        iaa.Crop(percent=(0.05, 0.2), name="Crop_keep_size"),
        iaa.PadToFixedSize(width=width + 10,
                           height=height + 10,
                           pad_mode="constant",
                           pad_cval=(0, 255),
                           name="PadToFixedSize"),
        iaa.CropToFixedSize(width=width - 10,
                            height=height - 10,
                            name="CropToFixedSize"),
        iaa.KeepSizeByResize(iaa.CropToFixedSize(height=height - 10,
                                                 width=width - 10),
                             interpolation="nearest",
                             name="KeepSizeByResize_CropToFixedSize_nearest"),
        iaa.KeepSizeByResize(iaa.CropToFixedSize(height=height - 10,
                                                 width=width - 10),
                             interpolation="linear",
                             name="KeepSizeByResize_CropToFixedSize_linear"),
        iaa.KeepSizeByResize(iaa.CropToFixedSize(height=height - 10,
                                                 width=width - 10),
                             interpolation="cubic",
                             name="KeepSizeByResize_CropToFixedSize_cubic"),
    ]
    augmenters_weather = [
        iaa.FastSnowyLandscape(lightness_threshold=(100, 255),
                               lightness_multiplier=(1.0, 4.0),
                               name="FastSnowyLandscape"),
        iaa.Clouds(name="Clouds"),
        iaa.Fog(name="Fog"),
        iaa.CloudLayer(intensity_mean=(196, 255),
                       intensity_freq_exponent=(-2.5, -2.0),
                       intensity_coarse_scale=10,
                       alpha_min=0,
                       alpha_multiplier=(0.25, 0.75),
                       alpha_size_px_max=(2, 8),
                       alpha_freq_exponent=(-2.5, -2.0),
                       sparsity=(0.8, 1.0),
                       density_multiplier=(0.5, 1.0),
                       name="CloudLayer"),
        iaa.Snowflakes(name="Snowflakes"),
        iaa.SnowflakesLayer(density=(0.005, 0.075),
                            density_uniformity=(0.3, 0.9),
                            flake_size=(0.2, 0.7),
                            flake_size_uniformity=(0.4, 0.8),
                            angle=(-30, 30),
                            speed=(0.007, 0.03),
                            blur_sigma_fraction=(0.0001, 0.001),
                            name="SnowflakesLayer")
    ]

    augmenters = (augmenters_meta + augmenters_arithmetic + augmenters_blend +
                  augmenters_blur + augmenters_color + augmenters_contrast +
                  augmenters_convolutional + augmenters_edges +
                  augmenters_flip + augmenters_geometric + augmenters_pooling +
                  augmenters_segmentation + augmenters_size +
                  augmenters_weather)

    if only_augmenters is not None:
        augmenters_reduced = []
        for augmenter in augmenters:
            if any([
                    re.search(pattern, augmenter.name)
                    for pattern in only_augmenters
            ]):
                augmenters_reduced.append(augmenter)
        augmenters = augmenters_reduced

    return augmenters
示例#29
0
def simple_imgaug_example():
    image_dir_path = dataset_home_dir_path + '/phenotyping/cvppp2017_lsc_lcc_challenge/package/CVPPP2017_LSC_training/training/A1'
    label_dir_path = dataset_home_dir_path + '/phenotyping/cvppp2017_lsc_lcc_challenge/package/CVPPP2017_LSC_training/training/A1'
    images, labels = prepare_dataset(image_dir_path, label_dir_path)

    image_width, image_height = 200, 200

    # FIXME [decide] >> Before or after random transformation?
    # Preprocessing (normalization, standardization, etc).
    images_pp = images.astype(np.float)
    #images_pp /= 255.0
    images_pp = standardize_samplewise(images_pp)
    #images_pp = standardize_featurewise(images_pp)

    if True:
        augmenter = iaa.SomeOf(
            (1, 2),
            [
                iaa.OneOf([
                    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.1, 0.1),
                            'y': (-0.1, 0.1)
                        },  # Translate by -10 to +10 percent (per axis).
                        rotate=(-10, 10),  # Rotate by -10 to +10 degrees.
                        shear=(-5, 5),  # Shear by -5 to +5 degrees.
                        #order=[0, 1],  # Use nearest neighbour or bilinear interpolation (fast).
                        order=
                        0,  # 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).
                        #mode='edge'  # Use any of scikit-image's warping modes (see 2nd image from the top for examples).
                    ),
                    #iaa.PiecewiseAffine(scale=(0.01, 0.05)),  # Move parts of the image around. Slow.
                    iaa.PerspectiveTransform(scale=(0.01, 0.1)),
                    iaa.ElasticTransformation(
                        alpha=(20.0, 50.0), sigma=(6.5, 8.5)
                    ),  # Move pixels locally around (with random strengths).
                ]),
                iaa.OneOf([
                    iaa.GaussianBlur(sigma=(
                        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)
                    ),  # Blur image using local medians with kernel sizes between 2 and 7.
                    iaa.MotionBlur(k=(5, 11),
                                   angle=(0, 360),
                                   direction=(-1.0, 1.0),
                                   order=1),
                ]),
                iaa.OneOf([
                    iaa.AdditiveGaussianNoise(
                        loc=0, scale=(0.1 * 255, 0.5 * 255),
                        per_channel=False),  # Add Gaussian noise to images.
                    iaa.AdditiveLaplaceNoise(loc=0,
                                             scale=(0.1 * 255, 0.4 * 255),
                                             per_channel=False),
                    iaa.AdditivePoissonNoise(lam=(32, 96), per_channel=False),
                    iaa.CoarseSaltAndPepper(p=(0.1, 0.3),
                                            size_percent=(0.2, 0.9),
                                            per_channel=False),
                    iaa.CoarseSalt(p=(0.1, 0.3),
                                   size_percent=(0.2, 0.9),
                                   per_channel=False),
                    iaa.CoarsePepper(p=(0.1, 0.3),
                                     size_percent=(0.2, 0.9),
                                     per_channel=False),
                    iaa.CoarseDropout(p=(0.1, 0.3),
                                      size_percent=(0.05, 0.3),
                                      per_channel=False),
                ]),
                iaa.OneOf([
                    iaa.MultiplyHueAndSaturation(mul=(-10, 10),
                                                 per_channel=False),
                    iaa.AddToHueAndSaturation(value=(-255, 255),
                                              per_channel=False),
                    iaa.LinearContrast(
                        alpha=(0.5, 1.5),
                        per_channel=False),  # Improve or worsen the contrast.
                    iaa.Invert(p=1,
                               per_channel=False),  # Invert color channels.
                    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.
                ]),
            ],
            random_order=True)
    elif False:
        augmenter = iaa.Sequential(
            [
                # Apply the following augmenters to most images.
                iaa.Fliplr(0.5),  # Horizontally flip 50% of all images.
                iaa.Flipud(0.2),  # Vertically flip 20% of all images.
                # Crop images by -5% to 10% of their height/width.
                iaa.Sometimes(
                    0.5,
                    iaa.CropAndPad(percent=(-0.05, 0.1),
                                   pad_mode=ia.ALL,
                                   pad_cval=(0, 255))),
                iaa.Sometimes(
                    0.5,
                    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).
                    )),
                # Execute 0 to 5 of the following (less important) augmenters per image.
                # Don't execute all of them, as that would often be way too strong.
                iaa.SomeOf(
                    (0, 5),
                    [
                        iaa.Sometimes(
                            0.5,
                            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)
                            ),  # Blur image using local medians with kernel sizes between 2 and 7.
                        ]),
                        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.
                        # Search either for all edges or for directed edges, blend the result with the original image using a blobby mask.
                        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
                        ),  # Change brightness of images (by -10 to 10 of original value).
                        iaa.AddToHueAndSaturation(
                            (-20, 20)),  # Change hue and saturation.
                        # Either change the brightness of the whole image (sometimes per channel) or change the brightness of subareas.
                        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
                        ),  # Improve or worsen the contrast.
                        iaa.Grayscale(alpha=(0.0, 1.0)),
                        iaa.Sometimes(
                            0.5,
                            iaa.ElasticTransformation(alpha=(0.5, 3.5),
                                                      sigma=0.25)
                        ),  # Move pixels locally around (with random strengths).
                        iaa.Sometimes(
                            0.5, iaa.PiecewiseAffine(scale=(0.01, 0.05))
                        ),  # Sometimes move parts of the image around.
                        iaa.Sometimes(
                            0.5, iaa.PerspectiveTransform(scale=(0.01, 0.1)))
                    ],
                    random_order=True)
            ],
            random_order=True)
    else:
        augmenter = iaa.Sequential([
            iaa.SomeOf(
                1,
                [
                    #iaa.Sometimes(0.5, iaa.Crop(px=(0, 100))),  # Crop images from each side by 0 to 16px (randomly chosen).
                    iaa.Sometimes(0.5, iaa.Crop(percent=(
                        0,
                        0.1))),  # Crop images by 0-10% of their height/width.
                    iaa.Fliplr(0.5),  # Horizontally flip 50% of the images.
                    iaa.Flipud(0.5),  # Vertically flip 50% of the images.
                    iaa.Sometimes(
                        0.5,
                        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).
                            order=
                            0,  # 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).
                            #mode='edge'  # Use any of scikit-image's warping modes (see 2nd image from the top for examples).
                        )),
                    iaa.Sometimes(0.5, iaa.GaussianBlur(
                        sigma=(0,
                               3.0)))  # Blur images with a sigma of 0 to 3.0.
                ]),
            iaa.Scale(size={
                'height': image_height,
                'width': image_width
            })  # Resize.
        ])

    for idx in range(images.shape[0]):
        images_pp[idx] = (images_pp[idx] - np.min(images_pp[idx])) / (
            np.max(images_pp[idx]) - np.min(images_pp[idx])) * 255
    images_pp = images_pp.astype(np.uint8)

    # Test 1 (good).
    augmenter_det = augmenter.to_deterministic(
    )  # Call this for each batch again, NOT only once at the start.
    #images_aug1 = augmenter_det.augment_images(images)
    images_aug1 = augmenter_det.augment_images(images_pp)
    labels_aug1 = augmenter_det.augment_images(labels)
    augmenter_det = augmenter.to_deterministic(
    )  # Call this for each batch again, NOT only once at the start.
    #images_aug2 = augmenter_det.augment_images(images)
    images_aug2 = augmenter_det.augment_images(images_pp)
    labels_aug2 = augmenter_det.augment_images(labels)

    #export_images(images, labels, './augmented1/img', '')
    export_images(images_pp, labels, './augmented1/img', '')
    export_images(images_aug1, labels_aug1, './augmented1/img', '_aug1')
    export_images(images_aug2, labels_aug2, './augmented1/img', '_aug2')

    # Test 2 (bad).
    augmenter_det = augmenter.to_deterministic(
    )  # Call this for each batch again, NOT only once at the start.
    #images_aug1 = augmenter_det.augment_images(images)
    images_aug1 = augmenter_det.augment_images(images_pp)
    labels_aug1 = augmenter_det.augment_images(labels)
    #images_aug2 = augmenter_det.augment_images(images)
    images_aug2 = augmenter_det.augment_images(images_pp)
    labels_aug2 = augmenter_det.augment_images(labels)

    #export_images(images, labels, './augmented2/img', '')
    export_images(images_pp, labels, './augmented2/img', '')
    export_images(images_aug1, labels_aug1, './augmented2/img', '_aug1')
    export_images(images_aug2, labels_aug2, './augmented2/img', '_aug2')

    print('*********************************', images_pp.dtype)
示例#30
0
                rotate=(-20, 20),  # 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)
                mode=
                "edge"  # use any of scikit-image"s warping modes (see 2nd image from the top for examples)
            )),
        sometimes(iaa.PiecewiseAffine(
            scale=(0.01, 0.05))),  # sometimes move parts of the image around
        iaa.PerspectiveTransform(scale=(0.01, 0.1)),
        sometimes(
            iaa.OneOf([
                iaa.SigmoidContrast(gain=5),
                iaa.Multiply(mul=1.0),
                iaa.MultiplyHueAndSaturation(mul=1.25)
            ])),
    ],
    random_order=True)


def apply_batch(images, file_counter_start, aug_amount):
    i = file_counter_start
    batches = []
    for _ in range(aug_amount):
        batches.append(iaa.UnnormalizedBatch(images=images))

    for batch in seq.augment_batches(batches=batches, background=True):
        for images in batch.images_aug:
            cv2.imwrite(f"augmented/{category}/{category}_{i}.png", images)
            i += 1