          self.landmarks_xy = alignment["landmarks_xy"]
          # Manual tool does not know the final hash so default to None
          self.hash = alignment.get("hash", None)
          if image is not None and image.any():
              self.image = image
              self._image_to_face(image)
          logger.trace("Created from alignment: (x: %s, w: %s, y: %s. h: %s, "
                       "landmarks: %s)",
                       self.x, self.w, self.y, self.h, self.landmarks_xy)
 
</s> remove                      x, w, y, h, landmarks_xy, filename)
 </s> add                      x, w, y, h, landmarks_xy,
                     {k: v.shape for k, v in mask} if mask is not None else mask,
                     filename) </s> remove         self.x = x
        self.w = w
        self.y = y
        self.h = h
 </s> add         self.x = x  # pylint:disable=invalid-name
        self.w = w  # pylint:disable=invalid-name
        self.y = y  # pylint:disable=invalid-name
        self.h = h  # pylint:disable=invalid-name </s> remove                  landmarks_xy=None, filename=None):
 </s> add                  landmarks_xy=None, mask=None, filename=None): </s> remove                      multiprocess, rotate_images, min_size, normalize_method, input_size,
                     output_size, coverage_ratio)
 </s> add                      multiprocess, rotate_images, min_size, normalize_method)
        # Manual tool and legacy alignments will not have a mask
        self.mask = alignment.get("mask", None)
          self.landmarks_xy = alignment["landmarks_xy"]
          # Manual tool does not know the final hash so default to None
          self.hash = alignment.get("hash", None)
        # Manual tool and legacy alignments will not have a mask
        self.mask = alignment.get("mask", None)
          if image is not None and image.any():
              self.image = image
              self._image_to_face(image)
          logger.trace("Created from alignment: (x: %s, w: %s, y: %s. h: %s, "
                       "landmarks: %s)",
                       self.x, self.w, self.y, self.h, self.landmarks_xy)
keep keep add keep 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) 
lib/faces_detect.py