コード例 #1
0
    def __init__(self, phase, train_file, image_file_path, image_height, image_width, mean, std):
        self.image_file_path = image_file_path

        df = pd.read_csv(train_file)

        class_map = {'A':0,'B':1,'C':2}

        self.img_id = df['image_id'].apply(lambda x: x.split('.')[0]).values # just take id of image_id
        self.labels = df['label'].apply(lambda x: x[-1]).map(class_map).values # encoding labels

        if phase == 'valid':
            # validation set
            self.aug = albumentations.Compose([
                albumentations.Resize(image_height,image_width,always_apply=True),
                albumentations.Normalize(mean,std,always_apply=True),

            ])
        elif phase == 'train':
            # training set
            self.aug = albumentations.Compose([
                albumentations.Resize(image_height, image_width, always_apply=True),
                albumentations.RandomShadow(shadow_roi=(0, 0.85, 1, 1), p=0.5),
                albumentations.RandomBrightnessContrast(brightness_limit=0.10, contrast_limit=0.10, p=0.5),
                albumentations.ShiftScaleRotate(shift_limit=0.0625,
                                                scale_limit=0.1,
                                                rotate_limit=5,
                                                p=0.9),
                albumentations.Normalize(mean, std, always_apply=True)
            ])
コード例 #2
0
    def augment(self, img0, img1):
        transform = A.Compose([
            A.IAAAdditiveGaussianNoise(p=0.05),
            A.OneOf([
                A.IAASharpen(p=1.0),
                A.Blur(blur_limit=3, p=1.0),
            ],
                    p=0.5),
            A.OneOf([
                A.RandomBrightnessContrast(p=1.0),
                A.HueSaturationValue(p=1.0),
                A.RandomGamma(p=1.0),
            ],
                    p=0.5),
            A.OneOf([
                A.RandomFog(p=1.0),
                A.RandomRain(p=1.0),
                A.RandomShadow(p=1.0),
                A.RandomSnow(p=1.0),
                A.RandomSunFlare(p=1.0)
            ],
                    p=0.05),
        ],
                              additional_targets={'img1': 'image'})
        transformed = transform(image=img0, img1=img1)
        img0 = transformed["image"]
        img1 = transformed["img1"]

        return img0, img1
コード例 #3
0
    def __init__(self,fold_file, image_file_path, folds, image_height, image_width, mean, std):
        self.image_file_path = image_file_path
        self.fold_file = fold_file

        df = pd.read_csv(self.fold_file)
        df = df[['image_id','labels','kfold']]
        df = df[df['kfold'].isin(folds)].reset_index(drop= True)

        class_map = {'A':0,'B':1,'C':2}

        self.img_id = df['image_id'].apply(lambda x: x.split('.')[0]).values # just take id of image_id
        self.labels = df['labels'].apply(lambda x: x[-1]).map(class_map).values # encoding labels

        if len(folds)==1:
            # validation set
            self.aug = albumentations.Compose([
                albumentations.Resize(image_height,image_width,always_apply=True),
                albumentations.Normalize(mean,std,always_apply=True),

            ])
        else:
            # training set
            self.aug = albumentations.Compose([
                albumentations.Resize(image_height, image_width, always_apply=True),
                albumentations.HorizontalFlip(p=0.5),
                albumentations.VerticalFlip(p=0.5),
                albumentations.RandomShadow(shadow_roi=(0, 0.85, 1, 1), p=0.5),
                albumentations.RandomBrightnessContrast(brightness_limit=0.10, contrast_limit=0.10, p=0.5),
                albumentations.ShiftScaleRotate(shift_limit=0.0625,
                                                scale_limit=0.1,
                                                rotate_limit=5,
                                                p=0.5),
                albumentations.Normalize(mean, std, always_apply=True)
            ])
コード例 #4
0
ファイル: dataset.py プロジェクト: areomoon/Mongochu
    def __init__(self,fold_file, pkl_file_path, folds, image_height, image_width, mean, std):
        self.pkl_file_path = pkl_file_path
        self.fold_file = fold_file

        df = pd.read_csv(self.fold_file)
        df = df[['image_id','labels','kfold']]
        df = df[df['kfold'].isin(folds)].reset_index(drop= True)

        class_map = {'A':0,'B':1,'C':2}

        self.img_id = df['image_id'].apply(lambda x: x.split('.')[0]).values
        self.labels = df['labels'].apply(lambda x: x[-1]).map(class_map).values


        # training set
        self.aug = albumentations.Compose([
            albumentations.Resize(image_height, image_width, always_apply=True),
            albumentations.Cutout(num_holes=8,max_h_size=30,max_w_size=60,always_apply=False,p=0.9),
            albumentations.Equalize(always_apply=False, p=0.9),
            albumentations.RandomShadow(shadow_roi=(0, 0.85, 1, 1), p=0.9),
            albumentations.RandomBrightnessContrast(brightness_limit=0.1, contrast_limit=0.1, p=0.9),
            albumentations.ShiftScaleRotate(shift_limit=0.0625,
                                            scale_limit=0.1,
                                            rotate_limit=5,
                                            p=0.9),
            albumentations.Normalize(mean, std, always_apply=True)
        ])
コード例 #5
0
ファイル: leave_sampler.py プロジェクト: RGring/WeedAnnotator
    def _get_static_augmentations(self, config):
        augmentations = []
        if config["horizontal_flip"]:
            augmentations.append(albu.HorizontalFlip(p=0.5))
        else:
            augmentations.append(None)
        if config["grid_distortion"]:
            augmentations.append(albu.GridDistortion(distort_limit=0.5, border_mode=cv2.BORDER_REPLICATE, p=1.0))
        else:
            augmentations.append(None)

        if config["hsv_color_shift"]:
            augmentations.append(albu.HueSaturationValue(p=1.0))
        else:
            augmentations.append(None)

        if config["random_brightness_contrast"]:
            augmentations.append(albu.RandomBrightnessContrast(p=1))
        else:
            augmentations.append(None)

        if config["random_shadow"]:
            augmentations.append(albu.RandomShadow(shadow_roi=(0, 0, 1, 1), p=0.2))
        else:
            augmentations.append(None)
        return augmentations
コード例 #6
0
ファイル: augmentations.py プロジェクト: ashwan1/GWD-2020
def get_train_transforms():
    # noinspection PyTypeChecker
    return A.Compose([
        A.RandomSizedCrop(
            min_max_height=(850, 850), height=1024, width=1024, p=0.3),
        A.OneOf([
            A.HueSaturationValue(hue_shift_limit=0.2,
                                 sat_shift_limit=0.2,
                                 val_shift_limit=0.2,
                                 p=0.8),
            A.RandomBrightnessContrast(
                brightness_limit=0.2, contrast_limit=0.2, p=0.9)
        ],
                p=0.5),
        A.OneOf([
            A.RandomRain(rain_type='drizzle', p=0.2),
            A.GaussianBlur(blur_limit=7, p=0.5),
            A.GaussNoise((0.2, 0.25), p=0.3),
            A.RandomShadow(p=0.2)
        ],
                p=0.4),
        A.ToGray(p=0.01),
        A.Flip(p=0.5),
        A.CoarseDropout(max_height=64,
                        max_width=64,
                        min_holes=3,
                        min_height=32,
                        min_width=32,
                        p=0.5),
        A.Resize(Config.Train.img_size, Config.Train.img_size, p=1.0),
        ToTensorV2(p=1.0),
    ],
                     bbox_params=BboxParams('pascal_voc',
                                            label_fields=['labels'],
                                            min_visibility=0.0))
