          Parameters
          ----------
          batch : dict
              The final ``dict`` from the `plugin` process. It must contain the `keys`:
              ``detected_faces``, ``filename``, ``feed_faces``
  
          Yields
          ------
          :class:`~plugins.extract.pipeline.ExtractMedia`
              The :attr:`DetectedFaces` list will be populated for this class with the bounding
 
</s> remove         for mask, face, feed_face in zip(batch["prediction"],
                                         batch["detected_faces"],
                                         batch["feed_faces"]):
 </s> add         for mask, face, feed_face, roi_mask in zip(batch["prediction"],
                                                   batch["detected_faces"],
                                                   batch["feed_faces"],
                                                   batch["roi_masks"]):
            self._crop_out_of_bounds(mask, roi_mask) </s> remove         return self._image.shape[:2]
 </s> add         return self._image_shape[:2] </s> remove         return self._image.shape
 </s> add         return self._image_shape </s> remove from lib.align import AlignedFace
 </s> add from lib.align import AlignedFace, transform_image
            ``detected_faces``, ``filename``, ``feed_faces``, ``roi_masks``
          Parameters
          ----------
          batch : dict
              The final ``dict`` from the `plugin` process. It must contain the `keys`:
            ``detected_faces``, ``filename``, ``feed_faces``, ``roi_masks``
  
          Yields
          ------
          :class:`~plugins.extract.pipeline.ExtractMedia`
              The :attr:`DetectedFaces` list will be populated for this class with the bounding
keep keep keep keep replace keep keep keep keep keep
 extract: mask - Delete any mask from outside of frame boundaries 
plugins/extract/mask/_base.py