Augmentations

Helper functions to make working with Albumentations and Fast.ai easier

Patching for drone_detector.data classes


source

RegressionMask.affine_coord

 RegressionMask.affine_coord
                              (x:drone_detector.engines.fastai.data.Regres
                              sionMask, mat=None, coord_tfm=None, sz=None,
                              mode='nearest', pad_mode='reflection',
                              align_corners=True)

RegressionMask can’t be long type

AlbumentationsTransform


source

AlbumentationsTransform

 AlbumentationsTransform (train_aug, valid_aug=None)

A transform handler for multiple Albumentation transforms in simple classification or regression tasks.

SegmentationAlbumentationsTransform


source

SegmentationAlbumentationsTransform

 SegmentationAlbumentationsTransform (aug)

A transform handler for Albumentation transforms for segmentation tasks.

path = Path('example_data/monthly_data')
month='july'

fnames = [path/f'{month}/{f}' for f in os.listdir(path/f'{month}') if f.endswith('.tif')][:2]
transform_list = [A.ToFloat(max_value=65535.0, always_apply=True),
                  A.RandomBrightnessContrast(p=0.5,brightness_limit=.05, brightness_by_max=False),
                  A.RandomRotate90(p=1),
                  A.HorizontalFlip(p=.5),
                  A.VerticalFlip(p=.5),
                  A.CoarseDropout(),
                  A.FromFloat(max_value=65535.0, dtype=np.int16, always_apply=True)
                 ]
used_tfms =  SegmentationAlbumentationsTransform(A.Compose(transform_list))
segm = TifSegmentationDataLoaders.from_label_func(path/f'{month}_2018', fnames, y_block=RegressionMaskBlock,
                                                  label_func=partial(label_with_matching_fname, 
                                                                     path=path/'masks'),
                                                  batch_tfms = [
                                                      #Normalize.from_stats(*stats)
                                                  ],
                                                  item_tfms = [used_tfms], 
                                                  bs=1)
segm.show_batch(channels=[3,2,1])

files = get_image_timeseries(path, 
                             months=['may', 'june', 'july', 'august', 'september', 'october'], masks='masks')
dblock = DataBlock(blocks=(MultiChannelImageTupleBlock, 
                           RegressionMaskBlock),
                   get_items=lambda x: x,
                   get_x=get_all_but_last, get_y=get_last,
                   item_tfms=[
                       used_tfms
                   ],
                   batch_tfms=[ 
                   ])
dls = dblock.dataloaders(files[:1], bs=1)
dls.show_batch(channels=[3,2,1])

Utils functions