          self._input_size = input_size
          self._output_sizes = [shape[1] for shape in output_shapes if shape[2] == 3]
          logger.debug("Output sizes: %s", self._output_sizes)
          # Warp args
          self._coverage_ratio = coverage_ratio
          self._scale = 5  # Normal random variable scale
  
          logger.debug("Initialized %s", self.__class__.__name__)
  
      def initialize(self, training_size):
          """ Initializes the caching of constants for use in various image augmentations.
 
</s> remove         # Transform and Warp args
        self._input_size = input_size
        self._output_sizes = [shape[1] for shape in output_shapes if shape[2] == 3]
        logger.debug("Output sizes: %s", self._output_sizes)
 </s> add  </s> remove     def initialize(self, training_size):
 </s> add     def _get_constants(self) -> AugConstants: </s> remove     def __init__(self, batchsize, is_display, input_size, output_shapes, coverage_ratio, config):
        logger.debug("Initializing %s: (batchsize: %s, is_display: %s, input_size: %s, "
                     "output_shapes: %s, coverage_ratio: %s, config: %s)",
                     self.__class__.__name__, batchsize, is_display, input_size, output_shapes,
                     coverage_ratio, config)

        self.initialized = False
        self.is_display = is_display

        # Set on first image load from initialize
        self._training_size = 0
        self._constants = None

 </s> add     def __init__(self,
                 batchsize: int,
                 processing_size: int,
                 config: "ConfigType") -> None:
        logger.debug("Initializing %s: (batchsize: %s, processing_size: %s, "
                     "config: %s)",
                     self.__class__.__name__, batchsize, processing_size, config)

        self._processing_size = processing_size </s> remove         The training image size is not known prior to loading the images from disk and commencing
        training, so it cannot be set in the :func:`__init__` method. When the first training batch
        is loaded this function should be called to initialize the class and perform various
        calculations based on this input size to cache certain constants for image augmentation
        calculations.
 </s> add         Returns
        -------
        dict
            Cached constants that are used for various augmentations
        """
        logger.debug("Initializing constants.")
        self._warp_scale = 5 / 256 * self._processing_size  # Normal random variable scale
        self._warp_lm_scale = 2 / 256 * self._processing_size  # Normal random variable scale
          self._input_size = input_size
          self._output_sizes = [shape[1] for shape in output_shapes if shape[2] == 3]
          logger.debug("Output sizes: %s", self._output_sizes)
          # Warp args
        self._warp_scale = 5 / 256 * self._processing_size  # Normal random variable scale
        self._warp_lm_scale = 2 / 256 * self._processing_size  # Normal random variable scale
        self._warp_scale = 5 / 256 * self._processing_size  # Normal random variable scale
        self._warp_lm_scale = 2 / 256 * self._processing_size  # Normal random variable scale
  
          logger.debug("Initialized %s", self.__class__.__name__)
  
      def initialize(self, training_size):
          """ Initializes the caching of constants for use in various image augmentations.
keep keep keep keep replace replace keep keep keep keep keep
 Data Augmentation update (#1263)

- lib.detected_face
    - Subclass Masks for Landmark based masks
    - Add training mask propery + methods to DetectedFace
  - lib.training_training
    - subclass TrainingDataGenerator for training and preview data
    - Split cache into own module
    - Reduce thread count to 1 to prevent image corruption + data re-use
    - Process on largest model input/output size rather than stored image size
    - Size and crop masks during caching stage
    - Implement ring buffer for data flow
    - Fix preview reload bug
  - augmentation
    - typing
    - switch color aug order
    - better initialization
    - Fix warp + landmark warp to correctly apply at different image scales
    - Slightly improved warp caching
    - Don't store whether image is_preview. Handle all data as training images implicitly
  - plugins.trainer: Typing and fixes to work with trainingdata refactor 
lib/training/augmentation.py