                                "warp_to_landmarks": warp_to_landmarks,
                                "augment_color": augment_color,
                                "no_flip": no_flip,
                                "pingpong": self.vram_savings.pingpong,
                                "snapshot_interval": snapshot_interval}
  
          if self.multiple_models_in_folder:
              deprecation_warning("Support for multiple model types within the same folder",
                                  additional_info="Please split each model into separate folders to "
                                                  "avoid issues in future.")
 
</s> remove             # Hacky split across 2 plugins
            available_vram = (vram_free - vram_required) // 2
            for plugin in (self._aligner, self._detector):
 </s> add             # Hacky split across 3 plugins
            available_vram = (vram_free - vram_required) // 3
            for plugin in (self._detector, self._aligner, self._masker): </s> remove         cache_path = os.path.join(root_path, "plugins", "extract", ".cache")
 </s> add         cache_path = os.path.join(root_path, "plugins", "extract", "recognition", ".cache") </s> remove         alignments:         dict containing paths to alignments files for keys 'a' and 'b'
        preview_scaling:    How much to scale the preview out by
        training_size:      Size of the training images
        coverage_ratio:     Ratio of face to be cropped out for training
        mask_type:          Type of mask to use. See lib.model.masks for valid mask names.
                            Set to None for not used
        no_logs:            Disable tensorboard logging
        snapshot_interval:  Interval for saving model snapshots
        warp_to_landmarks:  Use random_warp_landmarks instead of random_warp
        augment_color:      Perform random shifting of L*a*b* colors
        no_flip:            Don't perform a random flip on the image
        pingpong:           Train each side seperately per save iteration rather than together
 </s> add         alignments:             dict containing paths to alignments files for keys 'a' and 'b'
        preview_scaling:        How much to scale the preview out by
        training_size:          Size of the training images
        coverage_ratio:         Ratio of face to be cropped out for training
        replicate_input_mask:   Replicate input masks with additional model dedicated layers
        no_logs:                Disable tensorboard logging
        snapshot_interval:      Interval for saving model snapshots
        warp_to_landmarks:      Use random_warp_landmarks instead of random_warp
        augment_color:          Perform random shifting of L*a*b* colors
        no_flip:                Don't perform a random flip on the image
        pingpong:               Train each side seperately per save iteration rather than together </s> remove         cache_path = os.path.join(root_path, "plugins", "extract", ".cache")
 </s> add         cache_path = os.path.join(root_path, "plugins", "extract", "recognition", ".cache") </s> remove                     "not trained with a mask then this will fallback to "
                    "'{}'".format(get_default_mask()) +
 </s> add                     "not trained with a mask then this will fallback to components."
                              "snapshot_interval": snapshot_interval,
                              "replicate_input_mask": self.config["replicate_input_mask"],
                              "penalized_mask_loss": self.config["penalized_mask_loss"]}

                                "warp_to_landmarks": warp_to_landmarks,
                                "augment_color": augment_color,
                                "no_flip": no_flip,
                                "pingpong": self.vram_savings.pingpong,
                              "snapshot_interval": snapshot_interval,
                              "replicate_input_mask": self.config["replicate_input_mask"],
                              "penalized_mask_loss": self.config["penalized_mask_loss"]}

  
          if self.multiple_models_in_folder:
              deprecation_warning("Support for multiple model types within the same folder",
                                  additional_info="Please split each model into separate folders to "
                                                  "avoid issues in future.")
keep keep keep keep replace keep keep keep keep keep
 Smart Mask Exposure for Extraction & Training (#831)

Smart Masks - Initial Commit 
plugins/train/model/_base.py