コード例 #7
0
def get_training_augmentation(min_area=0., min_visibility=0.):
    train_transform = [
        albu.OneOf([
            albu.MotionBlur(p=.2),
            albu.MedianBlur(blur_limit=3, p=0.1),
            albu.Blur(blur_limit=3, p=0.1),
        ],
                   p=0.2),
        albu.ShiftScaleRotate(shift_limit=0,
                              scale_limit=0,
                              rotate_limit=15,
                              p=0.5),
        albu.OneOf([
            albu.CLAHE(clip_limit=2),
            albu.IAASharpen(),
            albu.IAAEmboss(),
        ],
                   p=0.3),
        albu.OneOf([
            albu.RandomFog(fog_coef_lower=0.1, fog_coef_upper=0.15, p=0.1),
            albu.RandomShadow(p=0.1),
            albu.RandomBrightness(limit=0.3, p=0.2),
            albu.RandomRain(slant_lower=0,
                            slant_upper=8,
                            drop_length=0,
                            blur_value=4,
                            brightness_coefficient=0.8,
                            rain_type='heavy',
                            p=0.1),
            albu.RandomSunFlare(p=0.2),
        ]),
        albu.OneOf([
            albu.RGBShift(p=0.1),
            albu.HueSaturationValue(p=0.3),
        ]),
        albu.OneOf([
            albu.HorizontalFlip(p=0.5),
            albu.RandomSizedCrop(min_max_height=(720, 1380),
                                 height=1380,
                                 width=720,
                                 interpolation=cv2.INTER_AREA)
        ],
                   p=0.2)
    ]
    return albu.Compose(train_transform,
                        bbox_params={
                            'format': 'coco',
                            'min_area': min_area,
                            'min_visibility': min_visibility,
                            'label_fields': ['category_id']
                        })
コード例 #8
0
    def blur_and_distortion(self, kernel_size=(3, 3)):  # Blur & Distortion
        aug = A.Compose(
            [
                A.OneOf(
                    [
                        A.Blur(
                            blur_limit=kernel_size, p=self.p
                        ),  # Blur the input image using a random-sized kernel.
                        A.MotionBlur(
                            blur_limit=kernel_size, p=self.p
                        ),  # Apply motion blur to the input image using a random-sized kernel.
                        A.MedianBlur(
                            blur_limit=kernel_size, p=self.p
                        ),  # Blur the input image using using a median filter with a random aperture linear size.
                        A.GaussianBlur(
                            blur_limit=kernel_size, p=self.p
                        )  # Blur the input image using using a Gaussian filter with a random kernel size.
                    ],
                    p=1),
                A.OneOf(
                    [
                        A.RandomGamma(gamma_limit=(80, 120), p=self.p),
                        A.OpticalDistortion(
                            distort_limit=0.05, shift_limit=0.05, p=self.p),
                        A.ElasticTransform(p=self.p),
                        A.HueSaturationValue(
                            p=self.p
                        ),  # Randomly change hue, saturation and value of the input image.
                        A.RGBShift(
                            p=self.p
                        ),  # Randomly shift values for each channel of the input RGB image.
                        A.ChannelShuffle(
                            p=self.p
                        ),  # Randomly rearrange channels of the input RGB image.
                        A.CLAHE(
                            p=self.p
                        ),  # Apply Contrast Limited Adaptive Histogram Equalization to the input image.
                        A.InvertImg(
                            p=self.p
                        ),  # Invert the input image by subtracting pixel values from 255.
                    ],
                    p=1),
                A.GaussNoise(
                    var_limit=(10.0, 50.0), mean=0,
                    p=self.p),  # Apply gaussian noise to the input image.
                A.RandomShadow(p=self.p)  # Simulates shadows for the image
            ],
            p=1)

        return aug
コード例 #9
0
    def setup_pipeline(self, dict_transform):

        tranform_list = []
        if 'shadow' in dict_transform:
            tranform_list.append(
                A.RandomShadow(shadow_roi=(0, 0.5, 1, 1),
                               num_shadows_upper=1,
                               p=0.2))
        if 'scale' in dict_transform:
            tranform_list.append(
                A.RandomScale(scale_limit=float(dict_transform['scale'])))
        if 'rotate' in dict_transform:
            tranform_list.append(
                A.Rotate(limit=float(dict_transform['rotate']), p=0.8))
        if 'shift' in dict_transform:
            tranform_list.append(
                A.ShiftScaleRotate(shift_limit=float(dict_transform['shift']),
                                   scale_limit=0.0,
                                   rotate_limit=0,
                                   interpolation=1,
                                   border_mode=4,
                                   p=0.8))
        if 'brightness' in dict_transform:
            tranform_list.append(
                A.RandomBrightness(limit=float(dict_transform['brightness']),
                                   p=0.8))
        if 'contrast' in dict_transform:
            tranform_list.append(
                A.RandomContrast(limit=float(dict_transform['contrast']),
                                 p=0.8))
        if 'motion_blur' in dict_transform:
            tranform_list.append(A.MotionBlur(p=0.5, blur_limit=7))
        if 'fog' in dict_transform:
            tranform_list.append(
                A.RandomFog(fog_coef_lower=0.0,
                            fog_coef_upper=float(dict_transform['fog']),
                            alpha_coef=0.05,
                            p=0.7))
        if 'rain' in dict_transform:
            tranform_list.append(
                A.RandomRain(brightness_coefficient=0.95,
                             drop_width=1,
                             blur_value=1,
                             p=0.7))
        if 'occlusion' in dict_transform:
            tranform_list.append(
                A.CoarseDropout(max_holes=5, max_height=8, max_width=8, p=0.5))
        self.transform = A.Compose(tranform_list)
コード例 #10
0
def hard_transforms(crop_size=512):
    return albu.Compose([
        albu.ShiftScaleRotate(shift_limit=0,
                              scale_limit=0.1,
                              rotate_limit=180,
                              border_mode=cv2.BORDER_CONSTANT,
                              value=0,
                              mask_value=0),
        albu.CropNonEmptyMaskIfExists(crop_size, crop_size, p=1),
        albu.RandomShadow(shadow_roi=(0, 0, 1, 1),
                          num_shadows_lower=1,
                          num_shadows_upper=4,
                          shadow_dimension=7,
                          always_apply=False,
                          p=0.5),
        albu.HueSaturationValue(p=0.3),
        albu.OneOf([
            albu.IAAAdditiveGaussianNoise(),
            albu.GaussNoise(),
            albu.MultiplicativeNoise(
                multiplier=[0.5, 1.5], per_channel=True, p=1)
        ],
                   p=0.3),
        albu.OneOf([
            albu.MotionBlur(p=0.2),
            albu.MedianBlur(blur_limit=3, p=0.1),
            albu.Blur(blur_limit=3, p=0.1),
        ],
                   p=0.2),
        albu.OneOf([
            albu.CLAHE(clip_limit=2),
            albu.IAASharpen(),
            albu.IAAEmboss(),
            albu.RandomBrightnessContrast(
                brightness_limit=0.2, contrast_limit=0.2, p=0.3),
            albu.RandomGamma(gamma_limit=(85, 115), p=0.3),
        ],
                   p=0.3),
        albu.JpegCompression(quality_lower=40, quality_upper=100, p=0.5),
        albu.Cutout(
            num_holes=25, max_h_size=5, max_w_size=5, fill_value=0, p=0.3),
    ],
                        p=1)
