  from lib.utils import convert_to_secs, FaceswapError, _video_extensions, get_image_paths
  
  logger = logging.getLogger(__name__)  # pylint:disable=invalid-name
  
  # ################### #
  # <<< IMAGE UTILS >>> #
  # ################### #
  
 
</s> remove     from lib.align.alignments import AlignmentFileDict
 </s> add     from lib.align.alignments import AlignmentFileDict, PNGHeaderDict, PNGHeaderSourceDict </s> remove tqdm.monitor_interval = 0  # workaround for TqdmSynchronisationWarning
 </s> add # tqdm.monitor_interval = 0  # workaround for TqdmSynchronisationWarning  # TODO? </s> remove from lib.align import AlignedFace
 </s> add from lib.align import AlignedFace, DetectedFace
from lib.image import read_image_meta
if TYPE_CHECKING:
    from lib.align.alignments import PNGHeaderDict

  from lib.utils import convert_to_secs, FaceswapError, _video_extensions, get_image_paths
  
if TYPE_CHECKING:
    from lib.align.alignments import PNGHeaderDict

  logger = logging.getLogger(__name__)  # pylint:disable=invalid-name
  
  # ################### #
  # <<< IMAGE UTILS >>> #
  # ################### #
  
keep add keep 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 
lib/image.py