示例#1
0
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.
示例#2
0
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
示例#3
0
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