コード例 #11
0
def create_datasets(train_file_list, val_file_list):
    train_transform = A.Compose([
        A.RandomBrightnessContrast(p=0.5),
        A.GaussNoise(p=.25),
        A.ISONoise(p=.15),
        A.RandomShadow(p=.2),
        A.MotionBlur(p=.1),
        #A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
        ToTensorV2(),
    ])
    train_dataset = GroundDataset(images_filepaths=train_file_list,
                                  transform=train_transform)

    val_transform = A.Compose([
        #A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),
        ToTensorV2(),
    ])
    val_dataset = GroundDataset(images_filepaths=val_file_list,
                                transform=val_transform)

    return train_dataset, val_dataset
コード例 #12
0
ファイル: dataset.py プロジェクト: durbin-164/Bengali_Ai
    def __init__(self, folds, img_height, img_width, mean, std):
        df = pd.read_csv('../input/train_folds.csv')
        df = df[[
            'image_id', 'grapheme_root', 'vowel_diacritic',
            'consonant_diacritic', 'kfold'
        ]]

        df = df[df.kfold.isin(folds)].reset_index(drop=True)

        self.image_ids = df.image_id.values

        self.grapheme_root = df.grapheme_root.values
        self.vowel_diacritic = df.vowel_diacritic.values
        self.consonant_diacritic = df.consonant_diacritic

        if len(folds) == 1:
            self.aug = albumentations.Compose([
                albumentations.Resize(img_height, img_width),
                albumentations.Normalize(mean, std, always_apply=True)
            ])
        else:
            self.aug = albumentations.Compose([
                albumentations.Resize(img_height, img_width),
                albumentations.ShiftScaleRotate(shift_limit=0.0625,
                                                scale_limit=0.1,
                                                rotate_limit=5,
                                                p=0.9),
                albumentations.Rotate(limit=5),
                albumentations.RandomContrast(limit=0.2),
                albumentations.GaussianBlur(blur_limit=7),
                albumentations.RandomGamma(),
                albumentations.RandomShadow(),
                albumentations.GaussNoise(),
                albumentations.ChannelShuffle(),
                #albumentations.Cutout(),
                albumentations.Equalize(),
                albumentations.MultiplicativeNoise(),
                albumentations.Normalize(mean, std, always_apply=True)
            ])
コード例 #13
0
    def augment(self, img, mask, do_affine_transform = True):
        if do_affine_transform:
            afine_transform = A.Compose([
                A.HorizontalFlip(p=0.4),
                A.OneOf([
                    A.GridDistortion(interpolation=cv2.INTER_NEAREST, border_mode=cv2.BORDER_CONSTANT, value=0, mask_value=0, p=1.0),
                    A.ElasticTransform(interpolation=cv2.INTER_NEAREST, alpha_affine=10, border_mode=cv2.BORDER_CONSTANT, value=0, mask_value=0, p=1.0),
                    A.ShiftScaleRotate(interpolation=cv2.INTER_NEAREST, shift_limit=0.03, rotate_limit=4, border_mode=cv2.BORDER_CONSTANT, value=0, mask_value=0, p=1.0),
                    A.OpticalDistortion(interpolation=cv2.INTER_NEAREST, border_mode=cv2.BORDER_CONSTANT, value=0, mask_value=0, p=1.0)
                ], p=0.6),
            ], additional_targets={'mask': 'image'})
            afine_transformed = afine_transform(image=img, mask=mask)
            img = afine_transformed["image"]
            mask = afine_transformed["mask"]

        transform = A.Compose([
            A.IAAAdditiveGaussianNoise(p=0.05),
            A.OneOf([
                A.IAASharpen(p=1.0),
                A.Blur(blur_limit=3, p=1.0),
            ] , p=0.5),
            A.OneOf([
                A.RandomBrightnessContrast(p=1.0),
                A.HueSaturationValue(p=1.0),
                A.RandomGamma(p=1.0),
            ], p=0.5),
            A.OneOf([
                A.RandomFog(p=1.0),
                A.RandomRain(p=1.0),
                A.RandomShadow(p=1.0),
                A.RandomSnow(p=1.0),
                A.RandomSunFlare(p=1.0)
            ], p=0.05),
        ])
        transformed = transform(image=img)
        img = transformed["image"]
        return img, mask
コード例 #14
0
# -*- coding: utf-8 -*-

# @Description: 放置一些图像变换
# @Author: CaptainHu
# @Date: 2021-05-12 17:21:53
# @LastEditors: CaptainHu


import albumentations as A

v1=A.Compose(
    [
        A.RandomBrightnessContrast(),
        A.RandomGamma(),
        A.RandomSunFlare(p=0.3),
    ]
)

v2=A.Compose([
    A.RandomBrightnessContrast(p=1),
    A.RandomGamma(),
    A.RandomFog(),
    A.RandomShadow(p=0.8),
])
コード例 #15
0
 def __call__(self, img):
     img = aug(np.array(img), albu.RandomShadow())
     img = Image.fromarray(img)
     return img
コード例 #16
0
def get_transform_imagenet(use_albu_aug):
    if use_albu_aug:
        train_transform = al.Compose([
            # al.Flip(p=0.5),
            al.Resize(256, 256, interpolation=2),
            al.RandomResizedCrop(224,
                                 224,
                                 scale=(0.08, 1.0),
                                 ratio=(3. / 4., 4. / 3.),
                                 interpolation=2),
            al.HorizontalFlip(),
            al.OneOf(
                [
                    al.OneOf(
                        [
                            al.ShiftScaleRotate(
                                border_mode=cv2.BORDER_CONSTANT,
                                rotate_limit=30),  # , p=0.05),
                            al.OpticalDistortion(
                                border_mode=cv2.BORDER_CONSTANT,
                                distort_limit=5.0,
                                shift_limit=0.1),
                            # , p=0.05),
                            al.GridDistortion(border_mode=cv2.BORDER_CONSTANT
                                              ),  # , p=0.05),
                            al.ElasticTransform(
                                border_mode=cv2.BORDER_CONSTANT,
                                alpha_affine=15),  # , p=0.05),
                        ],
                        p=0.1),
                    al.OneOf(
                        [
                            al.RandomGamma(),  # p=0.05),
                            al.HueSaturationValue(),  # p=0.05),
                            al.RGBShift(),  # p=0.05),
                            al.CLAHE(),  # p=0.05),
                            al.ChannelShuffle(),  # p=0.05),
                            al.InvertImg(),  # p=0.05),
                        ],
                        p=0.1),
                    al.OneOf(
                        [
                            al.RandomSnow(),  # p=0.05),
                            al.RandomRain(),  # p=0.05),
                            al.RandomFog(),  # p=0.05),
                            al.RandomSunFlare(num_flare_circles_lower=1,
                                              num_flare_circles_upper=2,
                                              src_radius=110),
                            # p=0.05, ),
                            al.RandomShadow(),  # p=0.05),
                        ],
                        p=0.1),
                    al.RandomBrightnessContrast(p=0.1),
                    al.OneOf(
                        [
                            al.GaussNoise(),  # p=0.05),
                            al.ISONoise(),  # p=0.05),
                            al.MultiplicativeNoise(),  # p=0.05),
                        ],
                        p=0.1),
                    al.OneOf(
                        [
                            al.ToGray(),  # p=0.05),
                            al.ToSepia(),  # p=0.05),
                            al.Solarize(),  # p=0.05),
                            al.Equalize(),  # p=0.05),
                            al.Posterize(),  # p=0.05),
                            al.FancyPCA(),  # p=0.05),
                        ],
                        p=0.1),
                    al.OneOf(
                        [
                            # al.MotionBlur(blur_limit=1),
                            al.Blur(blur_limit=[3, 5]),
                            al.MedianBlur(blur_limit=[3, 5]),
                            al.GaussianBlur(blur_limit=[3, 5]),
                        ],
                        p=0.1),
                    al.OneOf(
                        [
                            al.CoarseDropout(),  # p=0.05),
                            al.Cutout(),  # p=0.05),
                            al.GridDropout(),  # p=0.05),
                            al.ChannelDropout(),  # p=0.05),
                            al.RandomGridShuffle(),  # p=0.05),
                        ],
                        p=0.1),
                    al.OneOf(
                        [
                            al.Downscale(),  # p=0.1),
                            al.ImageCompression(quality_lower=60),  # , p=0.1),
                        ],
                        p=0.1),
                ],
                p=0.5),
            al.Normalize(),
            ToTensorV2()
        ])
    else:
        train_transform = transforms.Compose([
            transforms.Resize(256),
            transforms.RandomResizedCrop(224),
            transforms.RandomHorizontalFlip(),
            transforms.ToTensor(),
        ])
    test_transform = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
    ])

    if use_albu_aug:
        train_transform = MultiDataTransformAlbu(train_transform)
    else:
        train_transform = MultiDataTransform(train_transform)

    return train_transform, test_transform
