  from plugins.extract.pipeline import Extractor, ExtractMedia
  from scripts.fsmedia import Alignments, PostProcess, finalize
  
  
  tqdm.monitor_interval = 0  # workaround for TqdmSynchronisationWarning
  logger = logging.getLogger(__name__)  # pylint: disable=invalid-name
  
  
  class Extract():  # pylint:disable=too-few-public-methods
      """ The Faceswap Face Extraction Process.
 
</s> remove from lib.image import encode_image, generate_thumbnail, ImagesLoader, ImagesSaver
 </s> add from lib.image import encode_image, generate_thumbnail, ImagesLoader, ImagesSaver, read_image_meta </s> remove     from lib.align import DetectedFace
 </s> add  </s> remove from lib.align import AlignedFace
 </s> add from lib.align import AlignedFace, DetectedFace
from lib.image import read_image_meta
# tqdm.monitor_interval = 0  # workaround for TqdmSynchronisationWarning  # TODO?
  from plugins.extract.pipeline import Extractor, ExtractMedia
  from scripts.fsmedia import Alignments, PostProcess, finalize
  
  
# tqdm.monitor_interval = 0  # workaround for TqdmSynchronisationWarning  # TODO?
  logger = logging.getLogger(__name__)  # pylint: disable=invalid-name
  
  
  class Extract():  # pylint:disable=too-few-public-methods
      """ The Faceswap Face Extraction Process.
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