def test_random_proj_and_selective_stream(img_5x5): img = img_5x5 dc = slc.DataContainer((img, ), "I") ppl = slt.Projection( slc.SelectiveStream( [ slt.Rotate(angle_range=(90, 90), p=0), slt.Scale(range_y=(0, 0.1), same=True, p=0), slt.Shear(range_y=(-0.1, 0.1), p=0), ], n=3, ), v_range=(0, 0), ) dc_res = ppl(dc) assert np.array_equal(dc.data, dc_res.data)
def test_rotate_90_img_mask_keypoints_destructive(img, mask, transform_settings, ignore_state): # Setting up the data kpts_data = np.array([[0, 0], [0, 2], [2, 2], [2, 0]]).reshape((4, 2)) kpts = slc.Keypoints(kpts_data, frame=(3, 3)) H, W = mask.shape dc = slc.DataContainer( (img, mask, kpts, 1), "IMPL", transform_settings=copy.deepcopy(transform_settings), ) # Defining the 90 degrees transform (clockwise) stream = slt.Rotate(angle_range=(90, 90), p=1, ignore_state=ignore_state) dc_res = stream(dc) img_res, _, _ = dc_res[0] mask_res, _, _ = dc_res[1] kpts_res, _, _ = dc_res[2] label_res, _, _ = dc_res[3] M = cv2.getRotationMatrix2D((W // 2, H // 2), -90, 1) img_inter = ALLOWED_INTERPOLATIONS["bicubic"] img_pad = ALLOWED_PADDINGS["z"] if transform_settings is not None: img_inter = ALLOWED_INTERPOLATIONS[transform_settings[0] ["interpolation"]] img_pad = ALLOWED_PADDINGS[transform_settings[0]["padding"]] expected_img_res = cv2.warpAffine(img, M, (W, H), flags=img_inter, borderMode=img_pad).reshape((H, W, 1)) expected_mask_res = cv2.warpAffine(mask, M, (W, H)) expected_kpts_res = np.array([[2, 0], [0, 0], [0, 2], [2, 2]]).reshape( (4, 2)) assert np.array_equal(expected_img_res, img_res) assert np.array_equal(expected_mask_res, mask_res) np.testing.assert_array_almost_equal(expected_kpts_res, kpts_res.data) assert label_res == 1
], } }, } }, ] } }, slc.Stream([ slc.Stream([slt.Pad(34), slt.Crop(32, "r"), slt.CutOut(2)]), slt.Pad(34), slt.Crop(32, "c"), slt.CutOut(4), slt.Projection(slc.Stream([slt.Rotate(30), slt.Scale(2)]), v_range=(0, 1e-3)), ]), ], ], ) def test_deserialize_from_dict_nested(serialized: dict, stream: slc.Stream): serialized_trfs = json.dumps(stream.to_dict()) serialized_from_deserialized = json.dumps( slu.from_dict(serialized).to_dict()) assert serialized_trfs == serialized_from_deserialized def test_stream_serializes_all_args_are_set():
def test_projection_empty_sampling_low_prob_trf(img_6x6_rgb): dc = slc.DataContainer(img_6x6_rgb, "I") trf = slt.Projection(affine_transforms=slc.Stream([slt.Rotate(p=0)]), p=1) trf.sample_transform(dc) assert np.array_equal(trf.state_dict["transform_matrix"], np.eye(3))
def test_rotate_range_conversion_from_number(angle): trf = slt.Rotate(angle_range=angle) assert trf.angle_range == (-angle, angle)
def test_rotate_range_none(): trf = slt.Rotate(None) assert trf.angle_range == (0, 0)
def test_fusion_rotate_360_flip_rotate_360(img_5x5): img = img_5x5 dc = slc.DataContainer((img, ), 'I') ppl = slc.Stream([ slc.Stream([ slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), ], optimize_stack=True), slt.Flip(p=1, axis=1), slc.Stream([ slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), slt.Rotate((45, 45), padding='z', p=1), ], optimize_stack=True) ]) img_res = ppl(dc, return_torch=False)[0][0] np.testing.assert_array_almost_equal( cv2.flip(img, 1).reshape(5, 5, 1), img_res)
def test_stream_with_zero_prob_transform(img, mask): dc = slc.DataContainer((img, mask, 1), "IML") stream = slc.Stream([slt.Rotate(p=0)]) res = stream(dc, return_torch=False) assert dc == res