                      skip_count += 1
                      continue
                  detected_face = DetectedFace()
                  detected_face.from_alignment(face)
                  detected_faces.append(detected_face)
          logger.debug("Detected Faces count: %s, Skipped faces count: %s",
                       len(detected_faces), skip_count)
          if skip_count != 0:
              logger.warning("%s alignments have been removed as their corresponding faces do not "
                             "exist in the input folder for side %s. Run in verbose mode if you "
                             "wish to see which alignments have been excluded.",
                             skip_count, side.upper())
 
</s> remove                     for hsh, filename in zip(train_hashes["hashes"], train_hashes["filenames"])
 </s> add                     for hsh, filenames in train_hashes.items()
                    for filename in filenames </s> remove         side_hashes = set(self._hashes[side]["hashes"])
        detected_faces = []
 </s> add         dupe_count = 0
        side_hashes = set(self._hashes[side])
        detected_faces = dict() </s> remove             align_hashes = set(face.hash for face in self._detected_faces[side])
            if not align_hashes.issuperset(train_hashes["hashes"]):
 </s> add             align_hashes = set(self._detected_faces[side])
            if not align_hashes.issuperset(set(train_hashes)): </s> remove         hashes = {key: dict(hashes=[], filenames=[]) for key in image_list}
        pbar = tqdm(desc="Reading training images",
                    total=sum(len(val) for val in image_list.values()))
 </s> add         hashes = {key: dict() for key in image_list}
                detected_faces[face["hash"]] = detected_face
        logger.debug("Detected Faces count: %s, Skipped faces count: %s, duplicate faces "
                     "count: %s", len(detected_faces), skip_count, dupe_count)
                      skip_count += 1
                      continue
                  detected_face = DetectedFace()
                  detected_face.from_alignment(face)
                detected_faces[face["hash"]] = detected_face
        logger.debug("Detected Faces count: %s, Skipped faces count: %s, duplicate faces "
                     "count: %s", len(detected_faces), skip_count, dupe_count)
                detected_faces[face["hash"]] = detected_face
        logger.debug("Detected Faces count: %s, Skipped faces count: %s, duplicate faces "
                     "count: %s", len(detected_faces), skip_count, dupe_count)
                detected_faces[face["hash"]] = detected_face
        logger.debug("Detected Faces count: %s, Skipped faces count: %s, duplicate faces "
                     "count: %s", len(detected_faces), skip_count, dupe_count)
          if skip_count != 0:
              logger.warning("%s alignments have been removed as their corresponding faces do not "
                             "exist in the input folder for side %s. Run in verbose mode if you "
                             "wish to see which alignments have been excluded.",
                             skip_count, side.upper())
keep keep keep keep replace replace replace keep keep keep keep keep
 plugins.train.trainer - Speed up mask caching 
plugins/train/trainer/_base.py