          logger.debug("Overlayed background. Shape: %s", images.shape)
          return images
  
      @classmethod
      def _compile_masked(cls, faces, masks):
          """ Add the mask to the faces for masked preview.
  
          Places an opaque red layer over areas of the face that are masked out.
  
          Parameters
 
</s> remove     def _get_headers(cls, side, width):
 </s> add     def _get_headers(cls, side: Literal["a", "b"], width: int) -> np.ndarray: </s> remove         size: int or tuple
            The size of the aligned mask to retrieve. Should be an `int` if an aligned face is
            being requested, or a ('height', 'width') shape tuple if a full frame is being
            requested
        area: ["mouth", "eyes"]
 </s> add         area: ["face", "mouth", "eye"] </s> remove     def _process_full(self, side, images, prediction_size, color):
 </s> add     def _process_full(self,
                      side: Literal["a", "b"],
                      images: np.ndarray,
                      prediction_size: int,
                      color: Tuple[int, int, int]) -> np.ndarray: </s> remove     def get_landmark_mask(self, size, area,
                          aligned=True, centering="face", dilation=0, blur_kernel=0, as_zip=False):
        """ Obtain a single channel mask based on the face's landmark points.
 </s> add     def get_landmark_mask(self,
                          area: Literal["eye", "face", "mouth"],
                          blur_kernel: int,
                          dilation: int) -> np.ndarray:
        """ Add a :class:`LandmarksMask` to this detected face

        Landmark based masks are generated from face Aligned Face landmark points. An aligned
        face must be loaded. As the data is coming from the already aligned face, no further mask
        cropping is required.
    def _compile_masked(cls, faces: List[np.ndarray], masks: np.ndarray) -> List[np.ndarray]:
          logger.debug("Overlayed background. Shape: %s", images.shape)
          return images
  
      @classmethod
    def _compile_masked(cls, faces: List[np.ndarray], masks: np.ndarray) -> List[np.ndarray]:
          """ Add the mask to the faces for masked preview.
  
          Places an opaque red layer over areas of the face that are masked out.
  
          Parameters
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