      Parameters
      ----------
      batchsize: int
          The number of images that will be fed through the augmentation functions at once.
      is_display: bool
          Whether the images being fed through will be used for Preview or Time-lapse. Disables
          the "warp" augmentation for these images.
      input_size: int
          The expected input size for the model. It is assumed that the input to the model is always
          a square image. This is the size, in pixels, of the `width` and the `height` of the input
          to the model.
      output_shapes: list
          A list of tuples defining the output shapes from the model, in the order that the outputs
          are returned. The tuples should be in (`height`, `width`, `channels`) format.
      coverage_ratio: float
          The ratio of the training image to be trained on. Dictates how much of the image will be
          cropped out. E.G: a coverage ratio of 0.625 will result in cropping a 160px box from a
          256px image (:math:`256 * 0.625 = 160`)
      config: dict
          The configuration `dict` generated from :file:`config.train.ini` containing the trainer
          plugin configuration options.
  
      Attributes
 
</s> remove     model_input_size: int
        The expected input size for the model. It is assumed that the input to the model is always
        a square image. This is the size, in pixels, of the `width` and the `height` of the input
        to the model.
    model_output_shapes: list
        A list of tuples defining the output shapes from the model, in the order that the outputs
        are returned. The tuples should be in (`height`, `width`, `channels`) format.
    coverage_ratio: float
        The ratio of the training image to be trained on. Dictates how much of the image will be
        cropped out. E.G: a coverage ratio of 0.625 will result in cropping a 160px box from a
        256px image (:math:`256 * 0.625 = 160`).
    color_order: ["rgb", "bgr"]
        The color order that the model expects as input
    augment_color: bool
        ``True`` if color is to be augmented, otherwise ``False``
    no_flip: bool
        ``True`` if the image shouldn't be randomly flipped as part of augmentation, otherwise
        ``False``
    no_warp: bool
        ``True`` if the image shouldn't be warped as part of augmentation, otherwise ``False``
    warp_to_landmarks: bool
        ``True`` if the random warp method should warp to similar landmarks from the other side,
        ``False`` if the standard random warp method should be used.
    face_cache: dict
        A thread safe dictionary containing a cache of information relating to all faces being
        trained on
 </s> add     model: :class:`~plugins.train.model.ModelBase`
        The model that this data generator is feeding </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  </s> remove         If the configuration options `eye_multiplier` and/or `mouth_multiplier` are greater than 1
        then these masks are applied to the final channels of the batch respectively.
 </s> add     This class is called from :mod:`plugins.train.trainer._base` and launches a background
    iterator that compiles sample preview data for feeding the model's predict function and for
    display.

    Parameters
    ----------
    model: :class:`~plugins.train.model.ModelBase`
        The model that this data generator is feeding
    config: dict
        The configuration `dict` generated from :file:`config.train.ini` containing the trainer
        plugin configuration options.
    side: {'a' or 'b'}
        The side of the model that this iterator is for.
    images: list
        A list of image paths that will be used to compile the final images.
    batch_size: int
        The batch size for this iterator. Images will be returned in :class:`numpy.ndarray`
        objects of this size from the iterator.
    """
    def _create_samples(self,
                        images: np.ndarray,
                        detected_faces: List[DetectedFace]) -> List[np.ndarray]:
        """ Compile the 'sample' images. These are the 100% coverage images which hold the model
        output in the preview window. </s> remove         The user selected training configuration options
 </s> add         The configuration `dict` generated from :file:`config.train.ini` containing the trainer
        plugin configuration options.
    side: {'a' or 'b'}
        The side of the model that this iterator is for.
    images: list
        A list of image paths that will be used to compile the final augmented data from.
    batch_size: int
        The batch size for this iterator. Images will be returned in :class:`numpy.ndarray`
        objects of this size from the iterator.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
      Parameters
      ----------
      batchsize: int
          The number of images that will be fed through the augmentation functions at once.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
    processing_size: int
        The largest input or output size of the model. This is the size that images are processed
        at.
      config: dict
          The configuration `dict` generated from :file:`config.train.ini` containing the trainer
          plugin configuration options.
  
      Attributes
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace 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