              if imagename in self.alignments.data.keys():
                  logger.trace("Skipping image: '%s'", filename)
                  continue
              item = {"filename": filename,
                      "image": image}
              load_queue.put(item)
          load_queue.put("EOF")
          logger.debug("Load Images: Complete")
  
      def reload_images(self, detected_faces):
 
</s> remove         image = cv2.imread(filename)
 </s> add         image = cv2.imread(filename, cv2.IMREAD_UNCHANGED) </s> remove         self.align_face(faces, size, filename)
 </s> add         final_faces = list()
        for detected_face in faces["detected_faces"]:
            filename = self.output_dir / Path(detected_face.filename).stem
            final_faces.append({"file_location": filename,
                                "face": detected_face})
        faces["detected_faces"] = final_faces </s> remove                 loss[side] = batcher.train_one_batch(do_preview)
 </s> add                 loss[side] = batcher.train_one_batch() </s> remove         retval = 1 if self._is_parallel else 2
 </s> add         retval = 1 if self._is_parallel else 3
                    "image": image[..., :3]}
              if imagename in self.alignments.data.keys():
                  logger.trace("Skipping image: '%s'", filename)
                  continue
              item = {"filename": filename,
                    "image": image[..., :3]}
              load_queue.put(item)
          load_queue.put("EOF")
          logger.debug("Load Images: Complete")
  
      def reload_images(self, detected_faces):
keep keep keep keep replace keep keep keep keep keep
 Smart Mask Exposure for Extraction & Training (#831)

Smart Masks - Initial Commit 
scripts/extract.py