          logger.debug("Initialized %s", self.__class__.__name__)
  
      # Get landmarks
      @property
      def landmarks(self):
          """ dict: The :class:`numpy.ndarray` aligned landmarks for keys "a" and "b" """
          return self._landmarks
  
      def _get_alignments_paths(self):
          """ Obtain the alignments file paths from the command line arguments passed to the model.
  
          If the argument does not exist or is empty, then scan the input folder for an alignments
 
</s> remove     # Get landmarks
 </s> add  </s> remove         """ Get the :class:`~lib.alignments.Alignments` object for the given location.
 </s> add         """ Get the :class:`~lib.align.Alignments` object for the given location. </s> remove     def _transform_landmarks(self, side, detected_faces):
        """ Transform frame landmarks to their aligned face variant.

        Parameters
        ----------
        side: {"a" or "b"}
            The side currently being processed
        detected_faces: list
            A list of :class:`lib.faces_detect.DetectedFace` objects

        Returns
        -------
        dict
            The face filenames as keys with the aligned landmarks as value.
        """
        landmarks = dict()
        for face in detected_faces.values():
            face.load_aligned(None, size=self._training_size)
            for filename in self._hash_to_filenames(side, face.hash):
                landmarks[filename] = face.aligned_landmarks
        return landmarks

 </s> add  </s> remove     def get_faces(arguments):
        """ If faces argument is specified, load faces_dir
            otherwise return None """
 </s> add     def _get_faces(arguments):
        """ If faces argument is specified, load the faces folder otherwise return ``None``.

        Parameters
        ----------
        arguments: :class:`argparse.Namespace`
            The :mod:`argparse` arguments as passed in from :mod:`tools.py`

        Returns
        -------
        :class:`tools.alignments.media.Faces` or ``None``
            The faces object or ``None`` if not faces folder specified
        """ </s> remove             The :class:`numpy.ndarray` aligned landmarks for keys "a" and "b"
 </s> add             The "a", "b" keys for each side, containing a sub-dictionary with the
            filename as key and :class:`lib.faces.detected_face.AlignedFace` object as value.
    def aligned_faces(self):
        """ dict: The "a", "b" keys for each side, containing a sub-dictionary with the
        filename as key and :class:`lib.faces.detected_face.aligned` object as value. """
        return self._aligned_faces

    @property
    def versions(self):
        """ dict: The "a", "b" keys for each side, with value being the alignment file version
        that provided the data. This is used to crop the faces correctly based on whether the
        extracted faces are legacy or full-head extracts. """
        return self._alignments_version
          logger.debug("Initialized %s", self.__class__.__name__)
  
      # Get landmarks
      @property
    def aligned_faces(self):
        """ dict: The "a", "b" keys for each side, containing a sub-dictionary with the
        filename as key and :class:`lib.faces.detected_face.aligned` object as value. """
        return self._aligned_faces

    @property
    def versions(self):
        """ dict: The "a", "b" keys for each side, with value being the alignment file version
        that provided the data. This is used to crop the faces correctly based on whether the
        extracted faces are legacy or full-head extracts. """
        return self._alignments_version
    def aligned_faces(self):
        """ dict: The "a", "b" keys for each side, containing a sub-dictionary with the
        filename as key and :class:`lib.faces.detected_face.aligned` object as value. """
        return self._aligned_faces

    @property
    def versions(self):
        """ dict: The "a", "b" keys for each side, with value being the alignment file version
        that provided the data. This is used to crop the faces correctly based on whether the
        extracted faces are legacy or full-head extracts. """
        return self._alignments_version
    def aligned_faces(self):
        """ dict: The "a", "b" keys for each side, containing a sub-dictionary with the
        filename as key and :class:`lib.faces.detected_face.aligned` object as value. """
        return self._aligned_faces

    @property
    def versions(self):
        """ dict: The "a", "b" keys for each side, with value being the alignment file version
        that provided the data. This is used to crop the faces correctly based on whether the
        extracted faces are legacy or full-head extracts. """
        return self._alignments_version
  
      def _get_alignments_paths(self):
          """ Obtain the alignments file paths from the command line arguments passed to the model.
  
          If the argument does not exist or is empty, then scan the input folder for an alignments
keep keep keep keep replace replace replace keep keep keep keep keep
 Extract - Increase area and move centering (#1095)

* Extract
  - Implement aligner re-feeding
  - Add extract type to pipeline.ExtractMedia
  - Add pose annotation to debug
* Convert
  - implement centering
  - remove usage of feed and reference face properties
  - Remove distributed option from convert
  - Force update of alignments file on legacy receive
* Train
  - Resize preview image to model output size
  - Force legacy centering if centering does not exist in model's state file
  - Enable training on legacy face sets

* Alignments Tool
  - Update draw to include head/pose
  - Remove DFL drop + linting
  - Remove remove-frames job
  - remove align-eyes option
  - Update legacy masks to new extract type
  - Exit if attempting to merge version 1.0 alignments files with version 2.0 alignments files
  - Re-generate thumbnails on legacy upgrade
* Mask Tool
  - Update for new extract + bugfix full frame
* Manual Tool
  - Update to new extraction method
   - Disable legacy alignments,
   - extract box bugfix
   - extract faces - size to 512 and center on head
* Preview Tool
  - Display based on model centering
* Sort Tool
  - Use alignments for sort by face

* lib.aligner
  - Add Pose Class
  - Add AlignedFace Class
  - center _MEAN_FACE on x
  - Add meta information with versioning to alignments file
  - lib.aligner.get_align_matrix to use landmarks not face
  - Refactor aligned faces in lib.faces_detect
* lib.logger
  - larger file log padding
* lib.config
  - Fix global changeable_items
* lib.face_filter
  - Use new extracted face images
* lib.image
  - bump thumbnail default size to 96px 
plugins/train/trainer/_base.py