コード例 #17
0
    def augment(self,
        img1, bbox1 = [], keypoints1 = [], filtered_objs1 = [],
        img0 = None, bbox0 = [], keypoints0 = [], filtered_objs0 = [],
        do_img_aug = True, do_affine_aug = False, img1_to_img0 = False
    ):
        if img0 is None:
            img0 = img1.copy()

        replay_img_aug = []

        keypoints = keypoints1 + keypoints0
        bboxes = bbox1 + bbox0

        # Afine augmentations
        # --------------------------------------
        if do_affine_aug:
            afine_transform = A.ReplayCompose(
                [
                    A.HorizontalFlip(p=0.4),
                    A.OneOf([
                        # A.GridDistortion(interpolation=cv2.INTER_NEAREST, border_mode=cv2.BORDER_CONSTANT, value=0, mask_value=0, p=1.0),
                        # A.ElasticTransform(interpolation=cv2.INTER_NEAREST, alpha_affine=10, border_mode=cv2.BORDER_CONSTANT, value=0, mask_value=0, p=1.0),
                        A.ShiftScaleRotate(interpolation=cv2.INTER_NEAREST, shift_limit=0.035, rotate_limit=5, border_mode=cv2.BORDER_CONSTANT, value=0, mask_value=0, p=1.0),
                        # A.OpticalDistortion(interpolation=cv2.INTER_NEAREST, border_mode=cv2.BORDER_CONSTANT, value=0, mask_value=0, p=1.0),
                    ], p=0.65),
                ],
                additional_targets={"img0": "image"},
                keypoint_params=A.KeypointParams(format="xy", remove_invisible=False),
                bbox_params=A.BboxParams(format='coco', label_fields=["bbox_ids"]), # coco format: [x-min, y-min, width, height]
            )
            transformed = afine_transform(image=img1, img0=img0, keypoints=keypoints, bboxes=bboxes, bbox_ids=np.arange(len(bboxes)))
            replay_img_aug.append(transformed["replay"])
            img1 = transformed["image"]
            img0 = transformed["img0"]
            transformed_keypoints = transformed['keypoints']
            transformed_bboxes = transformed['bboxes']
            bbox_ids = transformed["bbox_ids"]
            # it can happend that bounding boxes are removed, we have to account for that
            # and also remove the objects and keypoints in question
            idx_offset = len(bbox1)
            keypoints1 = []
            keypoints0 = []
            bbox1 = []
            bbox0 = []
            tmp_filtered_objs1 = []
            tmp_filtered_objs0 = []
            for i, bbox_id in enumerate(bbox_ids):
                kp_idx_start = bbox_id * 8
                kp_idx_end = bbox_id * 8 + 8
                if bbox_id < idx_offset:
                    tmp_filtered_objs1.append(filtered_objs1[i])
                    bbox1.append(transformed_bboxes[i])
                    keypoints1 += transformed_keypoints[kp_idx_start:kp_idx_end]
                else:
                    tmp_filtered_objs0.append(filtered_objs0[i])
                    bbox0.append(transformed_bboxes[i])
                    keypoints0 += transformed_keypoints[kp_idx_start:kp_idx_end]
            filtered_objs1 = tmp_filtered_objs1
            filtered_objs0 = tmp_filtered_objs0

        # Translate img0 + bbox0/keypoints0 for single track centernet
        # --------------------------------------
        if img1_to_img0:
            transform = A.Compose(
                [A.ShiftScaleRotate(shift_limit=0.1, scale_limit=0.15, rotate_limit=0, always_apply=True, border_mode=cv2.BORDER_CONSTANT)],
                keypoint_params=A.KeypointParams(format="xy", remove_invisible=False),
                bbox_params=A.BboxParams(format='coco', label_fields=[])
            )
            keypoints = list(np.array(piped_params["gt_2d_info"])[:,:2] * self.params.R)
            transformed = transform(image=img1, keypoints=keypoints1, bboxes=bboxes1)
            img0 = transformed["image"]
            bboxes0 = transformed['bboxes']
            keypoints0 = transformed['keypoints']

        # Augmentation for images
        # --------------------------------------
        if do_img_aug:
            transform = A.ReplayCompose([
                A.IAAAdditiveGaussianNoise(p=0.02),
                A.OneOf([
                    A.IAASharpen(p=1.0),
                    A.Blur(blur_limit=3, p=1.0),
                ] , p=0.5),
                A.OneOf([
                    A.RandomBrightnessContrast(p=1.0),
                    A.HueSaturationValue(p=1.0),
                    A.RandomGamma(p=1.0),
                ], p=0.6),
                A.OneOf([
                    A.RandomFog(p=1.0),
                    A.RandomRain(p=1.0),
                    A.RandomShadow(p=1.0),
                    A.RandomSnow(p=1.0)
                ], p=0.02),
            ], additional_targets={"img0": "image"})
            transformed = transform(image=img1, img0=img0)
            img1 = transformed["image"]
            img0 = transformed["img0"]

        return img1, bbox1, keypoints1, filtered_objs1, img0, bbox0, keypoints0, filtered_objs0, replay_img_aug
コード例 #18
0
import albumentations as A

transform_fn = A.Compose([
    A.OneOf([
        A.IAAAdditiveGaussianNoise(),
        A.GaussNoise(),
    ], p=.2),
    A.OneOf([
        A.MotionBlur(p=.2),
        A.MedianBlur(blur_limit=3, p=.2),
        A.Blur(blur_limit=3, p=.2),
    ], p=.2),
    A.OneOf([
        A.CLAHE(clip_limit=2),
        A.IAASharpen(),
        A.IAAEmboss(),
        A.RandomBrightnessContrast(),
    ], p=0.2),
    A.OneOf([
        A.ChannelShuffle(),
        A.HueSaturationValue(),
        A.RGBShift(),
        A.ToSepia(),
    ], p=0.2),
    A.OneOf([
        A.RandomSunFlare(flare_roi=(0, 0, 1., 1.), src_radius=100, p=.1),
        A.RandomFog(fog_coef_lower=0.2, fog_coef_upper=0.3, p=.1),
        A.RandomShadow(p=.1),
        A.RandomRain(p=.1, blur_value=1),
    ], p=0.1)
])
コード例 #19
0
ファイル: aug.py プロジェクト: mkostiv/CV-Pipeline
    "div255":
    lambda array: array / 255,
}

