          self._threshold = 0.0
          self._sub_crop = dict(size=None, slice_in=[], slice_out=[])
          self.set_blur_and_threshold()
  
      @property
      def mask(self):
          """ numpy.ndarray: The mask at the size of :attr:`stored_size` with any requested blurring
          and threshold amount applied."""
 
</s> remove     def _get_mask(self, detected_face, predicted_mask, sub_crop_offset):
 </s> add     def _get_mask(self, detected_face, predicted_mask, centering, sub_crop_offset): </s> remove     def set_sub_crop(self, offset):
 </s> add     def set_sub_crop(self, offset, centering): </s> remove                 predicted_mask=None,):
 </s> add                 centering, predicted_mask=None,): </s> remove         mask = self._get_mask(detected_face, predicted_mask, sub_crop_offset)
 </s> add         mask = self._get_mask(detected_face, predicted_mask, centering, sub_crop_offset) </s> remove     def __init__(self, storage_size=128):
 </s> add     def __init__(self, storage_size=128, storage_centering="face"):
        logger.trace("Initializing: %s (storage_size: %s, storage_centering: %s)",
                     self.__class__.__name__, storage_size, storage_centering)
        logger.trace("Initialized: %s", self.__class__.__name__)
          self._threshold = 0.0
          self._sub_crop = dict(size=None, slice_in=[], slice_out=[])
          self.set_blur_and_threshold()
        logger.trace("Initialized: %s", self.__class__.__name__)
  
      @property
      def mask(self):
          """ numpy.ndarray: The mask at the size of :attr:`stored_size` with any requested blurring
          and threshold amount applied."""
keep keep add keep keep keep keep keep
 Add support for different mask centering types 
lib/align/detected_face.py