def transform(x,y,crop_range,rot_range,shear_range,zoom_range,t): if t == False: # If t is set to false the input is only cropped crop_type = np.random.randint(0,5,1)[0] # Randomly crop image from either center or a corner. x_new = SpecialCrop((crop_range),crop_type=crop_type)(x) y_new = SpecialCrop((crop_range),crop_type=crop_type)(y) else: rot = RandomRotate(rot_range,lazy=True)(x) shear = RandomShear(shear_range,lazy=True)(x) zoom = RandomZoom(zoom_range,lazy=True)(x) flip = RandomFlip(v=True,p = np.random.randint(0,2,1)[0])# Images and label is flipped with 0.5 prob. crop_type = np.random.randint(0,5,1)[0] x_new = SpecialCrop((crop_range),crop_type=crop_type)(x) y_new = SpecialCrop((crop_range),crop_type=crop_type)(y) x_new = th_affine2d(x_new,rot) y_new = th_affine2d(y_new,rot) x_new = th_affine2d(x_new,shear) y_new = th_affine2d(y_new,shear) x_new = th_affine2d(x_new,zoom) y_new = th_affine2d(y_new,zoom) x_new = flip(x_new) y_new = flip(y_new) return AddChannel()(x_new), AddChannel()(y_new) # Add channel for concatenating batch.
def cropBox(img, ul, br, resH, resW): ul = ul.int() br = br.int() lenH = max(br[1] - ul[1], (br[0] - ul[0]) * resH / resW) lenW = lenH * resW / resH if img.dim() == 2: img = img[np.newaxis, :] newDim = torch.IntTensor((img.size(0), int(lenH), int(lenW))) newImg = img[:, ul[1]:, ul[0]:].clone() # Crop and Padding size = torch.IntTensor((int(br[1] - ul[1]), int(br[0] - ul[0]))) newImg = SpecialCrop(size, 1)(newImg) newImg = Pad(newDim)(newImg) # Resize to output v_Img = torch.autograd.Variable(newImg) v_Img = torch.unsqueeze(v_Img, 0) # newImg = F.upsample_bilinear(v_Img, size=(int(resH), int(resW))).data[0] if torch.__version__ == '0.4.0a0+32f3bf7' or torch.__version__ == '0.4.0': newImg = F.upsample(v_Img, size=(int(resH), int(resW)), mode='bilinear', align_corners=True).data[0] else: newImg = F.interpolate(v_Img, size=(int(resH), int(resW)), mode='bilinear', align_corners=True).data[0] return newImg
def cropBox(img, up_left, bottom_right, target_height, target_width): up_left = up_left.int() bottom_right = bottom_right.int() curr_height = max(bottom_right[1] - up_left[1], (bottom_right[0] - up_left[0]) * target_height / target_width) curr_width = curr_height * target_width / target_height if img.dim() == 2: img = img[np.newaxis, :] new_dim = torch.IntTensor((img.size(0), int(curr_height), int(curr_width))) new_img = img[:, up_left[1]:, up_left[0]:] # crop and padding size = torch.IntTensor( (bottom_right[1] - up_left[1], bottom_right[0] - up_left[0])) new_img = SpecialCrop(size, 1)(new_img) new_img = Pad(new_dim)(new_img) # resize to output v_img = torch.unsqueeze(new_img, 0) # newImg = F.upsample_bilinear(v_Img, size=(int(resH), int(resW))).data[0] new_img = F.upsample(v_img, size=(int(target_height), int(target_width)), mode='bilinear', align_corners=True).data[0] return new_img
def cropBox(img, ul, br, resH, resW): ul = ul.int() # xmin, ymin br = br.int() # xmax, ymax lenH = max(br[1] - ul[1], (br[0] - ul[0]) * resH / resW) lenW = lenH * resW / resH if img.dim() == 2: img = img[np.newaxis, :] newDim = torch.IntTensor((img.size(0), int(lenH), int(lenW))) newImg = img[:, ul[1]:, ul[0]:] # Crop and Padding size = torch.IntTensor((br[1] - ul[1], br[0] - ul[0])) newImg = SpecialCrop(size, 1)(newImg) newImg = Pad(newDim)(newImg) # Resize to output # batch = 0, channel = img.size(0), h = int(lenH), w = int(lenW) v_Img = torch.unsqueeze(newImg, 0) # newImg = F.upsample_bilinear(v_Img, size=(int(resH), int(resW))).data[0] newImg = F.upsample(v_Img, size=(int(resH), int(resW)), mode='bilinear', align_corners=True).data[0] return newImg
def SpecialCrop_setup(): tforms = {} tforms['specialcrop_0_1010'] = SpecialCrop((10, 10), 0) tforms['specialcrop_0_510'] = SpecialCrop((5, 10), 0) tforms['specialcrop_0_105'] = SpecialCrop((10, 5), 0) tforms['specialcrop_0_99'] = SpecialCrop((9, 9), 0) tforms['specialcrop_0_79'] = SpecialCrop((7, 9), 0) tforms['specialcrop_0_97'] = SpecialCrop((9, 7), 0) tforms['specialcrop_1_1010'] = SpecialCrop((10, 10), 1) tforms['specialcrop_1_510'] = SpecialCrop((5, 10), 1) tforms['specialcrop_1_105'] = SpecialCrop((10, 5), 1) tforms['specialcrop_1_99'] = SpecialCrop((9, 9), 1) tforms['specialcrop_1_79'] = SpecialCrop((7, 9), 1) tforms['specialcrop_1_97'] = SpecialCrop((9, 7), 1) tforms['specialcrop_2_1010'] = SpecialCrop((10, 10), 2) tforms['specialcrop_2_510'] = SpecialCrop((5, 10), 2) tforms['specialcrop_2_105'] = SpecialCrop((10, 5), 2) tforms['specialcrop_2_99'] = SpecialCrop((9, 9), 2) tforms['specialcrop_2_79'] = SpecialCrop((7, 9), 2) tforms['specialcrop_2_97'] = SpecialCrop((9, 7), 2) tforms['specialcrop_3_1010'] = SpecialCrop((10, 10), 3) tforms['specialcrop_3_510'] = SpecialCrop((5, 10), 3) tforms['specialcrop_3_105'] = SpecialCrop((10, 5), 3) tforms['specialcrop_3_99'] = SpecialCrop((9, 9), 3) tforms['specialcrop_3_79'] = SpecialCrop((7, 9), 3) tforms['specialcrop_3_97'] = SpecialCrop((9, 7), 3) tforms['specialcrop_4_1010'] = SpecialCrop((10, 10), 4) tforms['specialcrop_4_510'] = SpecialCrop((5, 10), 4) tforms['specialcrop_4_105'] = SpecialCrop((10, 5), 4) tforms['specialcrop_4_99'] = SpecialCrop((9, 9), 4) tforms['specialcrop_4_79'] = SpecialCrop((7, 9), 4) tforms['specialcrop_4_97'] = SpecialCrop((9, 7), 4) return tforms