  from zlib import decompress
  
  import numpy as np
  import cv2
  from tqdm import tqdm
  from lib.align import AlignedFace, DetectedFace, get_centered_size
  from lib.image import read_image_batch, read_image_meta_batch
  from lib.multithreading import BackgroundGenerator
  from lib.utils import FaceswapError
  
  from . import ImageAugmentation
  
 
</s> remove import numpy as np
 </s> add  </s> remove from threading import Lock
from zlib import decompress
 </s> add from typing import cast, Dict, Generator, List, Tuple, TYPE_CHECKING, Union </s> remove from typing import TYPE_CHECKING, Optional
 </s> add from typing import List, Dict, TYPE_CHECKING, Optional
import numpy as np
import numexpr as ne
from lib.align import AlignedFace, DetectedFace
from lib.align.aligned_face import CenteringType
from lib.image import read_image_batch
  from zlib import decompress
  
  import numpy as np
  import cv2
import numpy as np
import numexpr as ne
from lib.align import AlignedFace, DetectedFace
from lib.align.aligned_face import CenteringType
from lib.image import read_image_batch
import numpy as np
import numexpr as ne
from lib.align import AlignedFace, DetectedFace
from lib.align.aligned_face import CenteringType
from lib.image import read_image_batch
import numpy as np
import numexpr as ne
from lib.align import AlignedFace, DetectedFace
from lib.align.aligned_face import CenteringType
from lib.image import read_image_batch
  from lib.multithreading import BackgroundGenerator
  from lib.utils import FaceswapError
  
  from . import ImageAugmentation
  
keep keep keep keep replace replace replace keep keep keep keep keep
 Data Augmentation update (#1263)

- lib.detected_face
    - Subclass Masks for Landmark based masks
    - Add training mask propery + methods to DetectedFace
  - lib.training_training
    - subclass TrainingDataGenerator for training and preview data
    - Split cache into own module
    - Reduce thread count to 1 to prevent image corruption + data re-use
    - Process on largest model input/output size rather than stored image size
    - Size and crop masks during caching stage
    - Implement ring buffer for data flow
    - Fix preview reload bug
  - augmentation
    - typing
    - switch color aug order
    - better initialization
    - Fix warp + landmark warp to correctly apply at different image scales
    - Slightly improved warp caching
    - Don't store whether image is_preview. Handle all data as training images implicitly
  - plugins.trainer: Typing and fixes to work with trainingdata refactor 
lib/training/generator.py