              final_faces.append({"file_location": self.output_dir / Path(filename).stem,
                                  "face": detected_face})
          faces["detected_faces"] = final_faces
  
      def process_faces(self, filename, faces, save_queue):
          """ Perform processing on found faces """
          final_faces = list()
          filename = faces["filename"]
  
          for idx, detected_face in enumerate(faces["detected_faces"]):
              if self.export_face:
 
</s> remove         filename = faces["filename"]

 </s> add  </s> remove             if self.export_face:
                save_queue.put((filename,
                                detected_face["file_location"],
                                detected_face["face"].aligned_face,
                                idx))
 </s> add             output_file = detected_face["file_location"]
            extension = Path(filename).suffix
            out_filename = "{}_{}{}".format(str(output_file), str(idx), extension)

            face = detected_face["face"]
            resized_face = face.aligned_face </s> remove     def convert_one_face(self, converter, imagevars):
 </s> add     def convert_one_face(self, converter, image, face): </s> remove                 for idx, face in enumerate(faces):
                    image = self.convert_one_face(converter,
                                                  (filename, image, idx, face))
 </s> add                 for face in faces:
                    image = self.convert_one_face(converter, image, face) </s> remove             return faces
        valid_faces = list()
        sizes = self.extracted_faces.get_roi_size_for_frame(frame)
        for idx, size in enumerate(sizes):
            if size >= self.extracted_faces.size:
                valid_faces.append(faces[idx])
 </s> add             valid_faces = faces
        else:
            sizes = self.extracted_faces.get_roi_size_for_frame(frame)
            valid_faces = [faces[idx]
                           for idx, size in enumerate(sizes)
                           if size >= self.extracted_faces.size]
        logger.trace("frame: '%s', total_faces: %s, valid_faces: %s",
                     frame, len(faces), len(valid_faces))
    def output_faces(self, filename, faces, save_queue):
        """ Output faces to save thread """
              final_faces.append({"file_location": self.output_dir / Path(filename).stem,
                                  "face": detected_face})
          faces["detected_faces"] = final_faces
  
    def output_faces(self, filename, faces, save_queue):
        """ Output faces to save thread """
    def output_faces(self, filename, faces, save_queue):
        """ Output faces to save thread """
          final_faces = list()
          filename = faces["filename"]
  
          for idx, detected_face in enumerate(faces["detected_faces"]):
              if self.export_face:
keep keep keep keep replace replace keep keep keep keep keep
 Add Face Hashes to Alignments (#550)

* Convert main scripts to use face hashes

* Alignment tool: Use hashes, add logging, add face rename function

* More logging. Update Manual tool to work with hashing 
scripts/extract.py