|
import albumentations as A |
|
|
|
|
|
class DarkAug(object): |
|
""" |
|
Extreme dark augmentation aiming at Aachen Day-Night |
|
""" |
|
|
|
def __init__(self) -> None: |
|
self.augmentor = A.Compose([ |
|
A.RandomBrightnessContrast(p=0.75, brightness_limit=(-0.6, 0.0), contrast_limit=(-0.5, 0.3)), |
|
A.Blur(p=0.1, blur_limit=(3, 9)), |
|
A.MotionBlur(p=0.2, blur_limit=(3, 25)), |
|
A.RandomGamma(p=0.1, gamma_limit=(15, 65)), |
|
A.HueSaturationValue(p=0.1, val_shift_limit=(-100, -40)) |
|
], p=0.75) |
|
|
|
def __call__(self, x): |
|
return self.augmentor(image=x)['image'] |
|
|
|
|
|
class MobileAug(object): |
|
""" |
|
Random augmentations aiming at images of mobile/handhold devices. |
|
""" |
|
|
|
def __init__(self): |
|
self.augmentor = A.Compose([ |
|
A.MotionBlur(p=0.25), |
|
A.ColorJitter(p=0.5), |
|
A.RandomRain(p=0.1), |
|
A.RandomSunFlare(p=0.1), |
|
A.JpegCompression(p=0.25), |
|
A.ISONoise(p=0.25) |
|
], p=1.0) |
|
|
|
def __call__(self, x): |
|
return self.augmentor(image=x)['image'] |
|
|
|
|
|
def build_augmentor(method=None, **kwargs): |
|
if method is not None: |
|
raise NotImplementedError('Using of augmentation functions are not supported yet!') |
|
if method == 'dark': |
|
return DarkAug() |
|
elif method == 'mobile': |
|
return MobileAug() |
|
elif method is None: |
|
return None |
|
else: |
|
raise ValueError(f'Invalid augmentation method: {method}') |
|
|
|
|
|
if __name__ == '__main__': |
|
augmentor = build_augmentor('FDA') |
|
|