                   disable_filter: bool = False,
                   image_is_aligned: bool = False,) -> None:
          logger.debug("Initializing %s: (detector: %s, aligner: %s, masker: %s, recognition: %s, "
                       "configfile: %s, multiprocess: %s, exclude_gpus: %s, rotate_images: %s, "
                       "min_size: %s, normalize_method: %s, re_feed: %s, disable_filter: %s, "
                       "image_is_aligned: %s)", self.__class__.__name__, detector, aligner, masker,
                       recognition, configfile, multiprocess, exclude_gpus, rotate_images, min_size,
                       normalize_method, re_feed, disable_filter, image_is_aligned)
          self._instance = _get_instance()
          maskers = [cast(Optional[str],
                     masker)] if not isinstance(masker, list) else cast(List[Optional[str]], masker)
          self._flow = self._set_flow(detector, aligner, maskers, recognition)
          self._exclude_gpus = exclude_gpus
 
</s> remove                  disable_filter: bool = False,
                 image_is_aligned: bool = False,) -> None:
 </s> add                  disable_filter: bool = False) -> None: </s> remove         logger.debug("Initializing %s: (configfile: %s, image_is_aligned: %s)",
                     self.__class__.__name__, configfile, image_is_aligned)
 </s> add         logger.debug("Initializing %s: (configfile: %s)", self.__class__.__name__, configfile) </s> remove                  image_is_aligned=False,
 </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                      "detected_faces: %s)", self.__class__.__name__, filename, image.shape,
                     detected_faces)
 </s> add                      "detected_faces: %s, is_aligned: %s)", self.__class__.__name__, filename,
                     image.shape, detected_faces, is_aligned)
                     "min_size: %s, normalize_method: %s, re_feed: %s, disable_filter: %s, )",
                     self.__class__.__name__, detector, aligner, masker, recognition, configfile,
                     multiprocess, exclude_gpus, rotate_images, min_size, normalize_method,
                     re_feed, disable_filter)
                   disable_filter: bool = False,
                   image_is_aligned: bool = False,) -> None:
          logger.debug("Initializing %s: (detector: %s, aligner: %s, masker: %s, recognition: %s, "
                       "configfile: %s, multiprocess: %s, exclude_gpus: %s, rotate_images: %s, "
                     "min_size: %s, normalize_method: %s, re_feed: %s, disable_filter: %s, )",
                     self.__class__.__name__, detector, aligner, masker, recognition, configfile,
                     multiprocess, exclude_gpus, rotate_images, min_size, normalize_method,
                     re_feed, disable_filter)
                     "min_size: %s, normalize_method: %s, re_feed: %s, disable_filter: %s, )",
                     self.__class__.__name__, detector, aligner, masker, recognition, configfile,
                     multiprocess, exclude_gpus, rotate_images, min_size, normalize_method,
                     re_feed, disable_filter)
                     "min_size: %s, normalize_method: %s, re_feed: %s, disable_filter: %s, )",
                     self.__class__.__name__, detector, aligner, masker, recognition, configfile,
                     multiprocess, exclude_gpus, rotate_images, min_size, normalize_method,
                     re_feed, disable_filter)
                     "min_size: %s, normalize_method: %s, re_feed: %s, disable_filter: %s, )",
                     self.__class__.__name__, detector, aligner, masker, recognition, configfile,
                     multiprocess, exclude_gpus, rotate_images, min_size, normalize_method,
                     re_feed, disable_filter)
          self._instance = _get_instance()
          maskers = [cast(Optional[str],
                     masker)] if not isinstance(masker, list) else cast(List[Optional[str]], masker)
          self._flow = self._set_flow(detector, aligner, maskers, recognition)
          self._exclude_gpus = exclude_gpus
keep keep keep keep replace 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 
plugins/extract/pipeline.py