mirror of
https://github.com/zebrajr/faceswap.git
synced 2026-01-15 12:15:15 +00:00
- implement configurable re-align function in extract - update locales + documentation - re-factor align._base and split to separate modules - move normalization method to plugin parent - bugfix: FAN use zeros for pre-processing crop - lint AlignedFilter
136 lines
6.1 KiB
Python
136 lines
6.1 KiB
Python
#!/usr/bin/env python3
|
|
""" Default configurations for extract """
|
|
|
|
import logging
|
|
import os
|
|
|
|
from lib.config import FaceswapConfig
|
|
|
|
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
|
|
|
|
|
|
class Config(FaceswapConfig):
|
|
""" Config File for Extraction """
|
|
|
|
def set_defaults(self):
|
|
""" Set the default values for config """
|
|
logger.debug("Setting defaults")
|
|
self.set_globals()
|
|
self._defaults_from_plugin(os.path.dirname(__file__))
|
|
|
|
def set_globals(self):
|
|
"""
|
|
Set the global options for extract
|
|
"""
|
|
logger.debug("Setting global config")
|
|
section = "global"
|
|
self.add_section(title=section, info="Options that apply to all extraction plugins")
|
|
self.add_item(
|
|
section=section,
|
|
title="allow_growth",
|
|
datatype=bool,
|
|
default=False,
|
|
group="settings",
|
|
info="[Nvidia Only]. Enable the Tensorflow GPU `allow_growth` configuration option. "
|
|
"This option prevents Tensorflow from allocating all of the GPU VRAM at launch "
|
|
"but can lead to higher VRAM fragmentation and slower performance. Should only "
|
|
"be enabled if you are having problems running extraction.")
|
|
self.add_item(
|
|
section=section,
|
|
title="aligner_min_scale",
|
|
datatype=float,
|
|
min_max=(0.0, 1.0),
|
|
rounding=2,
|
|
default=0.07,
|
|
group="filters",
|
|
info="Filters out faces below this size. This is a multiplier of the minimum "
|
|
"dimension of the frame (i.e. 1280x720 = 720). If the original face extract "
|
|
"box is smaller than the minimum dimension times this multiplier, it is "
|
|
"considered a false positive and discarded. Faces which are found to be "
|
|
"unusually smaller than the frame tend to be misaligned images, except in "
|
|
"extreme long-shots. These can be usually be safely discarded.")
|
|
self.add_item(
|
|
section=section,
|
|
title="aligner_max_scale",
|
|
datatype=float,
|
|
min_max=(0.0, 10.0),
|
|
rounding=2,
|
|
default=2.00,
|
|
group="filters",
|
|
info="Filters out faces above this size. This is a multiplier of the minimum "
|
|
"dimension of the frame (i.e. 1280x720 = 720). If the original face extract "
|
|
"box is larger than the minimum dimension times this multiplier, it is "
|
|
"considered a false positive and discarded. Faces which are found to be "
|
|
"unusually larger than the frame tend to be misaligned images except in extreme "
|
|
"close-ups. These can be usually be safely discarded.")
|
|
self.add_item(
|
|
section=section,
|
|
title="aligner_distance",
|
|
datatype=float,
|
|
min_max=(0.0, 45.0),
|
|
rounding=1,
|
|
default=22.5,
|
|
group="filters",
|
|
info="Filters out faces who's landmarks are above this distance from an 'average' "
|
|
"face. Values above 15 tend to be fairly safe. Values above 10 will remove more "
|
|
"false positives, but may also filter out some faces at extreme angles.")
|
|
self.add_item(
|
|
section=section,
|
|
title="aligner_roll",
|
|
datatype=float,
|
|
min_max=(0.0, 90.0),
|
|
rounding=1,
|
|
default=45.0,
|
|
group="filters",
|
|
info="Filters out faces who's calculated roll is greater than zero +/- this value in "
|
|
"degrees. Aligned faces should have a roll value close to zero. Values that are a "
|
|
"significant distance from 0 degrees tend to be misaligned images. These can usually "
|
|
"be safely disgarded.")
|
|
self.add_item(
|
|
section=section,
|
|
title="aligner_features",
|
|
datatype=bool,
|
|
default=True,
|
|
group="filters",
|
|
info="Filters out faces where the lowest point of the aligned face's eye or eyebrow "
|
|
"is lower than the highest point of the aligned face's mouth. Any faces where this "
|
|
"occurs are misaligned and can be safely disgarded.")
|
|
self.add_item(
|
|
section=section,
|
|
title="filter_refeed",
|
|
datatype=bool,
|
|
default=True,
|
|
group="filters",
|
|
info="If enabled, and 're-feed' has been selected for extraction, then interim "
|
|
"alignments will be filtered prior to averaging the final landmarks. This can "
|
|
"help improve the final alignments by removing any obvious misaligns from the "
|
|
"interim results, and may also help pick up difficult alignments. If disabled, "
|
|
"then all re-feed results will be averaged.")
|
|
self.add_item(
|
|
section=section,
|
|
title="save_filtered",
|
|
datatype=bool,
|
|
default=False,
|
|
group="filters",
|
|
info="If enabled, saves any filtered out images into a sub-folder during the "
|
|
"extraction process. If disabled, filtered faces are deleted. Note: The faces "
|
|
"will always be filtered out of the alignments file, regardless of whether you "
|
|
"keep the faces or not.")
|
|
self.add_item(
|
|
section=section,
|
|
title="realign_refeeds",
|
|
datatype=bool,
|
|
default=True,
|
|
group="re-align",
|
|
info="If enabled, and 're-align' has been selected for extraction, then all re-feed "
|
|
"iterations are re-aligned. If disabled, then only the final averaged output "
|
|
"from re-feed will be re-aligned.")
|
|
self.add_item(
|
|
section=section,
|
|
title="filter_realign",
|
|
datatype=bool,
|
|
default=True,
|
|
group="re-align",
|
|
info="If enabled, and 're-align' has been selected for extraction, then any "
|
|
"alignments which would be filtered out will not be re-aligned.")
|