  import logging
  import os
  
  from random import shuffle, choice
  from threading import Lock
  from zlib import decompress
  
  import numpy as np
  import cv2
  from tqdm import tqdm
  from lib.align import AlignedFace, DetectedFace, get_centered_size
 
</s> remove import numpy as np
 </s> add  </s> remove from tqdm import tqdm
from lib.align import AlignedFace, DetectedFace, get_centered_size
from lib.image import read_image_batch, read_image_meta_batch
 </s> add 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 </s> remove from typing import TYPE_CHECKING, Optional
 </s> add from typing import List, Dict, TYPE_CHECKING, Optional
from typing import cast, Dict, Generator, List, Tuple, TYPE_CHECKING, Union
  import logging
  import os
  
  from random import shuffle, choice
from typing import cast, Dict, Generator, List, Tuple, TYPE_CHECKING, Union
from typing import cast, Dict, Generator, List, Tuple, TYPE_CHECKING, Union
  
  import numpy as np
  import cv2
  from tqdm import tqdm
  from lib.align import AlignedFace, DetectedFace, get_centered_size
keep keep keep keep 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