          for mask, face in zip(masks, batch["detected_faces"]):
              parts = self.parse_parts(np.array(face.landmarks_xy))
              for item in parts:
                  item = np.concatenate(item)
                  hull = cv2.convexHull(item).astype('int32')  # pylint: disable=no-member
                  cv2.fillConvexPoly(mask, hull, 255, lineType=cv2.LINE_AA)
          batch["prediction"] = masks
          return batch
  
      def process_output(self, batch):
          """ Compile found faces for output """
          generator = zip(batch["feed"], batch["detected_faces"], batch["prediction"])
 
</s> remove                 hull = cv2.convexHull(item).astype('int32')  # pylint: disable=no-member
                cv2.fillConvexPoly(mask, hull, 255, lineType=cv2.LINE_AA)
        batch["prediction"] = masks
 </s> add                 hull = cv2.convexHull(item).astype("int32")  # pylint: disable=no-member
                cv2.fillConvexPoly(mask, hull, 1.0, lineType=cv2.LINE_AA)
        batch["prediction"] = batch["feed"] </s> remove         masks = np.zeros(batch["feed"].shape[:-1] + (1,), dtype='uint8')
        for mask, face in zip(masks, batch["detected_faces"]):
            parts = self.parse_parts(np.array(face.landmarks_xy))
 </s> add         for mask, face in zip(batch["feed"], batch["detected_faces"]):
            parts = self.parse_parts(np.array(face.feed_landmarks)) </s> remove         masks = np.zeros(batch["feed"].shape[:-1] + (1,), dtype='uint8')
        for mask, face in zip(masks, batch["detected_faces"]):
            parts = self.parse_parts(np.array(face.landmarks_xy))
 </s> add         for mask, face in zip(batch["feed"], batch["detected_faces"]):
            parts = self.parse_parts(np.array(face.feed_landmarks)) </s> remove         batch["prediction"] = np.full(batch["feed"].shape[:-1] + (1,),
                                      fill_value=255,
                                      dtype='uint8')
 </s> add         batch["prediction"] = np.ones_like(batch["feed"], dtype="float32") </s> remove         generator = zip(batch["feed"], batch["detected_faces"], batch["prediction"])
        for feed, face, prediction in generator:
            face.image = np.concatenate((feed, prediction), axis=-1)
            face.load_feed_face(face.image,
                                size=self.input_size,
                                coverage_ratio=self.coverage_ratio)
            face.load_reference_face(face.image,
                                     size=self.output_size,
                                     coverage_ratio=self.coverage_ratio)
 </s> add 
                hull = cv2.convexHull(item).astype("int32")  # pylint: disable=no-member
                cv2.fillConvexPoly(mask, hull, 1.0, lineType=cv2.LINE_AA)
        batch["prediction"] = batch["feed"]
          for mask, face in zip(masks, batch["detected_faces"]):
              parts = self.parse_parts(np.array(face.landmarks_xy))
              for item in parts:
                  item = np.concatenate(item)
                hull = cv2.convexHull(item).astype("int32")  # pylint: disable=no-member
                cv2.fillConvexPoly(mask, hull, 1.0, lineType=cv2.LINE_AA)
        batch["prediction"] = batch["feed"]
                hull = cv2.convexHull(item).astype("int32")  # pylint: disable=no-member
                cv2.fillConvexPoly(mask, hull, 1.0, lineType=cv2.LINE_AA)
        batch["prediction"] = batch["feed"]
                hull = cv2.convexHull(item).astype("int32")  # pylint: disable=no-member
                cv2.fillConvexPoly(mask, hull, 1.0, lineType=cv2.LINE_AA)
        batch["prediction"] = batch["feed"]
          return batch
  
      def process_output(self, batch):
          """ Compile found faces for output """
          generator = zip(batch["feed"], batch["detected_faces"], batch["prediction"])
keep keep keep keep replace replace replace keep keep keep keep keep
 Mask plugin cleanup

- PEP8 Fixes
- Remove config for non NN Masks
- Tidy up defaults helptext
- cli.py fix typos
- Remove unused imports and functions _base.py
- Standardize input_size param
- Enable and update documentation
- Change references from `aligner` to `masker`
- Change  input_size, output_size and coverage_ratio from kwargs to params
- Move load_aligned to batch input iterator
- Remove unnecessary self.input param
- Add softmax layer append function to KSession
- Remove references to KSession protected objects
- Standardize plugin output into finalize method
- Make masks full frame and add to lib.faces_detect
- Add masks to alignments.json (temporary zipped base64 solution) 
plugins/extract/mask/components.py