import random from PIL import ImageFilter, ImageOps from torchvision import transforms class deitIII_GaussianBlur(object): """ Apply Gaussian Blur to the PIL image. """ def __init__(self, p=0.1, radius_min=0.1, radius_max=2.): self.prob = p self.radius_min = radius_min self.radius_max = radius_max def __call__(self, img): do_it = random.random() <= self.prob if not do_it: return img img = img.filter( ImageFilter.GaussianBlur( radius=random.uniform(self.radius_min, self.radius_max) ) ) return img class deitIII_Solarization(object): """ Apply Solarization to the PIL image. """ def __init__(self, p=0.2): self.p = p def __call__(self, img): if random.random() < self.p: return ImageOps.solarize(img) else: return img class deitIII_gray_scale(object): """ Apply Solarization to the PIL image. """ def __init__(self, p=0.2): self.p = p self.transf = transforms.Grayscale(3) def __call__(self, img): if random.random() < self.p: return self.transf(img) else: return img