augmentations = {
    "strong":
    albu.Compose([
        albu.Flip(),
        albu.ShiftScaleRotate(shift_limit=0.0,
                              scale_limit=0.2,
                              rotate_limit=30,
                              p=0.4),
        albu.OpticalDistortion(),
        albu.ElasticTransform(),
        albu.GaussNoise(),
        albu.RandomShadow(),
        albu.OneOf(
            [
                albu.CLAHE(clip_limit=2),
                albu.IAASharpen(),
                albu.IAAEmboss(),
                albu.RandomBrightnessContrast(),
                albu.RandomGamma(),
                albu.MedianBlur(),
            ],
            p=0.5,
        ),
        albu.OneOf(
            [albu.RGBShift(), albu.HueSaturationValue()], p=0.5),
    ]),
    "weak":
コード例 #20
0
ファイル: train.py プロジェクト: jerinka/registerNet
def getdata(img, count, disp=False):
    #randomly transform the template image to generate sample data
    #need to add a new function that generates data by registering real -
    #input images with template and thus generating transform matrix
    xtrain = []
    ytrain = []
    d = 20

    pts1 = np.float32([[0, 0], [width, 0], [width, height]])
    '''
    cv2.circle(img, tuple(pts1[0]), 5, (0, 0, 255), -1)
    cv2.circle(img, tuple(pts1[1]), 5, (0, 0, 255), -1)
    cv2.circle(img, tuple(pts1[2]), 5, (0, 0, 255), -1)
    cv2.imshow("Image", img)
    '''
    aug = A.Compose(
        [
            A.RandomBrightnessContrast(p=.5),
            A.RandomGamma(p=.5),
            A.RandomRain(
                brightness_coefficient=0.9, drop_width=1, blur_value=5, p=.5),
            A.RandomShadow(num_shadows_lower=1,
                           num_shadows_upper=1,
                           shadow_dimension=5,
                           shadow_roi=(0, 0.5, 1, 1),
                           p=.5),
            A.RandomFog(
                fog_coef_lower=0.1, fog_coef_upper=0.5, alpha_coef=0.1, p=.5),
            #A.RandomSunFlare(flare_roi=(0, 0, 0.2, 0.2), angle_lower=0.2, p=.5),
            #A.CLAHE(p=1),
            A.HueSaturationValue(hue_shift_limit=3,
                                 sat_shift_limit=50,
                                 val_shift_limit=50,
                                 p=.5),
        ],
        p=.8)

    for i in range(count):

        d0 = random.sample(range(-d, d), 2)
        d1 = random.sample(range(-d, d), 2)
        d2 = random.sample(range(-d, d), 2)
        #import pdb;pdb.set_trace()

        pts2 = np.float32([pts1[0] + d0, pts1[1] + d1, pts1[2] + d2])

        matrix = cv2.getAffineTransform(pts1, pts2)
        result = cv2.warpAffine(img, matrix, (width, height))
        #augmentations
        result = aug(image=result)['image']

        #import pdb;pdb.set_trace()
        matrix = cv2.invertAffineTransform(matrix)
        matrix = matrix.flatten()

        xtrain.append(result)
        ytrain.append(matrix)

        if disp == True:
            cv2.imshow("Affine transformation", result)
            cv2.waitKey(30)
    cv2.destroyAllWindows()
    xtrain = np.array(xtrain, dtype=np.float32)
    ytrain = np.array(ytrain, dtype=np.float32)
    return (xtrain / 255.0, ytrain)
コード例 #21
0
    def __call__(self, data):
        rgb, thermal, depth, audio, label, id = data

        rgb = rgb.astype(np.float32)
        height, width, _ = rgb.shape
        albumentations_transform_pixel = {
            'Blur': albumentations.Blur(),
            #'CLAHE':albumentations.CLAHE(),
            'ChannelDropout': albumentations.ChannelDropout(),
            'ChannelShuffle': albumentations.ChannelShuffle(),
            'CoarseDropout': albumentations.CoarseDropout(),
            #'Equalize':albumentations.Equalize(),
            #'FancyPCA':albumentations.FancyPCA(),
            'GaussNoise': albumentations.GaussNoise(),
            'GaussianBlur': albumentations.GaussianBlur(),
            #'GlassBlur':albumentations.GlassBlur(),
            'HueSaturationValue': albumentations.HueSaturationValue(),
            'IAAAdditiveGaussianNoise':
            albumentations.IAAAdditiveGaussianNoise(),
            #'ISONoise':albumentations.ISONoise(),
            'RGBShift': albumentations.RGBShift(),
            'RandomBrightnessContrast':
            albumentations.RandomBrightnessContrast(),
            'RandomFog': albumentations.RandomFog(),
            #'RandomGamma':albumentations.RandomGamma(),
            'RandomRain': albumentations.RandomRain(),
            'RandomShadow': albumentations.RandomShadow(),
            'RandomSnow': albumentations.RandomSnow(),
            'RandomSunFlare': albumentations.RandomSunFlare(),
            'Solarize': albumentations.Solarize(),
        }
        albumentations_transform_bbox = {
            #'HorizontalFlip':albumentations.HorizontalFlip(),
            #'VerticalFlip':albumentations.VerticalFlip(),
            #'CenterCrop':albumentations.CenterCrop(height=height-10, width=width-10, p=0.5),
            #'RandomCropNearBBox':albumentations.RandomCropNearBBox(p=0.5),
            #'Crop':albumentations.Crop(x_min=10, y_min =10, y_max=height-10, x_max=width-10, p=0.5),
            #'ElasticTransform':albumentations.ElasticTransform(),
            #'ShiftScaleRotate':albumentations.ShiftScaleRotate(),
        }
        transform = np.random.choice(
            ['None'] + list(albumentations_transform_pixel.keys()) +
            list(albumentations_transform_bbox.keys()))

        if transform in albumentations_transform_pixel:
            aug = albumentations.Compose(
                [albumentations_transform_pixel[transform]],
                bbox_params={
                    'format': 'pascal_voc',
                    'label_fields': ['labels']
                })
            try:
                annots = np.array(annots).astype(np.float32)
                aug_result = aug(image=rgb,
                                 bboxes=annots[:, :4],
                                 labels=annots[:, 4])
                rgb = aug_result['image']
                annots = np.hstack([
                    aug_result['bboxes'],
                    np.array(aug_result['labels']).reshape(-1, 1)
                ])
            except Exception as e:
                print(
                    f"transform={transform} aug_result['bboxes']={aug_result['bboxes']}            aug_result['labels']={aug_result['labels']}"
                )
                raise Exception(e)

        elif transform in albumentations_transform_bbox:
            aug = albumentations.Compose(
                [albumentations_transform_bbox[transform]],
                bbox_params={
                    'format': 'pascal_voc',
                    'label_fields': ['labels']
                })
            try:
                annots = np.array(annots).astype(np.float32)
                aug_result = aug(image=rgb,
                                 bboxes=annots[:, :4],
                                 labels=annots[:, 4])
                rgb = aug_result['image']
                label = np.hstack([
                    aug_result['bboxes'],
                    np.array(aug_result['labels']).reshape(-1, 1)
                ])
            except Exception as e:
                print(
                    f"transform={transform} aug_result['bboxes']={aug_result['bboxes']}            aug_result['labels']={aug_result['labels']}"
                )
                raise Exception(e)

        return rgb, thermal, depth, audio, label, id
コード例 #22
0
def get_transforms(aug_type: str):
    """
    Data augmentation 객체 생성

    Args:
        aug_type(str) : augmentation타입 지정

    Returns :
        list :: train, validation, test데이터 셋에 대한 transform
    """
    # TODO: Normalize
    if False:
        pass
    else:
        norm_mean = (0, 0, 0)
        norm_std = (1, 1, 1)

    if aug_type == 'no':
        train_transform = A.Compose(
            [A.Normalize(mean=norm_mean, std=norm_std),
             ToTensorV2()])
        val_transform = A.Compose(
            [A.Normalize(mean=norm_mean, std=norm_std),
             ToTensorV2()])
        test_transform = A.Compose(
            [A.Normalize(mean=norm_mean, std=norm_std),
             ToTensorV2()])
    elif aug_type == 'dev':
        pass
    elif aug_type == 'final':
        train_transform = A.Compose([
            A.HorizontalFlip(p=0.5),
            A.RandomResizedCrop(512,
                                512,
                                p=0.8,
                                scale=(0.7, 1.0),
                                ratio=(0.5, 1.5)),
            A.Rotate(limit=30, p=0.8),
            A.Cutout(num_holes=4, max_h_size=16, max_w_size=16, p=0.8),
            A.ElasticTransform(alpha=40, p=0.8),
            A.CLAHE(clip_limit=3.0, p=0.8),
            A.Normalize(mean=norm_mean, std=norm_std),
            ToTensorV2()
        ])
        val_transform = A.Compose(
            [A.Normalize(mean=norm_mean, std=norm_std),
             ToTensorV2()])
        test_transform = A.Compose(
            [A.Normalize(mean=norm_mean, std=norm_std),
             ToTensorV2()])
    # TODO: 아래 코드 정리 중
    elif aug_type == 'basic':
        train_transform = A.Compose([
            A.Normalize(mean=(0.46009655, 0.43957878, 0.41827092),
                        std=(0.2108204, 0.20766491, 0.21656131),
                        max_pixel_value=255.0,
                        p=1.0),
            ToTensorV2()
        ])

        val_transform = A.Compose([
            A.Normalize(mean=(0.46009655, 0.43957878, 0.41827092),
                        std=(0.2108204, 0.20766491, 0.21656131),
                        max_pixel_value=255.0,
                        p=1.0),
            ToTensorV2()
        ])

        test_transform = A.Compose([ToTensorV2()])
    elif aug_type == "aug1":
        train_transform = A.Compose([
            A.OneOf([
                A.ElasticTransform(alpha=120,
                                   sigma=120 * 0.05,
                                   alpha_affine=120 * 0.03,
                                   p=0.5),
                A.GridDistortion(p=1.0),
                A.OpticalDistortion(distort_limit=2, shift_limit=0.5, p=1)
            ],
                    p=0.8),
            A.VerticalFlip(p=0.5),
            A.RandomBrightnessContrast(p=0.8),
            A.RandomGamma(p=0.8),
            A.RandomRotate90(p=0.5),
            ToTensorV2()
        ])

        val_transform = A.Compose([ToTensorV2()])

        test_transform = A.Compose([ToTensorV2()])

    elif aug_type == "aug2":
        train_transform = A.Compose([
            A.OneOf([
                A.RandomShadow(p=1),
                A.RandomSunFlare(num_flare_circles_lower=1,
                                 num_flare_circles_upper=5,
                                 src_radius=250,
                                 p=1),
                A.RandomRain(p=1),
                A.RandomSnow(brightness_coeff=1.5, p=1),
                A.RandomFog(
                    fog_coef_lower=0.8, fog_coef_upper=1, alpha_coef=0.08, p=1)
            ],
                    p=0.8),
            ToTensorV2()
        ])

        val_transform = A.Compose([ToTensorV2()])

        test_transform = A.Compose([ToTensorV2()])

    elif aug_type == "aug3":
        train_transform = A.Compose([
            A.OneOf([
                A.HueSaturationValue(hue_shift_limit=0.2,
                                     sat_shift_limit=0.2,
                                     val_shift_limit=0.2,
                                     p=1),
                A.MultiplicativeNoise(
                    multiplier=(0.9, 1.1), per_channel=True, p=1),
                A.RGBShift(r_shift_limit=0.1,
                           g_shift_limit=0.1,
                           b_shift_limit=0.1,
                           p=1),
                A.ChannelShuffle(0.05)
            ],
                    p=0.8),
            ToTensorV2()
        ])

        val_transform = A.Compose([ToTensorV2()])

        test_transform = A.Compose([ToTensorV2()])

    elif aug_type == "aug4":
        train_transform = A.Compose([
            A.HorizontalFlip(p=0.5),
            A.VerticalFlip(p=0.5),
            A.RandomRotate90(p=0.5),
            ToTensorV2()
        ])

        val_transform = A.Compose([ToTensorV2()])

        test_transform = A.Compose([ToTensorV2()])

    elif aug_type == "aug5":
        train_transform = A.Compose([
            A.VerticalFlip(p=0.5),
            A.RandomRotate90(p=0.5),
            #A.ElasticTransform(p=1, alpha=120, sigma=120 * 0.05, alpha_affine=120 * 0.03),
            #A.GridDistortion(p=1.0),
            #A.OpticalDistortion(distort_limit=2, shift_limit=0.5, p=1)
            #A.VerticalFlip(p=0.5),
            #A.RandomBrightnessContrast(p=0.8),
            #A.RandomGamma(p=0.8),
            #A.RandomRotate90(p=0.5),
            #A.MultiplicativeNoise(multiplier=(0.9, 1.1), per_channel=True, p=0.8),
            ToTensorV2()
        ])

        val_transform = A.Compose([ToTensorV2()])

        test_transform = A.Compose([ToTensorV2()])

    return train_transform, val_transform, test_transform
コード例 #23
0
def get_train_transforms_mmdetection(input_size,
                                     use_crop=False,
                                     use_no_color_aug=False,
                                     use_center_crop=False,
                                     center_crop_ratio=0.9,
                                     use_gray=False):
    if isinstance(input_size, int):
        input_size = (input_size[0], input_size[1])
    return al.Compose([
        al.RandomResizedCrop(height=input_size[0],
                             width=input_size[1],
                             scale=(0.4, 1.0),
                             interpolation=0,
                             p=0.5),
        al.Resize(input_size[0], input_size[1], p=1.0),
        al.HorizontalFlip(p=0.5),
        al.OneOf([
            al.ShiftScaleRotate(border_mode=0,
                                shift_limit=(-0.2, 0.2),
                                scale_limit=(-0.2, 0.2),
                                rotate_limit=(-20, 20)),
            al.OpticalDistortion(border_mode=0,
                                 distort_limit=[-0.5, 0.5],
                                 shift_limit=[-0.5, 0.5]),
            al.GridDistortion(
                num_steps=5, distort_limit=[-0., 0.3], border_mode=0),
            al.ElasticTransform(border_mode=0),
            al.IAAPerspective(),
            al.RandomGridShuffle()
        ],
                 p=0.1),
        al.Rotate(limit=(-25, 25), border_mode=0, p=0.1),
        al.OneOf([
            al.RandomBrightnessContrast(brightness_limit=(-0.2, 0.2),
                                        contrast_limit=(-0.2, 0.2)),
            al.HueSaturationValue(hue_shift_limit=(-20, 20),
                                  sat_shift_limit=(-30, 30),
                                  val_shift_limit=(-20, 20)),
            al.RandomGamma(gamma_limit=(30, 150)),
            al.RGBShift(),
            al.CLAHE(clip_limit=(1, 15)),
            al.ChannelShuffle(),
            al.InvertImg(),
        ],
                 p=0.1),
        al.RandomSnow(p=0.05),
        al.RandomRain(p=0.05),
        al.RandomFog(p=0.05),
        al.RandomSunFlare(num_flare_circles_lower=1,
                          num_flare_circles_upper=2,
                          src_radius=110,
                          p=0.05),
        al.RandomShadow(p=0.05),
        al.GaussNoise(var_limit=(10, 20), p=0.05),
        al.ISONoise(color_shift=(0, 15), p=0.05),
        al.MultiplicativeNoise(p=0.05),
        al.OneOf([
            al.ToGray(p=1. if use_gray else 0.05),
            al.ToSepia(p=0.05),
            al.Solarize(p=0.05),
            al.Equalize(p=0.05),
            al.Posterize(p=0.05),
            al.FancyPCA(p=0.05),
        ],
                 p=0.05),
        al.OneOf([
            al.MotionBlur(blur_limit=(3, 7)),
            al.Blur(blur_limit=(3, 7)),
            al.MedianBlur(blur_limit=3),
            al.GaussianBlur(blur_limit=3),
        ],
                 p=0.05),
        al.CoarseDropout(p=0.05),
        al.Cutout(num_holes=30,
                  max_h_size=37,
                  max_w_size=37,
                  fill_value=0,
                  p=0.05),
        al.GridDropout(p=0.05),
        al.ChannelDropout(p=0.05),
        al.Downscale(scale_min=0.5, scale_max=0.9, p=0.1),
        al.ImageCompression(quality_lower=60, p=0.2),
        al.Normalize(),
        ToTensorV2()
    ])
コード例 #24
0
def get_train_transforms_atopy(input_size,
                               use_crop=False,
                               use_no_color_aug=False):
    if use_crop:
        resize = [
            al.Resize(int(input_size * 1.2), int(input_size * 1.2)),
            al.RandomSizedCrop(min_max_height=(int(input_size * 0.6),
                                               int(input_size * 1.2)),
                               height=input_size,
                               width=input_size)
        ]
    else:
        resize = [al.Resize(input_size, input_size)]
    return al.Compose(resize + [
        al.Flip(p=0.5),
        al.OneOf([
            al.RandomRotate90(),
            al.Rotate(limit=180),
        ], p=0.5),
        al.OneOf([
            al.ShiftScaleRotate(),
            al.OpticalDistortion(),
            al.GridDistortion(),
            al.ElasticTransform(),
        ],
                 p=0.3),
        al.RandomGridShuffle(p=0.05),
        al.OneOf([
            al.RandomGamma(),
            al.HueSaturationValue(),
            al.RGBShift(),
            al.CLAHE(),
            al.ChannelShuffle(),
            al.InvertImg(),
        ],
                 p=0.1),
        al.RandomSnow(p=0.05),
        al.RandomRain(p=0.05),
        al.RandomFog(p=0.05),
        al.RandomSunFlare(p=0.05),
        al.RandomShadow(p=0.05),
        al.RandomBrightnessContrast(p=0.05),
        al.GaussNoise(p=0.2),
        al.ISONoise(p=0.2),
        al.MultiplicativeNoise(p=0.2),
        al.ToGray(p=0.05),
        al.ToSepia(p=0.05),
        al.Solarize(p=0.05),
        al.Equalize(p=0.05),
        al.Posterize(p=0.05),
        al.FancyPCA(p=0.05),
        al.OneOf([
            al.MotionBlur(blur_limit=3),
            al.Blur(blur_limit=3),
            al.MedianBlur(blur_limit=3),
            al.GaussianBlur(blur_limit=3),
        ],
                 p=0.05),
        al.CoarseDropout(p=0.05),
        al.Cutout(p=0.05),
        al.GridDropout(p=0.05),
        al.ChannelDropout(p=0.05),
        al.Downscale(p=0.1),
        al.ImageCompression(quality_lower=60, p=0.2),
        al.Normalize(),
        ToTensorV2()
    ])
コード例 #25
0
    def __init__(self, folds, img_height, img_width, mean, std):
        df = pd.read_csv('../input/dataset/train_folds.csv')
        df = df[['Image', 'label', 'kfold']]

        df = df[df.kfold.isin(folds)].reset_index(drop=True)

        self.image_ids = df.Image.values

        self.labels = df.label.values

        if len(folds) == 1:
            self.aug = albumentations.Compose([
                albumentations.Resize(img_height, img_width),
                albumentations.Normalize(mean, std, always_apply=True)
            ])
        else:
            self.aug = albumentations.Compose([
                albumentations.Resize(img_height, img_width),
                albumentations.OneOf([
                    albumentations.ShiftScaleRotate(shift_limit=0.0625,
                                                    scale_limit=0.1,
                                                    rotate_limit=45),
                    albumentations.Rotate(limit=5),
                    albumentations.RandomGamma(),
                    albumentations.RandomShadow(),
                    albumentations.RandomGridShuffle(),
                    albumentations.ElasticTransform(),
                    albumentations.RGBShift(),
                ]),
                albumentations.OneOf([
                    albumentations.OneOf([
                        albumentations.Blur(),
                        albumentations.MedianBlur(),
                        albumentations.MotionBlur(),
                        albumentations.GaussianBlur(),
                    ]),
                    albumentations.OneOf([
                        albumentations.GaussNoise(),
                        albumentations.IAAAdditiveGaussianNoise(),
                        albumentations.ISONoise()
                    ]),
                ]),
                albumentations.OneOf([
                    albumentations.RandomBrightness(),
                    albumentations.RandomContrast(),
                    albumentations.RandomBrightnessContrast(),
                ]),
                albumentations.OneOf([
                    albumentations.OneOf([
                        albumentations.Cutout(),
                        albumentations.CoarseDropout(),
                        albumentations.GridDistortion(),
                        albumentations.GridDropout(),
                        albumentations.OpticalDistortion()
                    ]),
                    albumentations.OneOf([
                        albumentations.HorizontalFlip(),
                        albumentations.VerticalFlip(),
                        albumentations.RandomRotate90(),
                        albumentations.Transpose()
                    ]),
                ]),

                # albumentations.OneOf([
                #         albumentations.RandomSnow(),
                #         albumentations.RandomRain(),
                #         albumentations.RandomFog(),
                #     ]),
                albumentations.Normalize(mean, std, always_apply=True)
            ])
コード例 #26
0
from PIL import Image
import numpy as np
from torch.utils.data import Dataset
from mypath import Path
from torchvision import transforms
from dataloaders import custom_transforms as tr
from numpy import *
import albumentations as A
import cv2

resize_width = 640
resize_height = 480

aug_transform = A.Compose([
    A.RandomScale(scale_limit=[-0.95, 0], p=0.95),
    A.RandomShadow(shadow_roi=(0.25, 0.25, 0.75, 0.75)),
    A.PadIfNeeded(min_width=resize_width,
                  min_height=resize_height,
                  border_mode=cv2.BORDER_CONSTANT)
])


class ICDARSegmentation(Dataset):
    """
    icdar_challenge4 dataset
    """
    NUM_CLASSES = 2

    def __init__(
            self,
            args,
コード例 #27
0
ファイル: train_ego.py プロジェクト: xmba15/rail_marking
def train_process(data_path, config):
    def _worker_init_fn_():
        import random
        import numpy as np
        import torch

        random_seed = config.random_seed
        torch.manual_seed(random_seed)
        np.random.seed(random_seed)
        random.seed(random_seed)
        if torch.cuda.is_available():
            torch.cuda.manual_seed(random_seed)

    input_size = (config.img_height, config.img_width)

    PAD_VALUE = (0, 0, 0)
    IGNORE_INDEX = 255
    transforms = [
        abm.RandomResizedCrop(
            scale=(0.7, 1),
            ratio=(1.5, 2),
            height=config.img_height,
            width=config.img_width,
            interpolation=cv2.INTER_NEAREST,
            always_apply=True,
        ),
        abm.OneOf([abm.IAAAdditiveGaussianNoise(),
                   abm.GaussNoise()], p=0.5),
        abm.OneOf(
            [
                abm.MedianBlur(blur_limit=3),
                abm.GaussianBlur(blur_limit=3),
                abm.MotionBlur(blur_limit=3),
            ],
            p=0.5,
        ),
        abm.OneOf([
            abm.ShiftScaleRotate(
                rotate_limit=7,
                interpolation=cv2.INTER_NEAREST,
                border_mode=cv2.BORDER_CONSTANT,
                value=PAD_VALUE,
                mask_value=IGNORE_INDEX,
                p=1.0,
            ),
            abm.ElasticTransform(
                interpolation=cv2.INTER_NEAREST,
                border_mode=cv2.BORDER_CONSTANT,
                alpha_affine=30,
                value=PAD_VALUE,
                mask_value=IGNORE_INDEX,
                p=1.0,
            ),
            abm.Perspective(
                scale=(0.05),
                interpolation=cv2.INTER_NEAREST,
                pad_mode=cv2.BORDER_CONSTANT,
                pad_val=PAD_VALUE,
                mask_pad_val=IGNORE_INDEX,
                keep_size=True,
                fit_output=True,
                p=1.0,
            ),
        ]),
        abm.RandomGamma(gamma_limit=(80, 120), p=0.5),
        abm.RandomBrightnessContrast(brightness_limit=(-0.5, 0.5),
                                     contrast_limit=(-0.5, 0.5),
                                     p=0.5),
        abm.HueSaturationValue(hue_shift_limit=20,
                               sat_shift_limit=30,
                               val_shift_limit=20,
                               p=0.5),
        abm.RandomShadow(p=0.5),
        abm.ChannelShuffle(p=0.5),
        abm.ChannelDropout(p=0.5),
        abm.HorizontalFlip(p=0.5),
        abm.ImageCompression(quality_lower=50, p=0.5),
        abm.Cutout(num_holes=100, max_w_size=8, max_h_size=8, p=0.5),
    ]

    data_transform = DataTransformBase(transforms=transforms,
                                       input_size=input_size,
                                       normalize=True)
    train_dataset = EgoRailDataset(data_path=data_path,
                                   phase="train",
                                   transform=data_transform)
    val_dataset = EgoRailDataset(data_path=data_path,
                                 phase="val",
                                 transform=data_transform)

    # train_dataset.weighted_class()
    weighted_values = [8.90560578, 1.53155476]

    train_data_loader = DataLoader(
        train_dataset,
        batch_size=config.batch_size,
        shuffle=True,
        num_workers=config.num_workers,
        drop_last=True,
        worker_init_fn=_worker_init_fn_(),
    )
    val_data_loader = DataLoader(
        val_dataset,
        batch_size=config.batch_size,
        shuffle=False,
        num_workers=config.num_workers,
        drop_last=True,
    )
    data_loaders_dict = {"train": train_data_loader, "val": val_data_loader}
    model = BiSeNetV2(n_classes=config.num_classes)

    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    criterion = OHEMCELoss(thresh=config.ohem_ce_loss_thresh,
                           weighted_values=weighted_values)

    base_lr_rate = config.lr_rate / (config.batch_size *
                                     config.batch_multiplier)
    base_weight_decay = config.weight_decay * (config.batch_size *
                                               config.batch_multiplier)

    def _lambda_epoch(epoch):
        import math

        max_epoch = config.num_epochs
        return math.pow((1 - epoch * 1.0 / max_epoch), 0.9)

    optimizer = torch.optim.SGD(
        model.parameters(),
        lr=base_lr_rate,
        momentum=config.momentum,
        weight_decay=base_weight_decay,
    )
    scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=_lambda_epoch)
    trainer = BiSeNetV2Trainer(
        model=model,
        criterion=criterion,
        metric_func=None,
        optimizer=optimizer,
        data_loaders_dict=data_loaders_dict,
        config=config,
        scheduler=scheduler,
        device=device,
    )

    if config.snapshot and os.path.isfile(config.snapshot):
        trainer.resume_checkpoint(config.snapshot)

    with torch.autograd.set_detect_anomaly(True):
        trainer.train()
コード例 #28
0
def shadow(img, msk):
    aug = A.Compose([A.RandomShadow(always_apply=True)])
    data = aug(image=img)
    return data['image'], msk
コード例 #29
0
        A.ISONoise(p=0.4),
        A.JpegCompression(
            quality_lower=50, quality_upper=70, always_apply=False, p=0.8),
    ],
            p=0.6),
    A.OneOf([
        A.MotionBlur(blur_limit=10, p=.8),
        A.MedianBlur(blur_limit=3, p=0.75),
        A.GaussianBlur(blur_limit=7, p=0.75),
    ],
            p=0.8),
    A.OneOf([
        A.RandomBrightnessContrast(
            brightness_limit=0.3, contrast_limit=0.3, p=0.75),
        A.RandomShadow(num_shadows_lower=1,
                       num_shadows_upper=18,
                       shadow_dimension=6,
                       p=0.85),
    ],
            p=0.8),
])


