|
|
|
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): |
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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): |
|
|
|
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) |
|
|
|
|
|
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)')) |
|
|