  from re import finditer
  from multiprocessing import current_process
  from socket import timeout as socket_timeout, error as socket_error
  
  import imageio_ffmpeg as im_ffm
  from tqdm import tqdm
  
  import numpy as np
  import cv2
  
 
</s> remove from hashlib import sha1
 </s> add  </s> remove import numpy as np
import cv2


from lib.faces_detect import DetectedFace


 </s> add  </s> remove from random import random, shuffle, choice
 </s> add from random import shuffle, choice </s> remove from lib.faces_detect import DetectedFace
from lib.utils import rotate_landmarks
 </s> add from lib.faces_detect import DetectedFace, rotate_landmarks
  from re import finditer
  from multiprocessing import current_process
  from socket import timeout as socket_timeout, error as socket_error
  

  from tqdm import tqdm
  
  import numpy as np
  import cv2
  
keep keep keep keep replace keep keep keep keep keep
 Optimize Data Augmentation (#881)

* Move image utils to lib.image
* Add .pylintrc file
* Remove some cv2 pylint ignores
* TrainingData: Load images from disk in batches
* TrainingData: get_landmarks to batch
* TrainingData: transform and flip to batches
* TrainingData: Optimize color augmentation
* TrainingData: Optimize target and random_warp
* TrainingData - Convert _get_closest_match for batching
* TrainingData: Warp To Landmarks optimized
* Save models to threadpoolexecutor
* Move stack_images, Rename ImageManipulation. ImageAugmentation Docstrings
* Masks: Set dtype and threshold for lib.masks based on input face
* Docstrings and Documentation 
lib/utils.py