          bool
              ``True`` if the image is a faceswap extracted image otherwise ``False``
          """
          if os.path.splitext(filename)[-1].lower() != ".png":
              logger.info("'%s' not a png. Returning empty array", filename)
              return np.array([]), False
  
          meta = read_image_meta(filename)
          if "itxt" not in meta or "alignments" not in meta["itxt"]:
              logger.debug("'%s' does not contain faceswap data. Returning empty array", filename)
 
</s> remove             filt_files = [files] if isinstance(files, str) else files
            filt_files = [] if filt_files is None else filt_files
 </s> add             if isinstance(files, list) and len(files) == 1 and os.path.isdir(files[0]):
                # Get images from folder, if folder passed in
                dirname = files[0]
                files = [os.path.join(dirname, fname)
                         for fname in os.listdir(dirname)
                         if os.path.splitext(fname)[-1].lower() in _image_extensions]
                logger.debug("Collected files from folder '%s': %s", dirname,
                             [os.path.basename(f) for f in files])

            filt_files = [] if files is None else files </s> remove                          filter_files: Optional[Union[str, List[str]]],
                         nfilter_files: Optional[Union[str, List[str]]]) -> Tuple[List[str],
                                                                                  List[str]]:
 </s> add                          filter_files: Optional[List[str]],
                         nfilter_files: Optional[List[str]]) -> Tuple[List[str], List[str]]: </s> remove             raise ValueError("nargs must be provided for FilesFullPaths: {}".format(opt))
 </s> add             raise ValueError(f"nargs must be provided for FilesFullPaths: {opt}") </s> remove                    "angles and in different conditions. Multiple images can be added space "
                   "separated.")))
 </s> add                    "angles and in different conditions. A folder containing the required images "
                   "or multiple image files, space separated, can be selected."))) </s> remove         logger.info("Identity filtered: (%s)", self._counts)
 </s> add         logger.info("Identity filtered (%s): %s", self._threshold, self._counts)
            logger.debug("'%s' not a png. Returning empty array", filename)
          bool
              ``True`` if the image is a faceswap extracted image otherwise ``False``
          """
          if os.path.splitext(filename)[-1].lower() != ".png":
            logger.debug("'%s' not a png. Returning empty array", filename)
              return np.array([]), False
  
          meta = read_image_meta(filename)
          if "itxt" not in meta or "alignments" not in meta["itxt"]:
              logger.debug("'%s' does not contain faceswap data. Returning empty array", filename)
keep keep keep keep replace keep keep keep keep keep
 Face-filter updates:
  - Allow selecting folder as well as multiple images
  - Lower default threshold and update helptext
  - bugfix: detector error when using all aligned faces
  - Standardize output folder name 
scripts/extract.py