          The :class:`_Feeder` for generating the time-lapse images.
      image_paths: dict
          The full paths to the training images for each side of the model
      """
      def __init__(self, model, coverage_ratio, image_count, feeder, image_paths):
          logger.debug("Initializing %s: model: %s, coverage_ratio: %s, image_count: %s, "
                       "feeder: '%s', image_paths: %s)", self.__class__.__name__, model,
                       coverage_ratio, image_count, feeder, len(image_paths))
          self._num_images = image_count
          self._samples = _Samples(model, coverage_ratio)
 
</s> remove     feeder: dict
        The :class:`_Feeder` for generating the time-lapse images.
 </s> add     feeder: :class:`_Feeder`
        The feeder for generating the time-lapse images. </s> remove     def __init__(self, model, coverage_ratio):
 </s> add     def __init__(self, model: "ModelBase", coverage_ratio: float) -> None: </s> remove     def __init__(self, images, model, batch_size, config):
 </s> add     def __init__(self,
                 images: Dict[Literal["a", "b"], List[str]],
                 model: 'ModelBase',
                 batch_size: int,
                 config: ConfigType) -> None: </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 
    Attributes
    ----------
    initialized: bool
        Flag to indicate whether :class:`ImageAugmentation` has been initialized with the training
        image size in order to cache certain augmentation operations (see :func:`initialize`)
    is_display: bool
        Flag to indicate whether these augmentations are for time-lapses/preview images (``True``)
        or standard training data (``False``)
 </s> add 
    def __init__(self,
                 model: "ModelBase",
                 coverage_ratio: float,
                 image_count: int,
                 feeder: _Feeder,
                 image_paths: Dict[Literal["a", "b"], List[str]]) -> None:
          The :class:`_Feeder` for generating the time-lapse images.
      image_paths: dict
          The full paths to the training images for each side of the model
      """
    def __init__(self,
                 model: "ModelBase",
                 coverage_ratio: float,
                 image_count: int,
                 feeder: _Feeder,
                 image_paths: Dict[Literal["a", "b"], List[str]]) -> None:
          logger.debug("Initializing %s: model: %s, coverage_ratio: %s, image_count: %s, "
                       "feeder: '%s', image_paths: %s)", self.__class__.__name__, model,
                       coverage_ratio, image_count, feeder, len(image_paths))
          self._num_images = image_count
          self._samples = _Samples(model, coverage_ratio)
keep keep keep keep 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 
plugins/train/trainer/_base.py