          logger.trace("Getting faces for: '%s'", filename)
          if not self.extractor:
              detected_faces = self.alignments_faces(os.path.basename(filename), image)
          else:
              detected_faces = self.detect_faces(filename, image)
          logger.trace("Got %s faces for: '%s'", len(detected_faces), filename)
          return detected_faces
  
      def alignments_faces(self, frame, image):
          """ Get the face from alignments file """
 
</s> remove         if not self.extractor:
            detected_faces = self.alignments_faces(os.path.basename(filename), image)
 </s> add         if not self._extractor:
            detected_faces = self._alignments_faces(os.path.basename(filename), image) </s> remove     def alignments_faces(self, frame, image):
        """ Get the face from alignments file """
        if not self.check_alignments(frame):
 </s> add     def _alignments_faces(self, frame_name, image):
        """ Return detected faces from an alignments file.

        Parameters
        ----------
        frame_name: str
            The name of the frame to return the detected faces for
        image: :class:`numpy.ndarray`
            The frame that the detected faces exist in

        Returns
        -------
        list
            List of :class:`lib.faces_detect.DetectedFace` objects
        """
        if not self._check_alignments(frame_name): </s> remove     def get_detected_faces(self, filename, image):
        """ Return detected faces from alignments or detector """
 </s> add     def _get_detected_faces(self, filename, image):
        """ Return the detected faces for the given image.

        If we have an alignments file, then the detected faces are created from that file. If
        we're running On-The-Fly then they will be extracted from the extractor.

        Parameters
        ----------
        filename: str
            The filename to return the detected faces for
        image: :class:`numpy.ndarray`
            The frame that the detected faces exist in

        Returns
        -------
        list
            List of :class:`lib.faces_detect.DetectedFace` objects
        """ </s> remove             detected_faces = self.get_detected_faces(filename, image)
 </s> add             detected_faces = self._get_detected_faces(filename, image) </s> remove         faces = self.alignments.get_faces_in_frame(frame)
 </s> add         faces = self._alignments.get_faces_in_frame(frame_name)
            detected_faces = self._detect_faces(filename, image)
          logger.trace("Getting faces for: '%s'", filename)
          if not self.extractor:
              detected_faces = self.alignments_faces(os.path.basename(filename), image)
          else:
            detected_faces = self._detect_faces(filename, image)
          logger.trace("Got %s faces for: '%s'", len(detected_faces), filename)
          return detected_faces
  
      def alignments_faces(self, frame, image):
          """ Get the face from alignments file """
keep keep keep keep 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 
scripts/convert.py