          for new_face, detected_face in zip(predicted["swapped_faces"],
                                             predicted["detected_faces"]):
              predicted_mask = new_face[:, :, -1] if new_face.shape[2] == 4 else None
              new_face = new_face[:, :, :3]
              src_face = detected_face.reference_face
              interpolator = detected_face.reference_interpolators[1]
  
              new_face = self.pre_warp_adjustments(src_face, new_face, detected_face, predicted_mask)
  
              # Warp face with the mask
 
</s> remove         face = np.clip(face[:, :, :3] / 255., 0., 1.)
 </s> add  </s> remove         face = AlignerExtract().transform(image, self.feed["matrix"], size, self.feed["padding"])
        face = np.clip(face[:, :, :3] / 255., 0., 1.)
 </s> add         face = AlignerExtract().transform(image,
                                          self.feed["matrix"],
                                          size,
                                          self.feed["padding"]) </s> remove         face = np.expand_dims(face - self.average_img, axis=0)
 </s> add         face = face[None, :, :, :3] - self.average_img </s> remove         batch = [tgt.astype("float32") / 255.0 for tgt in batch]
        if all(tgt.shape[-1] == 4 for tgt in batch):
            logger.trace("Batch contains mask")
            sizes = [item.shape[1] for item in batch]
            mask_batch = np.expand_dims(batch[sizes.index(max(sizes))][..., -1], axis=-1)
            batch = [item[..., :3] for item in batch]
            logger.trace("batch shapes: %s, mask_batch shape: %s",
                         [tgt.shape for tgt in batch], mask_batch.shape)
            retval = dict(targets=batch, masks=mask_batch)
 </s> add         targets = [batch[..., :3] for batch in size_list_of_batches]
        if size_list_of_batches[-1].shape[-1] == 4:
            masks = [size_list_of_batches[-1][..., 3:]] </s> remove         # Random Warp
        if to_landmarks:
            warp_kwargs = dict(batch_src_points=batch_src_pts,
                               batch_dst_points=self._get_closest_match(filenames,
                                                                        side,
                                                                        batch_src_pts))
        else:
            warp_kwargs = dict()
        processed["feed"] = self._processing.warp(batch[..., :3], to_landmarks, **warp_kwargs)
 </s> add         # Random Warp # TODO change masks to have a input mask and a warped target mask
        processed["feed"] = [self._processing.warp(batch[..., :3],
                                                   self._training_opts["warp_to_landmarks"],
                                                   **warp_kwargs)]
            src_face = detected_face.reference_face / np.array(255.0, dtype="float32")
          for new_face, detected_face in zip(predicted["swapped_faces"],
                                             predicted["detected_faces"]):
              predicted_mask = new_face[:, :, -1] if new_face.shape[2] == 4 else None
              new_face = new_face[:, :, :3]
            src_face = detected_face.reference_face / np.array(255.0, dtype="float32")
              interpolator = detected_face.reference_interpolators[1]
  
              new_face = self.pre_warp_adjustments(src_face, new_face, detected_face, predicted_mask)
  
              # Warp face with the mask
keep keep keep keep replace keep keep keep keep keep
 Smart Mask Exposure for Extraction & Training (#831)

Smart Masks - Initial Commit 
lib/convert.py