                       {k: len(v) for k, v in image_list.items()})
          self._training_opts = training_opts
          self._hashes = self._get_image_hashes(image_list)
          self._detected_faces = self._load_alignments()
          self._check_all_faces()
          logger.debug("Initialized %s", self.__class__.__name__)
  
 
</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         side_hashes = self._hashes[side]
        hash_indices = [idx for idx, hsh in enumerate(side_hashes["hashes"]) if hsh == face_hash]
        retval = [side_hashes["filenames"][idx] for idx in hash_indices]
 </s> add         retval = self._hashes[side][face_hash] </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()
        self._check_alignments_exist()
                       {k: len(v) for k, v in image_list.items()})
          self._training_opts = training_opts
        self._check_alignments_exist()
          self._hashes = self._get_image_hashes(image_list)
          self._detected_faces = self._load_alignments()
          self._check_all_faces()
          logger.debug("Initialized %s", self.__class__.__name__)
  
keep add keep keep keep keep keep
 plugins.train.trainer - Speed up mask caching 
plugins/train/trainer/_base.py