          if self._update_type == "output":
              logger.debug("Update type `output` selected. Not launching extractor")
              return None
          logger.debug("masker: %s", self._mask_type)
          extractor = Extractor(None, None, self._mask_type,
                                exclude_gpus=exclude_gpus,
                                image_is_aligned=self._input_is_faces)
          extractor.launch()
          logger.debug(extractor)
          return extractor
  
      def _set_correct_mask_type(self):
 
</s> remove                    image_is_aligned: bool,
 </s> add  </s> remove                  extractor: Extractor,
                 arguments: Namespace) -> None:
        logger.debug("Initializing %s: (extractor: %s, args: %s)", self.__class__.__name__,
                     extractor, arguments)
        self._args = arguments
        self._output_dir = None if self._args.skip_saving_faces else get_folder(
            self._args.output_dir)
 </s> add                  threshold: float,
                 filter_files: Optional[Union[str, List[str]]],
                 nfilter_files: Optional[Union[str, List[str]]],
                 extractor: Extractor) -> None:
        logger.debug("Initializing %s: (threshold: %s, filter_files: %s, nfilter_files: %s "
                     "extractor: %s)", self.__class__.__name__, threshold, filter_files,
                     nfilter_files, extractor)
        self._threshold = threshold
        self._filter_files, self._nfilter_files = self._validate_inputs(filter_files,
                                                                        nfilter_files)

        if not self._filter_files and not self._nfilter_files:
            logger.debug("Filter not selected. Exiting %s", self.__class__.__name__)
            return </s> remove         logger.info("Output Directory: %s", self._output_dir)
        self._images = ImagesLoader(self._args.input_dir, fast_count=True)
        self._alignments = Alignments(self._args, True, self._images.is_video)
 </s> add         self._embeddings: List[np.ndarray] = [np.array([]) for _ in self._filter_files]
        self._nembeddings: List[np.ndarray] = [np.array([]) for _ in self._nfilter_files] </s> remove     def _save_interval(self) -> Optional[int]:
        """ int: The number of frames to be processed between each saving of the alignments file if
        it has been provided, otherwise ``None`` """
        if hasattr(self._args, "save_interval"):
            return self._args.save_interval
        return None
 </s> add     def active(self):
        """ bool: ``True`` if filter files have been passed in command line arguments. ``False`` if
        no filter files have been provided """
        return bool(self._filter_files) or bool(self._nfilter_files)
        extractor = Extractor(None, None, self._mask_type, exclude_gpus=exclude_gpus)
          if self._update_type == "output":
              logger.debug("Update type `output` selected. Not launching extractor")
              return None
          logger.debug("masker: %s", self._mask_type)
        extractor = Extractor(None, None, self._mask_type, exclude_gpus=exclude_gpus)
        extractor = Extractor(None, None, self._mask_type, exclude_gpus=exclude_gpus)
        extractor = Extractor(None, None, self._mask_type, exclude_gpus=exclude_gpus)
          extractor.launch()
          logger.debug(extractor)
          return extractor
  
      def _set_correct_mask_type(self):
keep keep keep keep replace replace replace keep keep keep keep keep
 Update Face Filter
  - Remove old face filter
  - plugins.extract.pipeline: Expose plugins directly
  - Change `is_aligned` from plugin level to ExtractMedia level
  - Allow extract pipeline to take faceswap aligned images
  - Add ability for recognition plugins to accept aligned faces as input
  - Add face filter to recognition plugin
  - Move extractor pipeline IO ops to own class 
tools/mask/mask.py