123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- # Copyright (c) OpenMMLab. All rights reserved.
- import copy
- import unittest
- from mmdet.datasets.transforms import (AutoAugment, AutoContrast, Brightness,
- Color, Contrast, Equalize, Invert,
- Posterize, RandAugment, Rotate,
- Sharpness, ShearX, ShearY, Solarize,
- SolarizeAdd, TranslateX, TranslateY)
- from mmdet.utils import register_all_modules
- from .utils import check_result_same, construct_toy_data
- register_all_modules()
- class TestAutoAugment(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',
- 'homography_matrix')
- self.results_mask = construct_toy_data(poly2mask=True)
- self.img_fill_val = (104, 116, 124)
- self.seg_ignore_label = 255
- def test_autoaugment(self):
- # test AutoAugment equipped with Shear
- policies = [[
- dict(type='ShearX', prob=1.0, level=3, reversal_prob=0.0),
- dict(type='ShearY', prob=1.0, level=7, reversal_prob=1.0)
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_shearx = ShearX(prob=1.0, level=3, reversal_prob=0.0)
- transform_sheary = ShearY(prob=1.0, level=7, reversal_prob=1.0)
- results_sheared = transform_sheary(
- transform_shearx(copy.deepcopy(self.results_mask)))
- check_result_same(results_sheared, results_auto, self.check_keys)
- # test AutoAugment equipped with Rotate
- policies = [[
- dict(type='Rotate', prob=1.0, level=10, reversal_prob=0.0),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_rotate = Rotate(prob=1.0, level=10, reversal_prob=0.0)
- results_rotated = transform_rotate(copy.deepcopy(self.results_mask))
- check_result_same(results_rotated, results_auto, self.check_keys)
- # test AutoAugment equipped with Translate
- policies = [[
- dict(
- type='TranslateX',
- prob=1.0,
- level=10,
- max_mag=1.0,
- reversal_prob=0.0),
- dict(
- type='TranslateY',
- prob=1.0,
- level=10,
- max_mag=1.0,
- reversal_prob=1.0)
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_translatex = TranslateX(
- prob=1.0, level=10, max_mag=1.0, reversal_prob=0.0)
- transform_translatey = TranslateY(
- prob=1.0, level=10, max_mag=1.0, reversal_prob=1.0)
- results_translated = transform_translatey(
- transform_translatex(copy.deepcopy(self.results_mask)))
- check_result_same(results_translated, results_auto, self.check_keys)
- # test AutoAugment equipped with Brightness
- policies = [[
- dict(type='Brightness', prob=1.0, level=3),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_brightness = Brightness(prob=1.0, level=3)
- results_brightness = transform_brightness(
- copy.deepcopy(self.results_mask))
- check_result_same(results_brightness, results_auto, self.check_keys)
- # test AutoAugment equipped with Color
- policies = [[
- dict(type='Color', prob=1.0, level=3),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_color = Color(prob=1.0, level=3)
- results_colored = transform_color(copy.deepcopy(self.results_mask))
- check_result_same(results_colored, results_auto, self.check_keys)
- # test AutoAugment equipped with Contrast
- policies = [[
- dict(type='Contrast', prob=1.0, level=3),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_contrast = Contrast(prob=1.0, level=3)
- results_contrasted = transform_contrast(
- copy.deepcopy(self.results_mask))
- check_result_same(results_contrasted, results_auto, self.check_keys)
- # test AutoAugment equipped with Sharpness
- policies = [[
- dict(type='Sharpness', prob=1.0, level=3),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_sharpness = Sharpness(prob=1.0, level=3)
- results_sharpness = transform_sharpness(
- copy.deepcopy(self.results_mask))
- check_result_same(results_sharpness, results_auto, self.check_keys)
- # test AutoAugment equipped with Solarize
- policies = [[
- dict(type='Solarize', prob=1.0, level=3),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_solarize = Solarize(prob=1.0, level=3)
- results_solarized = transform_solarize(
- copy.deepcopy(self.results_mask))
- check_result_same(results_solarized, results_auto, self.check_keys)
- # test AutoAugment equipped with SolarizeAdd
- policies = [[
- dict(type='SolarizeAdd', prob=1.0, level=3),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_solarizeadd = SolarizeAdd(prob=1.0, level=3)
- results_solarizeadded = transform_solarizeadd(
- copy.deepcopy(self.results_mask))
- check_result_same(results_solarizeadded, results_auto, self.check_keys)
- # test AutoAugment equipped with Posterize
- policies = [[
- dict(type='Posterize', prob=1.0, level=3),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_posterize = Posterize(prob=1.0, level=3)
- results_posterized = transform_posterize(
- copy.deepcopy(self.results_mask))
- check_result_same(results_posterized, results_auto, self.check_keys)
- # test AutoAugment equipped with Equalize
- policies = [[
- dict(type='Equalize', prob=1.0),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_equalize = Equalize(prob=1.0)
- results_equalized = transform_equalize(
- copy.deepcopy(self.results_mask))
- check_result_same(results_equalized, results_auto, self.check_keys)
- # test AutoAugment equipped with AutoContrast
- policies = [[
- dict(type='AutoContrast', prob=1.0),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_autocontrast = AutoContrast(prob=1.0)
- results_autocontrast = transform_autocontrast(
- copy.deepcopy(self.results_mask))
- check_result_same(results_autocontrast, results_auto, self.check_keys)
- # test AutoAugment equipped with Invert
- policies = [[
- dict(type='Invert', prob=1.0),
- ]]
- transform_auto = AutoAugment(policies=policies)
- results_auto = transform_auto(copy.deepcopy(self.results_mask))
- transform_invert = Invert(prob=1.0)
- results_inverted = transform_invert(copy.deepcopy(self.results_mask))
- check_result_same(results_inverted, results_auto, self.check_keys)
- # test AutoAugment equipped with default policies
- transform_auto = AutoAugment()
- transform_auto(copy.deepcopy(self.results_mask))
- def test_repr(self):
- policies = [[
- dict(type='Rotate', prob=1.0, level=10, reversal_prob=0.0),
- dict(type='Invert', prob=1.0),
- ]]
- transform = AutoAugment(policies=policies)
- self.assertEqual(
- repr(transform), ('AutoAugment('
- 'policies=[['
- "{'type': 'Rotate', 'prob': 1.0, "
- "'level': 10, 'reversal_prob': 0.0}, "
- "{'type': 'Invert', 'prob': 1.0}]], "
- 'prob=None)'))
- class TestRandAugment(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',
- 'homography_matrix')
- self.results_mask = construct_toy_data(poly2mask=True)
- self.img_fill_val = (104, 116, 124)
- self.seg_ignore_label = 255
- def test_randaugment(self):
- # test RandAugment equipped with Rotate
- aug_space = [[
- dict(type='Rotate', prob=1.0, level=10, reversal_prob=0.0)
- ]]
- transform_rand = RandAugment(aug_space=aug_space, aug_num=1)
- results_rand = transform_rand(copy.deepcopy(self.results_mask))
- transform_rotate = Rotate(prob=1.0, level=10, reversal_prob=0.0)
- results_rotated = transform_rotate(copy.deepcopy(self.results_mask))
- check_result_same(results_rotated, results_rand, self.check_keys)
- # test RandAugment equipped with default augmentation space
- transform_rand = RandAugment()
- transform_rand(copy.deepcopy(self.results_mask))
- def test_repr(self):
- aug_space = [
- [dict(type='Rotate')],
- [dict(type='Invert')],
- ]
- transform = RandAugment(aug_space=aug_space)
- self.assertEqual(
- repr(transform), ('RandAugment('
- 'aug_space=['
- "[{'type': 'Rotate'}], "
- "[{'type': 'Invert'}]], "
- 'aug_num=2, '
- 'prob=None)'))
|