          if self.args.job == "update-hashes":
              job = UpdateHashes
          elif self.args.job.startswith("remove-"):
              job = RemoveAlignments
          elif self.args.job.startswith("sort-"):
              job = Sort
          elif self.args.job in("missing-alignments", "missing-frames",
                                "multi-faces", "leftover-faces", "no-faces"):
              job = Check
          else:
              job = globals()[self.args.job.title()]
 
</s> remove     elif extension == ".p":
 </s> add     elif extension in (".p", ".pickle"): </s> remove             retval = [self._detector, self._aligner, self._masker]
        elif self.passes == 3 and self.phase == 'detect':
            retval = [self._detector]
        elif self.passes == 3 and self.phase == 'align':
            retval = [self._aligner]
        elif self.passes == 3 and self.phase == 'mask':
            retval = [self._masker]
 </s> add             retval = self._all_plugins </s> remove             cvt_image = cv2.cvtColor(image.copy(), cv2.COLOR_BGR2GRAY)  # pylint:disable=no-member
 </s> add             cvt_image = cv2.cvtColor(image.copy(), cv2.COLOR_BGR2GRAY) </s> remove             retval = [None]
 </s> add             retval = [getattr(self, "_{}".format(self.phase))] </s> remove             cvt_image = image.copy()
 </s> add             cvt_image = image[..., :3].copy()
          if self.args.job == "update-hashes":
              job = UpdateHashes
          elif self.args.job.startswith("remove-"):
              job = RemoveAlignments


          elif self.args.job in("missing-alignments", "missing-frames",
                                "multi-faces", "leftover-faces", "no-faces"):
              job = Check
          else:
              job = globals()[self.args.job.title()]
keep keep keep keep replace 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 
tools/alignments.py