      """
      def __init__(self, detector, aligner, loglevel,
                   configfile=None, multiprocess=False, rotate_images=None, min_size=20,
                   normalize_method=None):
          logger.debug("Initializing %s: (detector: %s, aligner: %s, loglevel: %s, configfile: %s, "
                       "multiprocess: %s, rotate_images: %s, min_size: %s, "
                       "normalize_method: %s)", self.__class__.__name__, detector, aligner,
                       loglevel, configfile, multiprocess, rotate_images, min_size,
                       normalize_method)
          self.phase = "detect"
 
</s> remove                      loglevel, configfile, multiprocess, rotate_images, min_size,
                     normalize_method)
 </s> add                      configfile, multiprocess, rotate_images, min_size, normalize_method) </s> remove     def __init__(self, detector, aligner, loglevel,
 </s> add     def __init__(self, detector, aligner, </s> remove                      "detector: %s, aligner: %s. loglevel: %s, multiprocess: %s, threshold: %s)",
 </s> add                      "detector: %s, aligner: %s, multiprocess: %s, threshold: %s)",
 </s> remove                      detector, aligner, loglevel, multiprocess, threshold)
        self.numeric_loglevel = get_loglevel(loglevel)
 </s> add                      detector, aligner, multiprocess, threshold)
 </s> remove     def __init__(self, reference_file_paths, nreference_file_paths, detector, aligner, loglevel,
 </s> add     def __init__(self, reference_file_paths, nreference_file_paths, detector, aligner,

        logger.debug("Initializing %s: (detector: %s, aligner: %s, configfile: %s, "
      """
      def __init__(self, detector, aligner, loglevel,
                   configfile=None, multiprocess=False, rotate_images=None, min_size=20,
                   normalize_method=None):
        logger.debug("Initializing %s: (detector: %s, aligner: %s, configfile: %s, "
                       "multiprocess: %s, rotate_images: %s, min_size: %s, "
                       "normalize_method: %s)", self.__class__.__name__, detector, aligner,
                       loglevel, configfile, multiprocess, rotate_images, min_size,
                       normalize_method)
          self.phase = "detect"
keep keep keep keep 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 
plugins/extract/pipeline.py