      def get_missing_frames(self):
          """ yield each frame in alignments that does
              not have a matching file """
          self.output_message = "Missing frames that are in alignments file"
          frames = set([item["frame_fullname"] for item in self.items])
          for frame in tqdm(self.alignments.data.keys(), desc=self.output_message):
              if frame not in frames:
                  logger.debug("Returning: '%s'", frame)
                  yield frame
  
 
</s> remove         self.hashes_to_frame.setdefault(alignment["hash"], dict())[frame] = idx
 </s> add         self._hashes_to_frame.setdefault(alignment["hash"], dict())[frame] = idx </s> remove                                                 desc="Renaming Faces",
                                                total=self.alignments.frames_count):
 </s> add                                                       desc="Renaming Faces",
                                                      total=self.alignments.frames_count): </s> remove             face_filter = dict(detector=self.args.detector.replace("-", "_").lower(),
                               aligner=self.args.aligner.replace("-", "_").lower(),
 </s> add             if hasattr(self.args, "detector"):
                detector = self.args.detector.replace("-", "_").lower()
            else:
                detector = "cv2_dnn"
            if hasattr(self.args, "aligner"):
                aligner = self.args.aligner.replace("-", "_").lower()
            else:
                aligner = "cv2_dnn"

            face_filter = dict(detector=detector,
                               aligner=aligner,
        frames = set(item["frame_fullname"] for item in self.items)
      def get_missing_frames(self):
          """ yield each frame in alignments that does
              not have a matching file """
          self.output_message = "Missing frames that are in alignments file"
        frames = set(item["frame_fullname"] for item in self.items)
          for frame in tqdm(self.alignments.data.keys(), desc=self.output_message):
              if frame not in frames:
                  logger.debug("Returning: '%s'", frame)
                  yield frame
  
keep keep keep keep replace keep keep keep keep keep
 Bugfixes

Merge Alignments fix
Face Filter. Set default aligner/detector on convert 
tools/lib_alignments/jobs.py