| | |
| | import copy |
| | import unittest |
| |
|
| | import numpy as np |
| |
|
| | from mmdet.datasets.transforms import (GeomTransform, Rotate, ShearX, ShearY, |
| | TranslateX, TranslateY) |
| | from mmdet.structures.bbox import HorizontalBoxes |
| | from mmdet.structures.mask import BitmapMasks, PolygonMasks |
| | from .utils import check_result_same, construct_toy_data |
| |
|
| |
|
| | class TestGeomTransform(unittest.TestCase): |
| |
|
| | def setUp(self): |
| | """Setup the model and optimizer which are used in every test method. |
| | |
| | TestCase calls functions in this order: setUp() -> testMethod() -> |
| | tearDown() -> cleanUp() |
| | """ |
| | self.check_keys = ('img', 'gt_bboxes', 'gt_bboxes_labels', 'gt_masks', |
| | 'gt_ignore_flags', 'gt_seg_map') |
| | self.results_mask = construct_toy_data(poly2mask=True) |
| | self.img_border_value = (104, 116, 124) |
| | self.seg_ignore_label = 255 |
| |
|
| | def test_geomtransform(self): |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = GeomTransform( |
| | prob=-0.5, level=1, min_mag=0.0, max_mag=1.0) |
| |
|
| | |
| | with self.assertRaises(AssertionError): |
| | transform = GeomTransform( |
| | prob=0.5, level=-1, min_mag=0.0, max_mag=1.0) |
| |
|
| | |
| | with self.assertRaises(AssertionError): |
| | transform = ShearX(prob=0.5, level=2, min_mag=1.0, max_mag=0.0) |
| |
|
| | |
| | with self.assertRaises(AssertionError): |
| | transform = GeomTransform( |
| | prob=0.5, |
| | level=1, |
| | min_mag=0.0, |
| | max_mag=1.0, |
| | img_border_value=(128, 128, 128, 128)) |
| |
|
| | |
| | with self.assertRaises(ValueError): |
| | transform = GeomTransform( |
| | prob=0.5, |
| | level=1, |
| | min_mag=0.0, |
| | max_mag=1.0, |
| | img_border_value=[128, 128, 128]) |
| |
|
| | |
| | with self.assertRaises(AssertionError): |
| | transform = GeomTransform( |
| | prob=0.5, |
| | level=1, |
| | min_mag=0.0, |
| | max_mag=1.0, |
| | img_border_value=(128, -1, 256)) |
| |
|
| | |
| | transform = GeomTransform( |
| | prob=0., |
| | level=10, |
| | min_mag=0.0, |
| | max_mag=1.0, |
| | img_border_value=self.img_border_value) |
| | results_wo_aug = transform(copy.deepcopy(self.results_mask)) |
| | check_result_same(self.results_mask, results_wo_aug, self.check_keys) |
| |
|
| | def test_repr(self): |
| | transform = GeomTransform( |
| | prob=0.5, |
| | level=5, |
| | min_mag=0.0, |
| | max_mag=1.0, |
| | ) |
| | self.assertEqual( |
| | repr(transform), ('GeomTransform(prob=0.5, ' |
| | 'level=5, ' |
| | 'min_mag=0.0, ' |
| | 'max_mag=1.0, ' |
| | 'reversal_prob=0.5, ' |
| | 'img_border_value=(128.0, 128.0, 128.0), ' |
| | 'mask_border_value=0, ' |
| | 'seg_ignore_label=255, ' |
| | 'interpolation=bilinear)')) |
| |
|
| |
|
| | class TestShearX(unittest.TestCase): |
| |
|
| | def setUp(self): |
| | """Setup the model and optimizer which are used in every test method. |
| | |
| | TestCase calls functions in this order: setUp() -> testMethod() -> |
| | tearDown() -> cleanUp() |
| | """ |
| | self.check_keys = ('img', 'gt_bboxes', 'gt_bboxes_labels', 'gt_masks', |
| | 'gt_ignore_flags', 'gt_seg_map') |
| | self.results_mask = construct_toy_data(poly2mask=True) |
| | self.results_poly = construct_toy_data(poly2mask=False) |
| | self.results_mask_boxtype = construct_toy_data( |
| | poly2mask=True, use_box_type=True) |
| | self.img_border_value = (104, 116, 124) |
| | self.seg_ignore_label = 255 |
| |
|
| | def test_shearx(self): |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = ShearX(prob=0.5, level=2, min_mag=-30.) |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = ShearX(prob=0.5, level=2, max_mag=100.) |
| |
|
| | |
| | transform = ShearX( |
| | prob=1.0, |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label, |
| | ) |
| | results_wo_shearx = transform(copy.deepcopy(self.results_mask)) |
| | check_result_same(self.results_mask, results_wo_shearx, |
| | self.check_keys) |
| |
|
| | |
| | transform = ShearX( |
| | prob=1.0, |
| | level=10, |
| | max_mag=45., |
| | reversal_prob=1.0, |
| | img_border_value=self.img_border_value) |
| | results_sheared = transform(copy.deepcopy(self.results_mask)) |
| | results_gt = copy.deepcopy(self.results_mask) |
| | img_gt = np.array([[1, 2, 3, 4], [0, 5, 6, 7], [0, 0, 9, 10]], |
| | dtype=np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | img_gt[1, 0, :] = np.array(self.img_border_value) |
| | img_gt[2, 0, :] = np.array(self.img_border_value) |
| | img_gt[2, 1, :] = np.array(self.img_border_value) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = np.array([[1, 0, 4, 2]], dtype=np.float32) |
| | results_gt['gt_bboxes_labels'] = np.array([13], dtype=np.int64) |
| | gt_masks = np.array([[0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 13, 255, 255], [255, 255, 13, 13], [255, 255, 255, 13]], |
| | dtype=self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_sheared, self.check_keys) |
| |
|
| | |
| | results_sheared = transform(copy.deepcopy(self.results_poly)) |
| | gt_masks = [[np.array([3, 2, 1, 0, 3, 1], dtype=np.float32)]] |
| | results_gt['gt_masks'] = PolygonMasks(gt_masks, 3, 4) |
| | check_result_same(results_gt, results_sheared, self.check_keys) |
| |
|
| | def test_shearx_use_box_type(self): |
| | |
| | transform = ShearX( |
| | prob=1.0, |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label, |
| | ) |
| | results_wo_shearx = transform(copy.deepcopy(self.results_mask_boxtype)) |
| | check_result_same(self.results_mask_boxtype, results_wo_shearx, |
| | self.check_keys) |
| |
|
| | |
| | transform = ShearX( |
| | prob=1.0, |
| | level=10, |
| | max_mag=45., |
| | reversal_prob=1.0, |
| | img_border_value=self.img_border_value) |
| | results_sheared = transform(copy.deepcopy(self.results_mask_boxtype)) |
| | results_gt = copy.deepcopy(self.results_mask_boxtype) |
| | img_gt = np.array([[1, 2, 3, 4], [0, 5, 6, 7], [0, 0, 9, 10]], |
| | dtype=np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | img_gt[1, 0, :] = np.array(self.img_border_value) |
| | img_gt[2, 0, :] = np.array(self.img_border_value) |
| | img_gt[2, 1, :] = np.array(self.img_border_value) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = HorizontalBoxes( |
| | np.array([[1, 0, 4, 2]], dtype=np.float32)) |
| | results_gt['gt_bboxes_labels'] = np.array([13], dtype=np.int64) |
| | gt_masks = np.array([[0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 1]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 13, 255, 255], [255, 255, 13, 13], [255, 255, 255, 13]], |
| | dtype=self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_sheared, self.check_keys) |
| |
|
| | def test_repr(self): |
| | transform = ShearX(prob=0.5, level=10) |
| | self.assertEqual( |
| | repr(transform), ('ShearX(prob=0.5, ' |
| | 'level=10, ' |
| | 'min_mag=0.0, ' |
| | 'max_mag=30.0, ' |
| | 'reversal_prob=0.5, ' |
| | 'img_border_value=(128.0, 128.0, 128.0), ' |
| | 'mask_border_value=0, ' |
| | 'seg_ignore_label=255, ' |
| | 'interpolation=bilinear)')) |
| |
|
| |
|
| | class TestShearY(unittest.TestCase): |
| |
|
| | def setUp(self): |
| | """Setup the model and optimizer which are used in every test method. |
| | |
| | TestCase calls functions in this order: setUp() -> testMethod() -> |
| | tearDown() -> cleanUp() |
| | """ |
| | self.check_keys = ('img', 'gt_bboxes', 'gt_bboxes_labels', 'gt_masks', |
| | 'gt_ignore_flags', 'gt_seg_map') |
| | self.results_mask = construct_toy_data(poly2mask=True) |
| | self.results_poly = construct_toy_data(poly2mask=False) |
| | self.results_mask_boxtype = construct_toy_data( |
| | poly2mask=True, use_box_type=True) |
| | self.img_border_value = (104, 116, 124) |
| | self.seg_ignore_label = 255 |
| |
|
| | def test_sheary(self): |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = ShearY(prob=0.5, level=2, min_mag=-30.) |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = ShearY(prob=0.5, level=2, max_mag=100.) |
| |
|
| | |
| | transform = ShearY( |
| | prob=1.0, |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label, |
| | ) |
| | results_wo_sheary = transform(copy.deepcopy(self.results_mask)) |
| | check_result_same(self.results_mask, results_wo_sheary, |
| | self.check_keys) |
| |
|
| | |
| | transform = ShearY(prob=1., level=10, max_mag=45., reversal_prob=0.) |
| | results_sheared = transform(copy.deepcopy(self.results_mask)) |
| | results_gt = copy.deepcopy(self.results_mask) |
| | img_gt = np.array( |
| | [[1, 6, 11, 128], [5, 10, 128, 128], [9, 128, 128, 128]], |
| | dtype=np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = np.array([[1, 0, 2, 1]], dtype=np.float32) |
| | results_gt['gt_bboxes_labels'] = np.array([13], dtype=np.int64) |
| | gt_masks = np.array([[0, 1, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 13, 255, 255], [255, 13, 255, 255], [255, 255, 255, 255]], |
| | dtype=self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_sheared, self.check_keys) |
| |
|
| | |
| | results_sheared = transform(copy.deepcopy(self.results_poly)) |
| | gt_masks = [[np.array([1, 1, 1, 0, 2, 0], dtype=np.float32)]] |
| | results_gt['gt_masks'] = PolygonMasks(gt_masks, 3, 4) |
| | check_result_same(results_gt, results_sheared, self.check_keys) |
| |
|
| | def test_sheary_use_box_type(self): |
| | |
| | transform = ShearY( |
| | prob=1.0, |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label, |
| | ) |
| | results_wo_sheary = transform(copy.deepcopy(self.results_mask_boxtype)) |
| | check_result_same(self.results_mask_boxtype, results_wo_sheary, |
| | self.check_keys) |
| |
|
| | |
| | transform = ShearY(prob=1., level=10, max_mag=45., reversal_prob=0.) |
| | results_sheared = transform(copy.deepcopy(self.results_mask_boxtype)) |
| | results_gt = copy.deepcopy(self.results_mask_boxtype) |
| | img_gt = np.array( |
| | [[1, 6, 11, 128], [5, 10, 128, 128], [9, 128, 128, 128]], |
| | dtype=np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = HorizontalBoxes( |
| | np.array([[1, 0, 2, 1]], dtype=np.float32)) |
| | results_gt['gt_bboxes_labels'] = np.array([13], dtype=np.int64) |
| | gt_masks = np.array([[0, 1, 0, 0], [0, 1, 0, 0], [0, 0, 0, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 13, 255, 255], [255, 13, 255, 255], [255, 255, 255, 255]], |
| | dtype=self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_sheared, self.check_keys) |
| |
|
| | def test_repr(self): |
| | transform = ShearY(prob=0.5, level=10) |
| | self.assertEqual( |
| | repr(transform), ('ShearY(prob=0.5, ' |
| | 'level=10, ' |
| | 'min_mag=0.0, ' |
| | 'max_mag=30.0, ' |
| | 'reversal_prob=0.5, ' |
| | 'img_border_value=(128.0, 128.0, 128.0), ' |
| | 'mask_border_value=0, ' |
| | 'seg_ignore_label=255, ' |
| | 'interpolation=bilinear)')) |
| |
|
| |
|
| | class TestRotate(unittest.TestCase): |
| |
|
| | def setUp(self): |
| | """Setup the model and optimizer which are used in every test method. |
| | |
| | TestCase calls functions in this order: setUp() -> testMethod() -> |
| | tearDown() -> cleanUp() |
| | """ |
| | self.check_keys = ('img', 'gt_bboxes', 'gt_bboxes_labels', 'gt_masks', |
| | 'gt_ignore_flags', 'gt_seg_map') |
| | self.results_mask = construct_toy_data(poly2mask=True) |
| | self.results_poly = construct_toy_data(poly2mask=False) |
| | self.results_mask_boxtype = construct_toy_data( |
| | poly2mask=True, use_box_type=True) |
| | self.img_border_value = (104, 116, 124) |
| | self.seg_ignore_label = 255 |
| |
|
| | def test_rotate(self): |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = ShearY(prob=0.5, level=2, min_mag=-90.0) |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = ShearY(prob=0.5, level=2, max_mag=270.0) |
| |
|
| | |
| | transform = Rotate( |
| | prob=1., |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label, |
| | ) |
| | results_wo_rotate = transform(copy.deepcopy(self.results_mask)) |
| | check_result_same(self.results_mask, results_wo_rotate, |
| | self.check_keys) |
| |
|
| | |
| | transform = Rotate( |
| | prob=1., |
| | level=10, |
| | max_mag=90.0, |
| | |
| | reversal_prob=1., |
| | ) |
| | results_rotated = transform(copy.deepcopy(self.results_mask)) |
| | |
| | |
| | img_gt = np.array([[69, 8, 4, 65], [69, 9, 5, 65], |
| | [70, 10, 6, 66]]).astype(np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | results_gt = copy.deepcopy(self.results_mask) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = np.array([[0.5, 0.5, 2.5, 1.5]], |
| | dtype=np.float32) |
| | gt_masks = np.array([[0, 1, 1, 0], [0, 1, 1, 0], [0, 0, 0, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 13, 13, 13], [255, 255, 13, 255], |
| | [255, 255, 255, |
| | 255]]).astype(self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_rotated, self.check_keys) |
| |
|
| | |
| | results_rotated = transform(copy.deepcopy(self.results_poly)) |
| | gt_masks = [[np.array([0, 1, 0, 1, 0, 2], dtype=np.float)]] |
| | results_gt['gt_masks'] = PolygonMasks(gt_masks, 3, 4) |
| | check_result_same(results_gt, results_rotated, self.check_keys) |
| |
|
| | |
| | transform = Rotate( |
| | prob=1.0, |
| | level=10, |
| | max_mag=90.0, |
| | |
| | reversal_prob=0.0, |
| | ) |
| | results_rotated = transform(copy.deepcopy(self.results_mask)) |
| | |
| | |
| | img_gt = np.array([[66, 6, 10, 70], [65, 5, 9, 69], |
| | [65, 4, 8, 69]]).astype(np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | results_gt = copy.deepcopy(self.results_mask) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = np.array([[0.5, 0.5, 2.5, 1.5]], |
| | dtype=np.float32) |
| | gt_masks = np.array([[0, 0, 0, 0], [0, 1, 1, 0], [0, 1, 1, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 255, 255, 255], [255, 13, 255, 255], |
| | [13, 13, 13, 255]]).astype(self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_rotated, self.check_keys) |
| |
|
| | |
| | results_rotated = transform(copy.deepcopy(self.results_poly)) |
| | gt_masks = [[np.array([2, 0, 0, 0, 1, 0], dtype=np.float)]] |
| | results_gt['gt_masks'] = PolygonMasks(gt_masks, 3, 4) |
| | check_result_same(results_gt, results_rotated, self.check_keys) |
| |
|
| | def test_rotate_use_box_type(self): |
| | |
| | transform = Rotate( |
| | prob=1., |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label, |
| | ) |
| | results_wo_rotate = transform(copy.deepcopy(self.results_mask_boxtype)) |
| | check_result_same(self.results_mask_boxtype, results_wo_rotate, |
| | self.check_keys) |
| |
|
| | |
| | transform = Rotate( |
| | prob=1., |
| | level=10, |
| | max_mag=90.0, |
| | |
| | reversal_prob=1., |
| | ) |
| | results_rotated = transform(copy.deepcopy(self.results_mask_boxtype)) |
| | |
| | |
| | img_gt = np.array([[69, 8, 4, 65], [69, 9, 5, 65], |
| | [70, 10, 6, 66]]).astype(np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | results_gt = copy.deepcopy(self.results_mask_boxtype) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = HorizontalBoxes( |
| | np.array([[0.5, 0.5, 2.5, 1.5]], dtype=np.float32)) |
| | gt_masks = np.array([[0, 1, 1, 0], [0, 1, 1, 0], [0, 0, 0, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 13, 13, 13], [255, 255, 13, 255], |
| | [255, 255, 255, |
| | 255]]).astype(self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_rotated, self.check_keys) |
| |
|
| | |
| | transform = Rotate( |
| | prob=1.0, |
| | level=10, |
| | max_mag=90.0, |
| | |
| | reversal_prob=0.0, |
| | ) |
| | results_rotated = transform(copy.deepcopy(self.results_mask_boxtype)) |
| | |
| | |
| | img_gt = np.array([[66, 6, 10, 70], [65, 5, 9, 69], |
| | [65, 4, 8, 69]]).astype(np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | results_gt = copy.deepcopy(self.results_mask_boxtype) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = HorizontalBoxes( |
| | np.array([[0.5, 0.5, 2.5, 1.5]], dtype=np.float32)) |
| | gt_masks = np.array([[0, 0, 0, 0], [0, 1, 1, 0], [0, 1, 1, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 255, 255, 255], [255, 13, 255, 255], |
| | [13, 13, 13, 255]]).astype(self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_rotated, self.check_keys) |
| |
|
| | def test_repr(self): |
| | transform = Rotate(prob=0.5, level=5) |
| | self.assertEqual( |
| | repr(transform), ('Rotate(prob=0.5, ' |
| | 'level=5, ' |
| | 'min_mag=0.0, ' |
| | 'max_mag=30.0, ' |
| | 'reversal_prob=0.5, ' |
| | 'img_border_value=(128.0, 128.0, 128.0), ' |
| | 'mask_border_value=0, ' |
| | 'seg_ignore_label=255, ' |
| | 'interpolation=bilinear)')) |
| |
|
| |
|
| | class TestTranslateX(unittest.TestCase): |
| |
|
| | def setUp(self): |
| | """Setup the model and optimizer which are used in every test method. |
| | |
| | TestCase calls functions in this order: setUp() -> testMethod() -> |
| | tearDown() -> cleanUp() |
| | """ |
| | self.check_keys = ('img', 'gt_bboxes', 'gt_bboxes_labels', 'gt_masks', |
| | 'gt_ignore_flags', 'gt_seg_map') |
| | self.results_mask = construct_toy_data(poly2mask=True) |
| | self.results_poly = construct_toy_data(poly2mask=False) |
| | self.results_mask_boxtype = construct_toy_data( |
| | poly2mask=True, use_box_type=True) |
| | self.img_border_value = (104, 116, 124) |
| | self.seg_ignore_label = 255 |
| |
|
| | def test_translatex(self): |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = TranslateX(prob=0.5, level=2, min_mag=-1.) |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = TranslateX(prob=0.5, level=2, max_mag=1.1) |
| |
|
| | |
| | transform = TranslateX( |
| | prob=1.0, |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label) |
| | results_wo_translatex = transform(copy.deepcopy(self.results_mask)) |
| | check_result_same(self.results_mask, results_wo_translatex, |
| | self.check_keys) |
| |
|
| | |
| | transform = TranslateX( |
| | prob=1.0, |
| | level=10, |
| | max_mag=0.3, |
| | reversal_prob=0.0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label) |
| | results_translated = transform(copy.deepcopy(self.results_mask)) |
| | img_gt = np.array([[2, 3, 4, 0], [6, 7, 8, 0], [10, 11, 12, |
| | 0]]).astype(np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | img_gt[:, 3, :] = np.array(self.img_border_value) |
| | results_gt = copy.deepcopy(self.results_mask) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = np.array([[0, 0, 1, 2]], dtype=np.float32) |
| | gt_masks = np.array([[1, 0, 0, 0], [1, 1, 0, 0], [1, 0, 0, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[13, 255, 255, 255], [13, 13, 255, 255], |
| | [13, 255, 255, |
| | 255]]).astype(self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_translated, self.check_keys) |
| |
|
| | |
| | results_translated = transform(copy.deepcopy(self.results_poly)) |
| | gt_masks = [[np.array([0, 2, 0, 0, 1, 1], dtype=np.float32)]] |
| | results_gt['gt_masks'] = PolygonMasks(gt_masks, 3, 4) |
| | check_result_same(results_gt, results_translated, self.check_keys) |
| |
|
| | def test_translatex_use_box_type(self): |
| | |
| | transform = TranslateX( |
| | prob=1.0, |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label) |
| | results_wo_translatex = transform( |
| | copy.deepcopy(self.results_mask_boxtype)) |
| | check_result_same(self.results_mask_boxtype, results_wo_translatex, |
| | self.check_keys) |
| |
|
| | |
| | transform = TranslateX( |
| | prob=1.0, |
| | level=10, |
| | max_mag=0.3, |
| | reversal_prob=0.0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label) |
| | results_translated = transform( |
| | copy.deepcopy(self.results_mask_boxtype)) |
| | img_gt = np.array([[2, 3, 4, 0], [6, 7, 8, 0], [10, 11, 12, |
| | 0]]).astype(np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | img_gt[:, 3, :] = np.array(self.img_border_value) |
| | results_gt = copy.deepcopy(self.results_mask) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = HorizontalBoxes( |
| | np.array([[0, 0, 1, 2]], dtype=np.float32)) |
| | gt_masks = np.array([[1, 0, 0, 0], [1, 1, 0, 0], [1, 0, 0, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[13, 255, 255, 255], [13, 13, 255, 255], |
| | [13, 255, 255, |
| | 255]]).astype(self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_translated, self.check_keys) |
| |
|
| | def test_repr(self): |
| | transform = TranslateX(prob=0.5, level=5) |
| | self.assertEqual( |
| | repr(transform), ('TranslateX(prob=0.5, ' |
| | 'level=5, ' |
| | 'min_mag=0.0, ' |
| | 'max_mag=0.1, ' |
| | 'reversal_prob=0.5, ' |
| | 'img_border_value=(128.0, 128.0, 128.0), ' |
| | 'mask_border_value=0, ' |
| | 'seg_ignore_label=255, ' |
| | 'interpolation=bilinear)')) |
| |
|
| |
|
| | class TestTranslateY(unittest.TestCase): |
| |
|
| | def setUp(self): |
| | """Setup the model and optimizer which are used in every test method. |
| | |
| | TestCase calls functions in this order: setUp() -> testMethod() -> |
| | tearDown() -> cleanUp() |
| | """ |
| | self.check_keys = ('img', 'gt_bboxes', 'gt_bboxes_labels', 'gt_masks', |
| | 'gt_ignore_flags', 'gt_seg_map') |
| | self.results_mask = construct_toy_data(poly2mask=True) |
| | self.results_poly = construct_toy_data(poly2mask=False) |
| | self.results_mask_boxtype = construct_toy_data( |
| | poly2mask=True, use_box_type=True) |
| | self.img_border_value = (104, 116, 124) |
| | self.seg_ignore_label = 255 |
| |
|
| | def test_translatey(self): |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = TranslateY(prob=0.5, level=2, min_mag=-1.0) |
| | |
| | with self.assertRaises(AssertionError): |
| | transform = TranslateY(prob=0.5, level=2, max_mag=1.1) |
| |
|
| | |
| | transform = TranslateY( |
| | prob=1.0, |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label) |
| | results_wo_translatey = transform(copy.deepcopy(self.results_mask)) |
| | check_result_same(self.results_mask, results_wo_translatey, |
| | self.check_keys) |
| |
|
| | |
| | transform = TranslateY( |
| | prob=1.0, |
| | level=10, |
| | max_mag=0.4, |
| | reversal_prob=0.0, |
| | seg_ignore_label=self.seg_ignore_label) |
| |
|
| | results_translated = transform(copy.deepcopy(self.results_mask)) |
| | img_gt = np.array([[5, 6, 7, 8], [9, 10, 11, 12], |
| | [128, 128, 128, 128]]).astype(np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | results_gt = copy.deepcopy(self.results_mask) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = np.array([[1, 0, 2, 1]], dtype=np.float32) |
| | gt_masks = np.array([[0, 1, 1, 0], [0, 1, 0, 0], [0, 0, 0, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 13, 13, 255], [255, 13, 255, 255], |
| | [255, 255, 255, |
| | 255]]).astype(self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_translated, self.check_keys) |
| |
|
| | |
| | results_translated = transform(copy.deepcopy(self.results_poly)) |
| | gt_masks = [[np.array([1, 1, 1, 0, 2, 0], dtype=np.float32)]] |
| | results_gt['gt_masks'] = PolygonMasks(gt_masks, 3, 4) |
| | check_result_same(results_gt, results_translated, self.check_keys) |
| |
|
| | def test_translatey_use_box_type(self): |
| | |
| | transform = TranslateY( |
| | prob=1.0, |
| | level=0, |
| | img_border_value=self.img_border_value, |
| | seg_ignore_label=self.seg_ignore_label) |
| | results_wo_translatey = transform( |
| | copy.deepcopy(self.results_mask_boxtype)) |
| | check_result_same(self.results_mask_boxtype, results_wo_translatey, |
| | self.check_keys) |
| |
|
| | |
| | transform = TranslateY( |
| | prob=1.0, |
| | level=10, |
| | max_mag=0.4, |
| | reversal_prob=0.0, |
| | seg_ignore_label=self.seg_ignore_label) |
| |
|
| | results_translated = transform( |
| | copy.deepcopy(self.results_mask_boxtype)) |
| | img_gt = np.array([[5, 6, 7, 8], [9, 10, 11, 12], |
| | [128, 128, 128, 128]]).astype(np.uint8) |
| | img_gt = np.stack([img_gt, img_gt, img_gt], axis=-1) |
| | results_gt = copy.deepcopy(self.results_mask_boxtype) |
| | results_gt['img'] = img_gt |
| | results_gt['gt_bboxes'] = HorizontalBoxes( |
| | np.array([[1, 0, 2, 1]], dtype=np.float32)) |
| | gt_masks = np.array([[0, 1, 1, 0], [0, 1, 0, 0], [0, 0, 0, 0]], |
| | dtype=np.uint8)[None, :, :] |
| | results_gt['gt_masks'] = BitmapMasks(gt_masks, 3, 4) |
| | results_gt['gt_ignore_flags'] = np.array(np.array([1], dtype=bool)) |
| | results_gt['gt_seg_map'] = np.array( |
| | [[255, 13, 13, 255], [255, 13, 255, 255], |
| | [255, 255, 255, |
| | 255]]).astype(self.results_mask['gt_seg_map'].dtype) |
| | check_result_same(results_gt, results_translated, self.check_keys) |
| |
|
| | def test_repr(self): |
| | transform = TranslateX(prob=0.5, level=5) |
| | self.assertEqual( |
| | repr(transform), ('TranslateX(prob=0.5, ' |
| | 'level=5, ' |
| | 'min_mag=0.0, ' |
| | 'max_mag=0.1, ' |
| | 'reversal_prob=0.5, ' |
| | 'img_border_value=(128.0, 128.0, 128.0), ' |
| | 'mask_border_value=0, ' |
| | 'seg_ignore_label=255, ' |
| | 'interpolation=bilinear)')) |
| |
|