--- a +++ b/random_eraser.py @@ -0,0 +1,44 @@ +import numpy as np + +from imgaug import augmenters as iaa +import numpy as np + +#def get_augumentation() +# def eraser(input_img): +# seq = iaa.Sequential([iaa.GaussianBlur((0,3.0)), iaa.Affine(translate_px={"x":(-40,40)})]) +# seq_det = seq.to_deterministic() +# input_img = seq_det.augment_images(input_img) + +# return input_img +# return eraser + + +def get_random_eraser(p=0.5, s_l=0.02, s_h=0.4, r_1=0.3, r_2=1/0.3, v_l=0, v_h=255, pixel_level=False): + def eraser(input_img): + img_h, img_w, img_c = input_img.shape + p_1 = np.random.rand() + + if p_1 > p: + return input_img + + while True: + s = np.random.uniform(s_l, s_h) * img_h * img_w + r = np.random.uniform(r_1, r_2) + w = int(np.sqrt(s / r)) + h = int(np.sqrt(s * r)) + left = np.random.randint(0, img_w) + top = np.random.randint(0, img_h) + + if left + w <= img_w and top + h <= img_h: + break + + if pixel_level: + c = np.random.uniform(v_l, v_h, (h, w, img_c)) + else: + c = np.random.uniform(v_l, v_h) + + input_img[top:top + h, left:left + w, :] = c + + return input_img + + return eraser