                  self.aligned["matrix"],
                  size,
                  padding)
          logger.trace("Loaded aligned face: %s", {key: val
                                                   for key, val in self.aligned.items()
                                                   if key != "face"})
  
      def padding_from_coverage(self, size, coverage_ratio):
 
</s> remove             self.aligned["face"] = AlignerExtract().transform(
 </s> add             face = AlignerExtract().transform( </s> remove         logger.trace("Loading aligned face: (size: %s, align_eyes: %s)", size, align_eyes)
        padding = int(size * 0.1875)
 </s> add         logger.trace("Loading aligned face: (size: %s, align_eyes: %s, dtype: %s)",
                     size, align_eyes, dtype)
        padding = int(size * self.extract_ratio) // 2 </s> remove     def load_aligned(self, image, size=256, align_eyes=False):
 </s> add     def load_aligned(self, image, size=256, align_eyes=False, dtype=None): </s> remove     @property
    def changeable_items(self):
        """ Training only.
            Return a dict of config items with their set values for items
            that can be altered after the model has been created """
        retval = dict()
        for sect in ("global", self.section):
            for key, val in self.defaults[sect].items():
                if key == "helptext" or val["fixed"]:
                    continue
                retval[key] = self.get(sect, key)
        logger.debug("Alterable for existing models: %s", retval)
        return retval

 </s> add 
            self.aligned["face"] = face if dtype is None else face.astype(dtype)

                  self.aligned["matrix"],
                  size,
                  padding)
            self.aligned["face"] = face if dtype is None else face.astype(dtype)

          logger.trace("Loaded aligned face: %s", {key: val
                                                   for key, val in self.aligned.items()
                                                   if key != "face"})
  
      def padding_from_coverage(self, size, coverage_ratio):
keep keep add keep keep keep keep keep
 Convert refactor (#703)

* Separate predict and implement pool

* Add check and raise error to multithreading

Box functions to config. Add crop box option.

* All masks to mask module. Refactor convert masks

Predicted mask passed from model. Cli update

* Intesect box with mask and fixes

* Use raw NN output for convert

Use raw mask for face adjustments. Split adjustments to pre and post warp

* Separate out adjustments. Add unmask sharpen

* Set sensible defaults. Pre PR Testing

* Fix queue sizes. Move masked.py to lib

* Fix Skip Frames. Fix GUI Config popup

* Sensible queue limits. Add a less resource intensive single processing mode

* Fix predicted mask. Amend smooth box defaults

* Deterministic ordering for video output

* Video to Video convert implemented

* Fixups

- Remove defaults from folders across all stages
- Move match-hist and aca into color adjustments selectable
- Handle crashes properly for pooled processes
- Fix output directory does not exist error when creating a new output folder
- Force output to frames if input is not a video

* Add Color Transfer adjustment method

Wrap info text in GUI plugin configure popup

* Refactor image adjustments. Easier to create plugins

Start implementing config options for video encoding

* Add video encoding config options

Allow video encoding for frames input (must pass in a reference video)
Move video and image output writers to plugins

* Image writers config options

Move scaling to cli
Move draw_transparent to images config
Add config options for cv2 writer
Add Pillow image writer

* Add gif filetype to Pillow. Fix draw transparent for Pillow

* Add Animated GIF writer

standardize opencv/pillow defaults

* [speedup] Pre-encode supported writers in the convert pool (opencv, pillow)

Move scaling to convert pool
Remove dfaker mask

* Fix default writer

* Bugfixes

* Better custom argparse formatting 
lib/faces_detect.py