          self._scaling_fallback = 0.4
          self._vram_stats = self._get_vram_stats()
          self._detect = self._load_detect(detector, rotate_images, min_size, configfile)
          self._align = self._load_align(aligner, configfile, normalize_method, re_feed)
          self._mask = [self._load_mask(mask, image_is_aligned, configfile) for mask in masker]
          self._is_parallel = self._set_parallel_processing(multiprocess)
          self._phases = self._set_phases(multiprocess)
          self._phase_index = 0
          self._set_extractor_batchsize()
          self._queues = self._add_queues()
 
</s> remove         masker = [masker] if not isinstance(masker, list) else masker
        self._flow = self._set_flow(detector, aligner, masker)
 </s> add         maskers = [cast(Optional[str],
                   masker)] if not isinstance(masker, list) else cast(List[Optional[str]], masker)
        self._flow = self._set_flow(detector, aligner, maskers) </s> remove             mask = mask.get_full_frame_mask(face.shape[1], face.shape[0])
            mask = np.expand_dims(mask, -1)
 </s> add             imask = mask.get_full_frame_mask(face.shape[1], face.shape[0])
            imask = np.expand_dims(imask, -1) </s> remove             masked = (face.astype("float32") * mask.astype("float32") / 255.).astype("uint8")
            mask = np.tile(mask, 3)
            for img in (face, masked, mask):
 </s> add             masked = (face.astype("float32") * imask.astype("float32") / 255.).astype("uint8")
            imask = np.tile(imask, 3)
            for img in (face, masked, imask): </s> remove                 out_image = np.concatenate((face, masked, mask), axis=1)
 </s> add                 out_image = np.concatenate((face, masked, imask), axis=1) </s> remove             out_image = np.concatenate([face, mask], axis=-1)
 </s> add             out_image = np.concatenate([face, imask], axis=-1)
        self._mask = [self._load_mask(mask, image_is_aligned, configfile) for mask in maskers]
          self._scaling_fallback = 0.4
          self._vram_stats = self._get_vram_stats()
          self._detect = self._load_detect(detector, rotate_images, min_size, configfile)
          self._align = self._load_align(aligner, configfile, normalize_method, re_feed)
        self._mask = [self._load_mask(mask, image_is_aligned, configfile) for mask in maskers]
          self._is_parallel = self._set_parallel_processing(multiprocess)
          self._phases = self._set_phases(multiprocess)
          self._phase_index = 0
          self._set_extractor_batchsize()
          self._queues = self._add_queues()
keep keep keep keep replace keep keep keep keep keep
 Minor updates and fixups
  - Mask Tool - Typing + BiSeNet mask update fix
  - Alignments Tool - Auto search for alignments file 
plugins/extract/pipeline.py