              detected_face = image["detected_faces"][0]
              src_img = image["image"]
              detected_face.load_aligned(src_img, self.size)
              matrix = detected_face.aligned["matrix"]
              self.faces.setdefault("filenames",
                                    list()).append(os.path.splitext(image["filename"])[0])
              self.faces.setdefault("matrix", list()).append(matrix)
              self.faces.setdefault("src", list()).append(AlignerExtract().transform(
                  src_img,
                  matrix,
                  self.size,
                  self.padding))
          self.update_source = False
 
</s> remove             detected_face.load_aligned(src_img, self.size)
 </s> add             detected_face.load_aligned(src_img, self._size) </s> remove                 self.size,
                self.padding))
 </s> add                 self._size,
                self._padding)) </s> remove         self.faces = dict()
 </s> add         self._faces = dict() </s> remove             self.crop_source_faces()
        self.crop_destination_faces()
        logger.debug("Extracted faces from frames: %s", {k: len(v) for k, v in self.faces.items()})

    def crop_source_faces(self):
        """ Update the main faces dict with new source faces and matrices """
 </s> add             self._crop_source_faces()
        self._crop_destination_faces()
        logger.debug("Extracted faces from frames: %s",
                     {k: len(v) for k, v in self._faces.items()})

    def _crop_source_faces(self):
        """ Extract the source faces from the source frames, along with their filenames and the
        transformation matrix used to extract the faces. """ </s> remove             self.faces["dst"].append(AlignerExtract().transform(
 </s> add             self._faces["dst"].append(AlignerExtract().transform(
            self._faces.setdefault("filenames",
                                   list()).append(os.path.splitext(image["filename"])[0])
            self._faces.setdefault("matrix", list()).append(matrix)
            self._faces.setdefault("src", list()).append(AlignerExtract().transform(
              detected_face = image["detected_faces"][0]
              src_img = image["image"]
              detected_face.load_aligned(src_img, self.size)
              matrix = detected_face.aligned["matrix"]
            self._faces.setdefault("filenames",
                                   list()).append(os.path.splitext(image["filename"])[0])
            self._faces.setdefault("matrix", list()).append(matrix)
            self._faces.setdefault("src", list()).append(AlignerExtract().transform(
            self._faces.setdefault("filenames",
                                   list()).append(os.path.splitext(image["filename"])[0])
            self._faces.setdefault("matrix", list()).append(matrix)
            self._faces.setdefault("src", list()).append(AlignerExtract().transform(
            self._faces.setdefault("filenames",
                                   list()).append(os.path.splitext(image["filename"])[0])
            self._faces.setdefault("matrix", list()).append(matrix)
            self._faces.setdefault("src", list()).append(AlignerExtract().transform(
            self._faces.setdefault("filenames",
                                   list()).append(os.path.splitext(image["filename"])[0])
            self._faces.setdefault("matrix", list()).append(matrix)
            self._faces.setdefault("src", list()).append(AlignerExtract().transform(
                  src_img,
                  matrix,
                  self.size,
                  self.padding))
          self.update_source = False
keep keep keep keep replace replace replace replace keep keep keep keep keep
 Smart Masks to Convert (#957)

- scripts.convert - Use Smart Masks for Convert
    * Make on-the-fly conversion an explicit option

- Move BlurMask to lib.faces_detect

- tools.preview - Fix for smart masks
    * Subclass from tk.Tk
    * Options to lib.gui.control_helper
    *variable cleanup

- lib.logger - Demote more tensorflow deprecation messages

- Documentation:
    * lib.faces_detect.BlurMask
    * plugins.convert.mask
    * lib.convert
    * scripts.convert
    * scripts.fsmedia
    * tools.preview 
tools/preview.py