Exemplo n.º 1
0
    def test_exception(self, batch_size, device, dtype):
        with pytest.raises(TypeError):
            src = torch.rand(batch_size, 5, 2).numpy()
            assert kornia.get_tps_transform(src, src)

        with pytest.raises(ValueError):
            src = torch.rand(batch_size, 5)
            assert kornia.get_tps_transform(src, src)
Exemplo n.º 2
0
 def test_jit(self, batch_size, device, dtype):
     src, dst = _sample_points(batch_size, device)
     kernel, affine = kornia.get_tps_transform(src, dst)
     op = kornia.warp_points_tps
     op_jit = torch.jit.script(op)
     assert_allclose(op(src, dst, kernel, affine),
                     op_jit(src, dst, kernel, affine))
Exemplo n.º 3
0
 def test_affine_only(self, batch_size, device, dtype):
     src = torch.tensor(
         [[[0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0, 1.0], [0.5, 0.5]]],
         device=device).repeat(batch_size, 1, 1)
     dst = src.clone() * 2.0
     kernel, affine = kornia.get_tps_transform(src, dst)
     assert_allclose(kernel, torch.zeros_like(kernel), atol=1e-4, rtol=1e-4)
Exemplo n.º 4
0
 def test_jit(self, batch_size, device, dtype):
     src, dst = _sample_points(batch_size, device)
     kernel, affine = kornia.get_tps_transform(src, dst)
     image = torch.rand(batch_size, 3, 32, 32, device=device)
     op = kornia.warp_image_tps
     op_jit = torch.jit.script(op)
     assert_close(op(image, dst, kernel, affine), op_jit(image, dst, kernel, affine), rtol=1e-4, atol=1e-4)
Exemplo n.º 5
0
 def test_gradcheck(self, batch_size, device, dtype, requires_grad):
     opts = dict(device=device, dtype=torch.float64)
     src, dst = _sample_points(batch_size, **opts)
     kernel, affine = kornia.get_tps_transform(src, dst)
     kernel.requires_grad_(requires_grad)
     affine.requires_grad_(not requires_grad)
     assert gradcheck(kornia.warp_points_tps, (src, dst, kernel, affine), raise_exception=True)
Exemplo n.º 6
0
 def test_no_warp(self, batch_size, device, dtype):
     src = torch.rand(batch_size, 5, 2, device=device)
     kernel, affine = kornia.get_tps_transform(src, src)
     target_kernel = torch.zeros(batch_size, 5, 2, device=device)
     target_affine = torch.zeros(batch_size, 3, 2, device=device)
     target_affine[:, [1, 2], [0, 1]] = 1.
     assert_allclose(kernel, target_kernel, atol=1e-4, rtol=1e-4)
     assert_allclose(affine, target_affine, atol=1e-4, rtol=1e-4)
Exemplo n.º 7
0
 def test_gradcheck(self, batch_size, device, dtype):
     opts = dict(device=device, dtype=torch.float64)
     src, dst = _sample_points(batch_size, **opts)
     kernel, affine = kornia.get_tps_transform(src, dst)
     image = torch.rand(batch_size, 3, 8, 8, requires_grad=True, **opts)
     assert gradcheck(
         kornia.warp_image_tps, (image, dst, kernel, affine), raise_exception=True, atol=1e-4, rtol=1e-4
     )
Exemplo n.º 8
0
    def test_warp(self, batch_size, device, dtype):
        src = torch.tensor([[[-1.0, -1.0], [-1.0, 1.0], [1.0, -1.0],
                             [1.0, -1.0], [0.0, 0.0]]],
                           device=device).repeat(batch_size, 1, 1)
        # zoom in by a factor of 2
        dst = src.clone() * 2.0
        tensor = torch.zeros(batch_size, 3, 8, 8, device=device)
        tensor[:, :, 2:6, 2:6] = 1.0

        expected = torch.ones_like(tensor)
        # nn.grid_sample interpolates the at the edges it seems, so the boundaries have values < 1
        expected[:, :, [0, -1], :] *= 0.5
        expected[:, :, :, [0, -1]] *= 0.5

        kernel, affine = kornia.get_tps_transform(dst, src)
        warp = kornia.warp_image_tps(tensor, src, kernel, affine)
        assert_allclose(warp, expected, atol=1e-4, rtol=1e-4)
Exemplo n.º 9
0
 def test_warp(self, batch_size, device, dtype):
     src, dst = _sample_points(batch_size, device)
     kernel, affine = kornia.get_tps_transform(src, dst)
     warp = kornia.warp_points_tps(src, dst, kernel, affine)
     assert_allclose(warp, dst, atol=1e-4, rtol=1e-4)
Exemplo n.º 10
0
 def test_smoke(self, batch_size, device, dtype):
     src, dst = _sample_points(batch_size, device)
     kernel, affine = kornia.get_tps_transform(src, dst)
     warp = kornia.warp_points_tps(src, dst, kernel, affine)
     assert warp.shape == src.shape
Exemplo n.º 11
0
 def test_smoke(self, batch_size, device, dtype):
     src = torch.rand(batch_size, 4, 2, device=device)
     out = kornia.get_tps_transform(src, src)
     assert len(out) == 2
Exemplo n.º 12
0
 def test_smoke(self, batch_size, device, dtype):
     src, dst = _sample_points(batch_size, device)
     tensor = torch.rand(batch_size, 3, 32, 32, device=device)
     kernel, affine = kornia.get_tps_transform(src, dst)
     warp = kornia.warp_image_tps(tensor, dst, kernel, affine)
     assert warp.shape == tensor.shape