  
  class facehull(Mask):  # pylint: disable=invalid-name
      """ Basic face hull mask """
      def build_mask(self):
          mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=np.float32)
          hull = cv2.convexHull(  # pylint: disable=no-member
              np.array(self.landmarks).reshape((-1, 2)))
          cv2.fillConvexPoly(mask, hull, 255.0, lineType=cv2.LINE_AA)  # pylint: disable=no-member
          return mask
 
</s> remove         cv2.fillConvexPoly(mask, hull, 255.0, lineType=cv2.LINE_AA)  # pylint: disable=no-member
 </s> add         cv2.fillConvexPoly(mask, hull, self.threshold, lineType=cv2.LINE_AA) </s> remove             cv2.fillConvexPoly(mask, cv2.convexHull(merged), 255.)  # pylint: disable=no-member
 </s> add             cv2.fillConvexPoly(mask, cv2.convexHull(merged), self.threshold) </s> remove         mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=np.float32)
 </s> add         mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=self.dtype) </s> remove         mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=np.float32)
 </s> add         mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=self.dtype) </s> remove         mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=np.float32)
 </s> add         mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=self.dtype)
        mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=self.dtype)
        hull = cv2.convexHull(
  
  class facehull(Mask):  # pylint: disable=invalid-name
      """ Basic face hull mask """
      def build_mask(self):
        mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=self.dtype)
        hull = cv2.convexHull(
        mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=self.dtype)
        hull = cv2.convexHull(
              np.array(self.landmarks).reshape((-1, 2)))
          cv2.fillConvexPoly(mask, hull, 255.0, lineType=cv2.LINE_AA)  # pylint: disable=no-member
          return mask
keep keep keep keep replace replace 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/model/masks.py