def get_augumentation(phase, width=512, height=512, min_area=0., min_visibility=0., ft='coco'): # from albumentations for all detection and segmentation list_transforms = [] if phase == 'train': list_transforms.extend([ transforms.LongestMaxSize( max_size=width, always_apply=True), albu.PadIfNeeded(min_height=height, min_width=width, always_apply=True, border_mode=0, value=[0, 0, 0]), transforms.RandomResizedCrop( height=height, width=width, p=0.3), transforms.Flip(), transforms.Transpose(), albu.OneOf([ albu.RandomBrightnessContrast(brightness_limit=0.5, contrast_limit=0.4), albu.RandomGamma(gamma_limit=(50, 150)), albu.NoOp() ]), albu.OneOf([ albu.RGBShift(r_shift_limit=20, b_shift_limit=15, g_shift_limit=15), albu.HueSaturationValue(hue_shift_limit=5, sat_shift_limit=5), albu.NoOp() ]), albu.CLAHE(p=0.8), albu.HorizontalFlip(p=0.5), albu.VerticalFlip(p=0.5), ]) if phase == 'test': list_transforms.extend([ albu.Resize(height=height, width=width) ]) list_transforms.extend([ albu.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225), p=1), ToTensorV2() ]) if phase == 'test': return albu.Compose(list_transforms) return albu.Compose(list_transforms, bbox_params=albu.BboxParams(format=ft, min_area=min_area, min_visibility=min_visibility, label_fields=['category_id']))
def get_augmentations(): """Get a list of 'major' and 'minor' augmentation functions for the pipeline in a dictionary.""" return { "major": { "shift-scale-rot": trans.ShiftScaleRotate( shift_limit=0.05, rotate_limit=35, border_mode=cv2.BORDER_REPLICATE, always_apply=True, ), "crop": trans.RandomResizedCrop(100, 100, scale=(0.8, 0.95), ratio=(0.8, 1.2), always_apply=True), # "elastic": trans.ElasticTransform( # alpha=0.8, # alpha_affine=10, # sigma=40, # border_mode=cv2.BORDER_REPLICATE, # always_apply=True, # ), "distort": trans.OpticalDistortion(0.2, always_apply=True), }, "minor": { "blur": trans.GaussianBlur(7, always_apply=True), "noise": trans.GaussNoise((20.0, 40.0), always_apply=True), "bright-contrast": trans.RandomBrightnessContrast(0.4, 0.4, always_apply=True), "hsv": trans.HueSaturationValue(30, 40, 50, always_apply=True), "rgb": trans.RGBShift(always_apply=True), "flip": trans.HorizontalFlip(always_apply=True), }, }
def train_dataloader(self): augmentations = Compose( [ A.RandomResizedCrop( height=self.hparams.sz, width=self.hparams.sz, scale=(0.7, 1.0), ), # AdvancedHairAugmentation(), A.GridDistortion(), A.RandomBrightnessContrast(), A.ShiftScaleRotate(), A.Flip(p=0.5), A.CoarseDropout( max_height=int(self.hparams.sz / 10), max_width=int(self.hparams.sz / 10), ), # A.HueSaturationValue(), A.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225], max_pixel_value=255, ), ToTensorV2(), ] ) train_ds = MelanomaDataset( df=self.train_df, images_path=self.train_images_path, augmentations=augmentations, train_or_valid=True, ) return DataLoader( train_ds, # sampler=sampler, batch_size=self.hparams.bs, shuffle=True, num_workers=os.cpu_count(), pin_memory=True, )
def get_tta_transforms(): return Compose([ A.RandomResizedCrop( height=hparams.sz, width=hparams.sz, scale=(0.7, 1.0), ), # AdvancedHairAugmentation(), A.GridDistortion(), A.RandomBrightnessContrast(), A.ShiftScaleRotate(), A.Flip(p=0.5), A.CoarseDropout( max_height=int(hparams.sz / 10), max_width=int(hparams.sz / 10), ), # A.HueSaturationValue(), A.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225], max_pixel_value=255, ), ToTensorV2(), ])