def rotate_and_flip(tensor,device,p=0.5): for i in range(tensor.shape[0]): random_number=np.random.uniform() if random_number < p: center = torch.ones(tensor.shape[1], 2).to(device) center[:, 0] = tensor.shape[3] / 2 # x center[:, 1] = tensor.shape[2] / 2 # y #scale: torch.tensor = torch.ones(1)#*np.random.uniform(0.8,1.2) angle = torch.tensor([np.random.randint(-90,90,)*np.ones(tensor.shape[1])]).squeeze().to(device).float() #print(angle.shape) #print(tensor[i].shape) #M = kornia.get_rotation_matrix2d(center, angle, scale)#.to(device) #Mt = torch.ones((tensor.shape[0],2,3)) #Mt[:] = M #Mt=Mt.to(device) #tensor[:,j]=kornia.warp_affine(tensor[:,j], Mt, dsize=(tensor.shape[3], tensor.shape[4])) #print(tensor.dtype) tensor[i]=kornia.rotate(tensor[i],angle,center) random_number=np.random.uniform() if random_number < p: tensor[i,:]=kornia.hflip(tensor[i,:]) random_number=np.random.uniform() if random_number < p: tensor[i,:]=kornia.vflip(tensor[i,:]) return tensor
def test_affine_rotate(self, device): torch.manual_seed(0) angle = torch.rand(1, device=device) * 90.0 input = torch.rand(1, 2, 3, 4, device=device) transform = kornia.Affine(angle=angle).to(device) actual = transform(input) expected = kornia.rotate(input, angle) assert_allclose(actual, expected)
def test_affine_rotate(self, device, dtype): # TODO: Remove when #666 is implemented if device.type == 'cuda': pytest.skip("Currently breaks in CUDA." "See https://github.com/kornia/kornia/issues/666") torch.manual_seed(0) angle = torch.rand(1, device=device, dtype=dtype) * 90.0 input = torch.rand(1, 2, 3, 4, device=device, dtype=dtype) transform = kornia.Affine(angle=angle).to(device=device, dtype=dtype) actual = transform(input) expected = kornia.rotate(input, angle) assert_close(actual, expected, atol=1e-4, rtol=1e-4)
def rotate_dgm(data, n_trans=5, random_rotate=False): if random_rotate: theta_list = random.sample(list(np.arange(1, 359)), n_trans) else: theta_list = np.arange(10, 360, int(360 / n_trans)) data = torch.cat([ data if theta == 0 else dgm.rotate(data, torch.Tensor([theta]).type_as(data)) for theta in theta_list ], dim=0) return data
def grad_rot(input, a, b, c): rot = rotate(input, torch.tensor(30., dtype=input.dtype, device=device)) return enhance.equalize_clahe(rot, a, b, c)
def _transform(self, img: torch.Tensor, param: torch.Tensor) -> torch.Tensor: return kornia.rotate(img, param)
def Rotate(x, v): return kornia.rotate(x, v)
def rotate(img: torch.Tensor, mag: torch.Tensor) -> torch.Tensor: return kornia.rotate(img, mag)