                       multiprocess, rotate_images, min_size, normalize_method)
          self.phase = "detect"
          self._queue_size = 32
          self._vram_buffer = 320  # Leave a buffer for VRAM allocation
          self._detector = self._load_detector(detector, rotate_images, min_size, configfile)
          self._aligner = self._load_aligner(aligner, configfile, normalize_method)
          self._masker = self._load_masker(masker, configfile)
          self._is_parallel = self._set_parallel_processing(multiprocess)
          self._set_extractor_batchsize()
          self._queues = self._add_queues()
          logger.debug("Initialized %s", self.__class__.__name__)
  
 
</s> remove         self.phase = "detect"
 </s> add         self._flow = ["detect", "align", "mask"]
        self.phase = self._flow[0] </s> remove             if task == "extract_detect_in" or (not self._is_parallel
                                               and task == "extract_align_in"):
 </s> add             if task == "extract_{}_in".format(self._flow[0]) or (not self._is_parallel
                                                                 and not task.endswith("_out")): </s> remove     def _load_detector(detector, rotation, min_size, configfile):
 </s> add     def _load_align(aligner, configfile, normalize_method):
        """ Set global arguments and load aligner plugin """
        aligner_name = aligner.replace("-", "_").lower()
        logger.debug("Loading Aligner: '%s'", aligner_name)
        aligner = PluginLoader.get_aligner(aligner_name)(configfile=configfile,
                                                         normalize_method=normalize_method)
        return aligner

    @staticmethod
    def _load_detect(detector, rotation, min_size, configfile): </s> remove         self.input_size = 256  # Overide for model specific input_size
        self.blur_kernel = 5  # Overide for model specific blur_kernel size
        self.coverage_ratio = 1.0  # Overide for model specific coverage_ratio
 </s> add         self.input_size = 256  # Override for model specific input_size
        self.blur_kernel = 5  # Override for model specific blur_kernel size
        self.coverage_ratio = 1.0  # Override for model specific coverage_ratio </s> remove         tasks = ["extract_detect_in", "extract_align_in", "extract_mask_in", "extract_mask_out"]
 </s> add         tasks = ["extract_{}_in".format(phase) for phase in self._flow]
        tasks.append("extract_{}_out".format(self._final_phase))
        self._detect = self._load_detect(detector, rotate_images, min_size, configfile)
        self._align = self._load_align(aligner, configfile, normalize_method)
        self._mask = self._load_mask(masker, configfile)
                       multiprocess, rotate_images, min_size, normalize_method)
          self.phase = "detect"
          self._queue_size = 32
          self._vram_buffer = 320  # Leave a buffer for VRAM allocation
        self._detect = self._load_detect(detector, rotate_images, min_size, configfile)
        self._align = self._load_align(aligner, configfile, normalize_method)
        self._mask = self._load_mask(masker, configfile)
        self._detect = self._load_detect(detector, rotate_images, min_size, configfile)
        self._align = self._load_align(aligner, configfile, normalize_method)
        self._mask = self._load_mask(masker, configfile)
        self._detect = self._load_detect(detector, rotate_images, min_size, configfile)
        self._align = self._load_align(aligner, configfile, normalize_method)
        self._mask = self._load_mask(masker, configfile)
          self._is_parallel = self._set_parallel_processing(multiprocess)
          self._set_extractor_batchsize()
          self._queues = self._add_queues()
          logger.debug("Initialized %s", self.__class__.__name__)
  
keep keep keep keep replace replace replace keep keep keep keep keep
 Smart Mask - Extract code review

- Lint simple_tests.py
- Only reformat alignments file if it exists otherwise change filename
- Update legacy alignments to new format at all stages
- faces_detect.Mask.from_dict - logging format fix
- convert.py fix otf for new pipeline
- cli.py - Add note that masks not used. Revert convert masks
- faces_detect.py - Revert non-extract code
- Add .p and .pickle extensions for serializer
- plugins/extract revert some changes
- scripts/fsmedia - Revert code changes
- Pipeline - cleanup
- Consistant alpha channel stripping (fixes single-process)
- Store landmarks as numpy array
- Code attribution
- Normalize feed face and reference face to 0.0 - 1.0 in convert
- Lock in mask VRAM sized
- Add documentation to plugin_loader
- Update alignments tool to work with new format 
plugins/extract/pipeline.py