Esempio n. 1
0
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)
Esempio n. 2
0
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
Esempio n. 3
0
                                        ],
                                    }
                                },
                            }
                        },
                    ]
                }
            },
            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():
Esempio n. 4
0
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))
Esempio n. 5
0
def test_rotate_range_conversion_from_number(angle):
    trf = slt.Rotate(angle_range=angle)
    assert trf.angle_range == (-angle, angle)
Esempio n. 6
0
def test_rotate_range_none():
    trf = slt.Rotate(None)
    assert trf.angle_range == (0, 0)
Esempio n. 7
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)
Esempio n. 8
0
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