          self.interface = interface
          self.alignments = interface.alignments
          self.frames = interface.frames
  
          self.extractor = dict()
          self.init_extractor(loglevel)
  
          self.mouse_state = None
          self.last_move = None
          self.center = None
          self.dims = None
 
</s> remove                                    self.args.loglevel,
 </s> add  </s> remove         self.landmarksXY = landmarksXY
        self.hash = None  # Hash must be set when the file is saved due to image compression
 </s> add         self.landmarks_xy = landmarks_xy
        self.hash = None
        """ str: The hash of the face. This cannot be set until the file is saved due to image
        compression, but will be set if loading data from :func:`from_alignment` """ </s> remove         self.landmarksXY = alignment["landmarksXY"]
 </s> add         self.landmarks_xy = alignment["landmarks_xy"] </s> remove         # The input and output queues for the plugin.
        # See lib.queue_manager.QueueManager for getting queues
        self.queues = {"in": None, "out": None}
 </s> add     Other Parameters
    ----------------
    configfile: str, optional
        Path to a custom configuration ``ini`` file. Default: Use system configfile </s> remove         git_model_id = 0
        model_filename = "face-alignment-network_2d4_v1.pb"
        super().__init__(git_model_id=git_model_id,
                         model_filename=model_filename,
                         colorspace="RGB",
                         input_size=256,
                         **kwargs)
 </s> add         git_model_id = 9
        model_filename = "face-alignment-network_2d4_keras_v1.h5"
        super().__init__(git_model_id=git_model_id, model_filename=model_filename, **kwargs)
        self.name = "FAN"
        self.input_size = 256
        self.colorformat = "RGB"
        self.queues = dict()
        self.extractor = self.init_extractor()
          self.interface = interface
          self.alignments = interface.alignments
          self.frames = interface.frames
  
        self.queues = dict()
        self.extractor = self.init_extractor()
        self.queues = dict()
        self.extractor = self.init_extractor()
  
          self.mouse_state = None
          self.last_move = None
          self.center = None
          self.dims = None
keep keep keep keep replace replace keep keep keep keep keep
 De-Multiprocess Extract (#871)

* requirements.txt: - Pin opencv to 4.1.1 (fixes cv2-dnn error)

* lib.face_detect.DetectedFace: change LandmarksXY to landmarks_xy. Add left, right, top, bottom attributes

* lib.model.session: Session manager for loading models into different graphs (for Nvidia + CPU)

* plugins.extract._base: New parent class for all extract plugins

* plugins.extract.pipeline. Remove MultiProcessing. Dynamically limit batchsize for Nvidia cards. Remove loglevel input

* S3FD + FAN plugins. Standardise to Keras version for all backends

* Standardize all extract plugins to new threaded codebase

* Documentation. Start implementing Numpy style docstrings for Sphinx Documentation

* Remove s3fd_amd. Change convert OTF to expect DetectedFace object

* faces_detect - clean up and documentation

* Remove PoolProcess

* Migrate manual tool to new extract workflow

* Remove AMD specific extractor code from cli and plugins

* Sort tool to new extract workflow

* Remove multiprocessing from project

* Remove multiprocessing queues from QueueManager

* Remove multiprocessing support from logger

* Move face_filter to new extraction pipeline

* Alignments landmarksXY > landmarks_xy and legacy handling

* Intercept get_backend for sphinx doc build

# Add Sphinx documentation 
tools/lib_alignments/jobs_manual.py