          configfile = self._args.configfile if hasattr(self._args, "configfile") else None
          normalization = None if self._args.normalization == "none" else self._args.normalization
          maskers = ["components", "extended"]
          maskers += self._args.masker if self._args.masker else []
          recognition = "vgg_face2" if arguments.identity else None
          self._extractor = Extractor(self._args.detector,
                                      self._args.aligner,
                                      maskers,
                                      recognition=recognition,
                                      configfile=configfile,
 
</s> remove         exception = False

 </s> add  </s> remove         self._frame_metadata: Dict[str, Any] = {}
 </s> add         self._is_aligned = is_aligned
        self._frame_metadata: Optional["PNGHeaderSourceDict"] = None </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         # Face Filter post processing
        if ((hasattr(self._args, "filter") and self._args.filter is not None) or
                (hasattr(self._args, "nfilter") and
                 self._args.nfilter is not None)):

            if hasattr(self._args, "detector"):
                detector = self._args.detector.replace("-", "_").lower()
            else:
                detector = "cv2_dnn"
            if hasattr(self._args, "aligner"):
                aligner = self._args.aligner.replace("-", "_").lower()
            else:
                aligner = "cv2_dnn"

            face_filter = dict(detector=detector,
                               aligner=aligner,
                               multiprocess=not self._args.singleprocess)
            filter_lists = {}
            if hasattr(self._args, "ref_threshold"):
                face_filter["ref_threshold"] = self._args.ref_threshold
            for filter_type in ('filter', 'nfilter'):
                filter_args = getattr(self._args, filter_type, None)
                filter_args = None if not filter_args else filter_args
                filter_lists[filter_type] = filter_args
            face_filter["filter_lists"] = filter_lists
            postprocess_items["FaceFilter"] = {"kwargs": face_filter}

 </s> add  </s> remove                      "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)
 </s> add                      "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)
        recognition = ("vgg_face2"
                       if arguments.identity or arguments.filter or arguments.nfilter
                       else None)
          configfile = self._args.configfile if hasattr(self._args, "configfile") else None
          normalization = None if self._args.normalization == "none" else self._args.normalization
          maskers = ["components", "extended"]
          maskers += self._args.masker if self._args.masker else []
        recognition = ("vgg_face2"
                       if arguments.identity or arguments.filter or arguments.nfilter
                       else None)
          self._extractor = Extractor(self._args.detector,
                                      self._args.aligner,
                                      maskers,
                                      recognition=recognition,
                                      configfile=configfile,
keep keep keep keep 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 
scripts/extract.py