Code adapted from https://github.com/qubvel/ttach.

Functional

rot90[source]

rot90(x, k=1)

rotate batch of images by 90 degrees k times

hflip[source]

hflip(x)

flip batch of images horizontally

vflip[source]

vflip(x)

flip batch of images vertically

Base Classes

class BaseTransform[source]

BaseTransform(pname:str, params:Union[list, tuple])

class Chain[source]

Chain(functions:List[callable])

class Transformer[source]

Transformer(image_pipeline:Chain, mask_pipeline:Chain)

class Compose[source]

Compose(aug_transforms:List[BaseTransform])

class Merger[source]

Merger()

imgs = TensorImage(torch.randn(4, 1, 356, 356))
for t in ['mean', 'max', 'std']:
    m = Merger()
    for _ in range(10): m.append(imgs)    
    test_eq(imgs.shape, m.result(t).shape)

Transform Classes

class HorizontalFlip[source]

HorizontalFlip() :: BaseTransform

Flip images horizontally (left->right)

t = HorizontalFlip()
aug = t.apply_aug_image(imgs)
deaug = t.apply_deaug_mask(aug)
test_eq(imgs, deaug)

class VerticalFlip[source]

VerticalFlip() :: BaseTransform

Flip images vertically (up->down)

t = VerticalFlip()
aug = t.apply_aug_image(imgs)
deaug = t.apply_deaug_mask(aug)
test_eq(imgs, deaug)

class Rotate90[source]

Rotate90(angles:List[int]) :: BaseTransform

Rotate images 0/90/180/270 degrees (angles)

t = Rotate90([180])
aug = t.apply_aug_image(imgs)
deaug = t.apply_deaug_mask(aug)
test_eq(imgs, deaug)

Pipeline Test

tfms=[HorizontalFlip(),VerticalFlip(), Rotate90(angles=[90,180,270])]
c = Compose(tfms)
m = Merger()
for t in c:
    aug = t.augment_image(imgs)
    deaug = t.deaugment_mask(aug)
    test_eq(imgs, deaug)
    m.append(deaug)
test_close(imgs, m.result())