          data.
  
          Parameters
          ----------
          saver: lib.images.ImagesSaver
              The background saver for saving the image
          extract_media: :class:`~plugins.extract.pipeline.ExtractMedia`
              The output from :class:`~plugins.extract.Pipeline.Extractor`
          """
          logger.trace("Outputting faces for %s", extract_media.filename)
          final_faces = []
 
</s> remove         logger.trace("Outputting faces for %s", extract_media.filename)
 </s> add         logger.trace("Outputting faces for %s", extract_media.filename)  # type: ignore </s> remove     def _output_faces(self, saver: ImagesSaver, extract_media: ExtractMedia) -> None:
 </s> add     def _output_faces(self, saver: Optional[ImagesSaver], extract_media: ExtractMedia) -> None: </s> remove         model_inputs = []
        model_targets = []
 </s> add         model_inputs: List[List[np.ndarray]] = []
        model_targets: List[List[np.ndarray]] = [] </s> remove     def _overlay_foreground(cls, backgrounds, foregrounds):
 </s> add     def _overlay_foreground(cls, backgrounds: np.ndarray, foregrounds: np.ndarray) -> np.ndarray: </s> remove         backgrounds: list
            List of :class:`numpy.ndarray` background images for placing the preview images onto
        backgrounds: list
            List of :class:`numpy.ndarray` preview images for placing onto the background images
 </s> add         backgrounds: :class:`numpy.ndarray`
            Background images for placing the preview images onto
        backgrounds: :class:`numpy.ndarray`
            Preview images for placing onto the background images
        saver: :class:`lib.images.ImagesSaver` or ``None``
            The background saver for saving the image or ``None`` if faces are not to be saved
          data.
  
          Parameters
          ----------
        saver: :class:`lib.images.ImagesSaver` or ``None``
            The background saver for saving the image or ``None`` if faces are not to be saved
        saver: :class:`lib.images.ImagesSaver` or ``None``
            The background saver for saving the image or ``None`` if faces are not to be saved
          extract_media: :class:`~plugins.extract.pipeline.ExtractMedia`
              The output from :class:`~plugins.extract.Pipeline.Extractor`
          """
          logger.trace("Outputting faces for %s", extract_media.filename)
          final_faces = []
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 
scripts/extract.py