                            face.feed_matrix,
                            (face.image.shape[1], face.image.shape[0]),
                            face.feed_interpolators[1],
                            storage_size=self._storage_size)
              face.feed = None
  
          self._remove_invalid_keys(batch, ("detected_faces", "filename", "image"))
          logger.trace("Item out: %s", {key: val
                                        for key, val in batch.items()
                                        if key != "image"})
 
</s> remove         generator = zip(batch["detected_faces"],
                        batch["filename"],
                        batch["image"],
                        batch["landmarks"])
        for face, filename, image, landmarks in generator:
            face.landmarks_xy = [(int(round(pt[0])), int(round(pt[1]))) for pt in landmarks]
            face.image = image
            face.filename = filename
 </s> add         for face, landmarks in zip(batch["detected_faces"], batch["landmarks"]):
            if not isinstance(landmarks, np.ndarray):
                landmarks = np.array(landmarks)
            face.landmarks_xy = np.rint(landmarks).astype("int32") </s> remove         # TODO Convert landmarks_xy to numpy arrays
 </s> add  </s> remove             logger.trace("{} - {}", key, mask_dict[key] if key != "mask" else type(mask_dict[key]))
 </s> add             logger.trace("%s - %s", key, mask_dict[key] if key != "mask" else type(mask_dict[key])) </s> remove         for key in ("mask", "affine_matrix", "frame_dims", "intepolator", "stored_size"):
 </s> add         for key in ("mask", "affine_matrix", "frame_dims", "interpolator", "stored_size"): </s> remove             ``affine_matrix``, ``frame_dims``, ``intepolator``, ``stored_size``
 </s> add             ``affine_matrix``, ``frame_dims``, ``interpolator``, ``stored_size``
            face.feed = dict()
                            face.feed_matrix,
                            (face.image.shape[1], face.image.shape[0]),
                            face.feed_interpolators[1],
                            storage_size=self._storage_size)
            face.feed = dict()
  
          self._remove_invalid_keys(batch, ("detected_faces", "filename", "image"))
          logger.trace("Item out: %s", {key: val
                                        for key, val in batch.items()
                                        if key != "image"})
keep keep keep keep replace keep keep keep keep keep
 Smart Mask - Extract code review

- Lint simple_tests.py
- Only reformat alignments file if it exists otherwise change filename
- Update legacy alignments to new format at all stages
- faces_detect.Mask.from_dict - logging format fix
- convert.py fix otf for new pipeline
- cli.py - Add note that masks not used. Revert convert masks
- faces_detect.py - Revert non-extract code
- Add .p and .pickle extensions for serializer
- plugins/extract revert some changes
- scripts/fsmedia - Revert code changes
- Pipeline - cleanup
- Consistant alpha channel stripping (fixes single-process)
- Store landmarks as numpy array
- Code attribution
- Normalize feed face and reference face to 0.0 - 1.0 in convert
- Lock in mask VRAM sized
- Add documentation to plugin_loader
- Update alignments tool to work with new format 
plugins/extract/mask/_base.py