Skip to content

Commit

Permalink
Added parameterized tests to RRC (keras-team#550)
Browse files Browse the repository at this point in the history
* Added parameterized tests

* Added parameterized tests for aspect_ratio_factor and crop_area_factor

* Formatted

* Formatted

* Minor changes
  • Loading branch information
AdityaKane2001 committed Jun 30, 2022
1 parent 7bf68cb commit 92b4e16
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 2 deletions.
23 changes: 22 additions & 1 deletion keras_cv/layers/preprocessing/random_resized_crop.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import tensorflow as tf

from keras_cv import core
from keras_cv.layers.preprocessing.base_image_augmentation_layer import (
BaseImageAugmentationLayer,
)
Expand Down Expand Up @@ -164,10 +165,30 @@ def _check_class_arguments(
or isinstance(target_size, int)
):
raise ValueError(
"`target_size` must be tuple of two integers."
"`target_size` must be tuple of two integers. "
f"Received target_size={target_size}"
)

if (
not isinstance(crop_area_factor, (tuple, list, core.FactorSampler))
or isinstance(crop_area_factor, float)
or isinstance(crop_area_factor, int)
):
raise ValueError(
"`crop_area_factor` must be tuple of two positive floats less than or equal to 1 or keras_cv.core.FactorSampler instance. "
f"Received crop_area_factor={crop_area_factor}"
)

if (
not isinstance(aspect_ratio_factor, (tuple, list, core.FactorSampler))
or isinstance(aspect_ratio_factor, float)
or isinstance(aspect_ratio_factor, int)
):
raise ValueError(
"`aspect_ratio_factor` must be tuple of two positive floats or keras_cv.core.FactorSampler instance. "
f"Received aspect_ratio_factor={aspect_ratio_factor}"
)

def get_config(self):
config = super().get_config()
config.update(
Expand Down
54 changes: 53 additions & 1 deletion keras_cv/layers/preprocessing/random_resized_crop_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import tensorflow as tf
from absl.testing import parameterized

from keras_cv.layers import preprocessing


class RandomResizedCropTest(tf.test.TestCase):
class RandomResizedCropTest(tf.test.TestCase, parameterized.TestCase):
height, width = 300, 300
batch_size = 4
target_size = (224, 224)
Expand Down Expand Up @@ -70,3 +71,54 @@ def test_preserves_image(self):
output = layer(image, training=False)

self.assertAllClose(output, input_resized)

@parameterized.named_parameters(
("Not tuple or list", dict()),
("Length not equal to 2", [1, 2, 3]),
("Members not int", (2.3, 4.5)),
("Single integer", 5),
)
def test_target_size_errors(self, target_size):
with self.assertRaisesRegex(
ValueError,
"`target_size` must be tuple of two integers. Received target_size=(.*)",
):
_ = preprocessing.RandomResizedCrop(
target_size=target_size,
aspect_ratio_factor=(3 / 4, 4 / 3),
crop_area_factor=(0.8, 1.0),
)

@parameterized.named_parameters(
("Not tuple or list", dict()),
("Single integer", 5),
("Single float", 5.0),
)
def test_aspect_ratio_factor_errors(self, aspect_ratio_factor):
with self.assertRaisesRegex(
ValueError,
"`aspect_ratio_factor` must be tuple of two positive floats or keras_cv.core.FactorSampler instance. "
"Received aspect_ratio_factor=(.*)",
):
_ = preprocessing.RandomResizedCrop(
target_size=(224, 224),
aspect_ratio_factor=aspect_ratio_factor,
crop_area_factor=(0.8, 1.0),
)

@parameterized.named_parameters(
("Not tuple or list", dict()),
("Single integer", 5),
("Single float", 5.0),
)
def test_crop_area_factor_errors(self, crop_area_factor):
with self.assertRaisesRegex(
ValueError,
"`crop_area_factor` must be tuple of two positive floats less than or equal to 1 or keras_cv.core.FactorSampler instance. "
"Received crop_area_factor=(.*)",
):
_ = preprocessing.RandomResizedCrop(
target_size=(224, 224),
aspect_ratio_factor=(3 / 4, 4 / 3),
crop_area_factor=crop_area_factor,
)

0 comments on commit 92b4e16

Please sign in to comment.