def GenerateTrainingBlocks(data_folder,
                           gt_folder,
                           dataset_path='./dataset',
                           M=256,
                           N=256):
    print(data_folder)
    print('Generating training blocks!!!')
    train_path = dataset_path + '/' + data_folder + '_Trainblocks'
コード例 #30
0
ファイル: transforms.py プロジェクト: wuqiangch/AmurTigerCVWC
def get_transform(size, transform_type="weak", min_visibility=0):
    """Creates transformation for COCO dataset
    Args:
        size (int): image size to return
        transform_type (str):
            'weak': resizes and normalizes image and bbox
            'strong': performs different image effects, resizes and normalizes image and bbox
        min_visibility (int): minimum fraction of area for a bounding box
    Returns:
        albu.core.transforms_interface.BasicTransform: image and bbox transformation
    """
    bbox_params = {
        'format': 'coco',
        'min_visibility': min_visibility,
        'label_fields': ['category_id']
    }

    augs = {
        'strong':
        albu.Compose(
            [
                albu.Resize(size, size),
                albu.HorizontalFlip(),
                # albu.VerticalFlip(p=0.1),
                albu.ShiftScaleRotate(shift_limit=0.05,
                                      scale_limit=0.15,
                                      rotate_limit=20,
                                      p=.4,
                                      border_mode=cv2.BORDER_CONSTANT),
                albu.OneOf([
                    albu.Blur(),
                    albu.MotionBlur(),
                    albu.MedianBlur(),
                    albu.GaussianBlur(),
                ],
                           p=0.2),
                albu.OneOf([
                    albu.GaussNoise(var_limit=(10, 35)),
                    albu.IAAAdditiveGaussianNoise(),
                    albu.JpegCompression(quality_lower=50),
                ],
                           p=0.2),
                albu.OneOf(
                    [
                        albu.RandomRain(),
                        # albu.RandomSunFlare(),
                        albu.RandomShadow()
                    ],
                    p=0.15),
                albu.OneOf([
                    albu.CLAHE(clip_limit=2),
                    albu.IAASharpen(alpha=(0.1, 0.3)),
                    albu.IAAEmboss(alpha=(0.1, 0.4)),
                    albu.RandomGamma(),
                    albu.RandomBrightnessContrast(),
                ],
                           p=0.2),
                # albu.HueSaturationValue(p=0.25),
            ],
            bbox_params=bbox_params),
        'weak':
        albu.Compose(
            [
                albu.Resize(size, size),
                # albu.HorizontalFlip(),
            ],
            bbox_params=bbox_params),
    }

    aug_fn = augs[transform_type]
    normalize = albu.Normalize(mean=[0.485, 0.456, 0.406],
                               std=[0.229, 0.224, 0.225])

    pipeline = albu.Compose([
        aug_fn,
        # ])
        normalize
    ])

    return pipeline