                   multiprocess=False, threshold=0.4):
          logger.debug("Initializing %s: (reference_file_paths: %s, nreference_file_paths: %s, "
                       "detector: %s, aligner: %s. loglevel: %s, multiprocess: %s, threshold: %s)",
                       self.__class__.__name__, reference_file_paths, nreference_file_paths,
                       detector, aligner, loglevel, multiprocess, threshold)
          self.numeric_loglevel = get_loglevel(loglevel)
          self.vgg_face = VGGFace()
          self.filters = self.load_images(reference_file_paths, nreference_file_paths)
          self.align_faces(detector, aligner, loglevel, multiprocess)
          self.get_filter_encodings()
          self.threshold = threshold
 
</s> remove                      "detector: %s, aligner: %s. loglevel: %s, multiprocess: %s, threshold: %s)",
 </s> add                      "detector: %s, aligner: %s, multiprocess: %s, threshold: %s)",
 </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,
 </s> remove         logger.debug("Initializing %s: (detector: %s, aligner: %s, loglevel: %s, configfile: %s, "
 </s> add         logger.debug("Initializing %s: (detector: %s, aligner: %s, configfile: %s, " </s> remove         self.align_faces(detector, aligner, loglevel, multiprocess)
 </s> add         # TODO Revert face-filter to use the selected detector and aligner.
        # Currently Tensorflow does not release vram after it has been allocated
        # Whilst this vram can still be used, the pipeline for the extraction process can't see
        # it so thinks there is not enough vram available.
        # Either the pipeline will need to be changed to be re-usable by face-filter and extraction
        # Or another vram measurement technique will need to be implemented to for when TF has
        # already performed allocation. For now we force CPU detectors.

        # self.align_faces(detector, aligner, multiprocess)
        self.align_faces("cv2-dnn", "cv2-dnn", multiprocess)

 </s> remove                      loglevel, configfile, multiprocess, rotate_images, min_size,
                     normalize_method)
 </s> add                      configfile, multiprocess, rotate_images, min_size, normalize_method)
                     detector, aligner, multiprocess, threshold)

                   multiprocess=False, threshold=0.4):
          logger.debug("Initializing %s: (reference_file_paths: %s, nreference_file_paths: %s, "
                       "detector: %s, aligner: %s. loglevel: %s, multiprocess: %s, threshold: %s)",
                       self.__class__.__name__, reference_file_paths, nreference_file_paths,
                     detector, aligner, multiprocess, threshold)
                     detector, aligner, multiprocess, threshold)
          self.vgg_face = VGGFace()
          self.filters = self.load_images(reference_file_paths, nreference_file_paths)
          self.align_faces(detector, aligner, loglevel, multiprocess)
          self.get_filter_encodings()
          self.threshold = threshold
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 
lib/face_filter.py