def test_random_adjust_brightness(self):
   preprocessor_text_proto = """
   random_adjust_brightness {
     max_delta: 0.15
   }
   """
   preprocessor_proto = preprocessor_pb2.PreprocessingStep()
   text_format.Merge(preprocessor_text_proto, preprocessor_proto)
   function, args = preprocessor_builder.build(preprocessor_proto)
   self.assertEqual(function, preprocessor.random_adjust_brightness)
   self.assert_dictionary_close(args, {
       'max_delta': 0.15
   })
 def test_random_rgb_to_gray(self):
   preprocessor_text_proto = """
   random_rgb_to_gray {
     probability: 0.15
   }
   """
   preprocessor_proto = preprocessor_pb2.PreprocessingStep()
   text_format.Merge(preprocessor_text_proto, preprocessor_proto)
   function, args = preprocessor_builder.build(preprocessor_proto)
   self.assertEqual(function, preprocessor.random_rgb_to_gray)
   self.assert_dictionary_close(args, {
       'probability': 0.15
   })
 def test_build_resize_image_random_method(self):
   preprocessor_text_proto = """
   resize_image_random_method {
     target_height: 384
     target_width: 384
   }
   """
   preprocessor_proto = preprocessor_pb2.PreprocessingStep()
   text_format.Merge(preprocessor_text_proto, preprocessor_proto)
   function, args = preprocessor_builder.build(preprocessor_proto)
   self.assertEqual(function, preprocessor.resize_image_random_method)
   self.assert_dictionary_close(args, {
       'target_size': [384, 384]
   })
 def test_random_pixel_value_scale(self):
   preprocessor_text_proto = """
   random_pixel_value_scale {
     minval: 0.85
     maxval: 1.25
   }
   """
   preprocessor_proto = preprocessor_pb2.PreprocessingStep()
   text_format.Merge(preprocessor_text_proto, preprocessor_proto)
   function, args = preprocessor_builder.build(preprocessor_proto)
   self.assertEqual(function, preprocessor.random_pixel_value_scale)
   self.assert_dictionary_close(args, {
       'minval': 0.85,
       'maxval': 1.25
   })
 def test_random_adjust_contrast(self):
   preprocessor_text_proto = """
   random_adjust_contrast {
     min_delta: 0.7
     max_delta: 1.3
   }
   """
   preprocessor_proto = preprocessor_pb2.PreprocessingStep()
   text_format.Merge(preprocessor_text_proto, preprocessor_proto)
   function, args = preprocessor_builder.build(preprocessor_proto)
   self.assertEqual(function, preprocessor.random_adjust_contrast)
   self.assert_dictionary_close(args, {
       'min_delta': 0.7,
       'max_delta': 1.3
   })
 def test_build_resize_image(self):
   preprocessor_text_proto = """
   resize_image {
     target_height: 384
     target_width: 384
     method: BICUBIC
   }
   """
   preprocessor_proto = preprocessor_pb2.PreprocessingStep()
   text_format.Merge(preprocessor_text_proto, preprocessor_proto)
   function, args = preprocessor_builder.build(preprocessor_proto)
   self.assertEqual(function, preprocessor.resize_image)
   self.assertEqual(args, {
       'target_size': [384, 384],
       'method': tf.image.ResizeMethod.BICUBIC
   })
 def test_normalize_image(self):
   preprocessor_text_proto = """
   normalize_image {
     original_minval: 0.0
     original_maxval: 255.0
     target_minval: 0.0
     target_maxval: 1.0
   }
   """
   preprocessor_proto = preprocessor_pb2.PreprocessingStep()
   text_format.Merge(preprocessor_text_proto, preprocessor_proto)
   function, args = preprocessor_builder.build(preprocessor_proto)
   self.assertEqual(function, preprocessor.normalize_image)
   self.assert_dictionary_close(args, {
       'original_minval': 0.0,
       'original_maxval': 255.0,
       'target_minval': 0.0,
       'target_maxval': 1.0
   })
  def test_string_filtering_2(self):
    preprocessor_text_proto = """
    string_filtering {
      lower_case: false
      include_charset {
        built_in_set: ALLCASES
      }
    }
    """
    preprocessor_proto = preprocessor_pb2.PreprocessingStep()
    text_format.Merge(preprocessor_text_proto, preprocessor_proto)
    function, args = preprocessor_builder.build(preprocessor_proto)
    self.assertEqual(function, preprocessor.string_filtering)
    self.assert_dictionary_close(args, {
        'lower_case': False,
        'include_charset': "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    })

    test_input_strings = [t.encode('utf-8') for t in ['abc', 'abcde', '!=ABC DE~']]
    expected_output_string = [t.encode('utf-8') for t in ['abc', 'abcde', 'ABCDE']]
    test_processed_strings = [function(t, **args) for t in test_input_strings]
    with self.test_session() as sess:
      outputs = sess.run(test_processed_strings)
      self.assertAllEqual(outputs, expected_output_string)
  def test_string_filtering(self):
    preprocessor_text_proto = """
    string_filtering {
      lower_case: true
      include_charset {
        text_string: "abc"
      }
    }
    """
    preprocessor_proto = preprocessor_pb2.PreprocessingStep()
    text_format.Merge(preprocessor_text_proto, preprocessor_proto)
    function, args = preprocessor_builder.build(preprocessor_proto)
    self.assertEqual(function, preprocessor.string_filtering)
    self.assert_dictionary_close(args, {
        'lower_case': True,
        'include_charset': "abc"
    })

    test_input_strings = [t.encode('utf-8') for t in ['abc', 'abcde', 'ABCDE']]
    expected_output_string = [t.encode('utf-8') for t in ['abc', 'abc', 'abc']]
    test_processed_strings = [function(t, **args) for t in test_input_strings]
    with self.test_session() as sess:
      outputs = sess.run(test_processed_strings)
      self.assertAllEqual(outputs, expected_output_string)