def test_shape_tuple(self, device, dtype): inp = torch.zeros(3, 2, 41, 41, device=device, dtype=dtype) SP = kornia.geometry.ScalePyramid(n_levels=1, min_size=30) out = SP(inp) assert len(out) == 3 assert len(out[0]) == 1 assert len(out[1]) == 1 assert len(out[2]) == 1
def test_shape_tuple(self): inp = torch.zeros(3, 2, 6, 6) SP = kornia.geometry.ScalePyramid(n_levels=1) out = SP(inp) assert len(out) == 3 assert len(out[0]) == 1 assert len(out[1]) == 1 assert len(out[2]) == 1
def test_blur_order(self, device, dtype): inp = torch.rand(1, 1, 31, 31, device=device, dtype=dtype) SP = kornia.geometry.ScalePyramid(n_levels=3) sp, _, _ = SP(inp) for _, pyr_level in enumerate(sp): for _, img in enumerate(pyr_level): img = img.squeeze().view(3, -1) max_per_blur_level_val, _ = img.max(dim=1) assert torch.argmax(max_per_blur_level_val).item() == 0
def test_blur_order(self): inp = torch.rand(1, 1, 12, 12) SP = kornia.geometry.ScalePyramid(n_levels=5) sp, sigmas, pd = SP(inp) for i, pyr_level in enumerate(sp): for ii, img in enumerate(pyr_level): img = img.squeeze().view(5, -1) max_per_blur_level_val, _ = img.max(dim=1) assert torch.argmax(max_per_blur_level_val).item() == 0 return
def test_symmetry_preserving(self): inp = torch.zeros(1, 1, 12, 12) inp[0, 0, 4:8, 4:8] = 1.0 SP = kornia.geometry.ScalePyramid(n_levels=5) sp, sigmas, pd = SP(inp) for i, pyr_level in enumerate(sp): for ii, img in enumerate(pyr_level): img = img.squeeze() assert torch.allclose(img, img.flip(1)) assert torch.allclose(img, img.flip(2)) return
def test_symmetry_preserving(self, device, dtype): PS = 16 R = 2 inp = torch.zeros(1, 1, PS, PS, device=device, dtype=dtype) inp[..., PS // 2 - R:PS // 2 + R, PS // 2 - R:PS // 2 + R] = 1.0 SP = kornia.geometry.ScalePyramid(n_levels=3) sp, _, _ = SP(inp) for _, pyr_level in enumerate(sp): for _, img in enumerate(pyr_level): img = img.squeeze() assert_close(img, img.flip(1)) assert_close(img, img.flip(2))
def test_symmetry_preserving(self, device, dtype): PS = 16 R = 2 inp = torch.zeros(1, 1, PS, PS, device=device, dtype=dtype) inp[..., PS // 2 - R:PS // 2 + R, PS // 2 - R:PS // 2 + R] = 1.0 SP = kornia.geometry.ScalePyramid(n_levels=3) sp, sigmas, pd = SP(inp) for i, pyr_level in enumerate(sp): for ii, img in enumerate(pyr_level): img = img.squeeze() assert torch.allclose(img, img.flip(1), atol=1e-5, rtol=1e-3) assert torch.allclose(img, img.flip(2), atol=1e-5, rtol=1e-3) return
def test_n_levels_shape(self, device, dtype): inp = torch.zeros(1, 1, 32, 32, device=device, dtype=dtype) SP = kornia.geometry.ScalePyramid(n_levels=3) sp, _, _ = SP(inp) assert sp[0].shape == (1, 1, 3 + 3, 32, 32)
def test_shape_batch_double(self, device, dtype): inp = torch.zeros(3, 2, 31, 31, device=device, dtype=dtype) SP = kornia.geometry.ScalePyramid(n_levels=1, double_image=True) sp, _, _ = SP(inp) assert sp[0].shape == (3, 2, 1 + 3, 62, 62)
def test_shape_batch(self, device, dtype): inp = torch.zeros(3, 2, 31, 31, device=device, dtype=dtype) SP = kornia.geometry.ScalePyramid(n_levels=1) sp, _, _ = SP(inp) assert sp[0].shape == (3, 2, 3 + 1, 31, 31)
def sp_tuple(img): sp, _, _ = SP()(img) return tuple(sp)
def test_n_levels_shape(self): inp = torch.zeros(1, 1, 6, 6) SP = kornia.geometry.ScalePyramid(n_levels=5) sp, sigmas, pd = SP(inp) assert sp[0].shape == (1, 5, 1, 6, 6)
def test_shape_batch(self): inp = torch.zeros(3, 2, 6, 6) SP = kornia.geometry.ScalePyramid(n_levels=1) sp, sigmas, pd = SP(inp) assert sp[0].shape == (3, 1, 2, 6, 6)
def sp_tuple(img): sp, sigmas, pd = SP()(img) return tuple(sp)
def test_shape_batch_double(self, device): inp = torch.zeros(3, 2, 6, 6).to(device) SP = kornia.geometry.ScalePyramid(n_levels=1, double_image=True) sp, sigmas, pd = SP(inp) assert sp[0].shape == (3, 1, 2, 12, 12)
def test_n_levels_shape(self, device): inp = torch.zeros(1, 1, 32, 32).to(device) SP = kornia.geometry.ScalePyramid(n_levels=3) sp, sigmas, pd = SP(inp) assert sp[0].shape == (1, 3, 1, 32, 32)