mirror of
https://github.com/iperov/DeepFaceLab.git
synced 2025-08-19 21:13:20 -07:00
added morp_factor as interactive option on key bing * ( -> shift + 8 / shift + 9
This commit is contained in:
parent
d3334916d2
commit
e3c5dae195
4 changed files with 25 additions and 9 deletions
|
@ -333,6 +333,8 @@ class InteractiveMergerSubprocessor(Subprocessor):
|
|||
'n' : lambda cfg,shift_pressed: cfg.toggle_sharpen_mode(),
|
||||
'9' : lambda cfg,shift_pressed: cfg.add_pre_sharpen_power(1),
|
||||
'8' : lambda cfg,shift_pressed: cfg.add_pre_sharpen_power(-1),
|
||||
'(' : lambda cfg,shift_pressed: cfg.add_morph_power(1),
|
||||
'*' : lambda cfg,shift_pressed: cfg.add_morph_power(-1),
|
||||
}
|
||||
self.masked_keys = list(self.masked_keys_funcs.keys())
|
||||
|
||||
|
|
|
@ -67,7 +67,8 @@ def MergeMaskedFace (predictor_func, predictor_input_shape,
|
|||
|
||||
predictor_input_bgr = cv2.resize (dst_face_bgr, (input_size,input_size) )
|
||||
|
||||
predicted = predictor_func (predictor_input_bgr)
|
||||
|
||||
predicted = predictor_func (predictor_input_bgr, func_morph_factor = cfg.morph_power/100.0) if cfg.is_morphable else predictor_func (predictor_input_bgr)
|
||||
prd_face_bgr = np.clip (predicted[0], 0, 1.0)
|
||||
prd_face_mask_a_0 = np.clip (predicted[1], 0, 1.0)
|
||||
prd_face_dst_mask_a_0 = np.clip (predicted[2], 0, 1.0)
|
||||
|
|
|
@ -115,6 +115,8 @@ class MergerConfigMasked(MergerConfig):
|
|||
bicubic_degrade_power = 0,
|
||||
color_degrade_power = 0,
|
||||
pre_sharpen_power = 0,
|
||||
morph_power = 100,
|
||||
is_morphable = False,
|
||||
**kwargs
|
||||
):
|
||||
|
||||
|
@ -144,6 +146,8 @@ class MergerConfigMasked(MergerConfig):
|
|||
self.bicubic_degrade_power = bicubic_degrade_power
|
||||
self.color_degrade_power = color_degrade_power
|
||||
self.pre_sharpen_power = pre_sharpen_power
|
||||
self.morph_power = morph_power
|
||||
self.is_morphable = is_morphable
|
||||
|
||||
def copy(self):
|
||||
return copy.copy(self)
|
||||
|
@ -192,6 +196,10 @@ class MergerConfigMasked(MergerConfig):
|
|||
|
||||
def add_pre_sharpen_power(self, diff):
|
||||
self.pre_sharpen_power = np.clip ( self.pre_sharpen_power+diff, 0, 200)
|
||||
|
||||
def add_morph_power(self, diff):
|
||||
if self.is_morphable:
|
||||
self.morph_power = np.clip ( self.morph_power+diff , 0, 100)
|
||||
|
||||
def ask_settings(self):
|
||||
s = """Choose mode: \n"""
|
||||
|
@ -221,6 +229,9 @@ class MergerConfigMasked(MergerConfig):
|
|||
self.motion_blur_power = np.clip ( io.input_int ("Choose motion blur power", 0, add_info="0..100"), 0, 100)
|
||||
|
||||
self.pre_sharpen_power = np.clip (io.input_int ("Choose pre_sharpen power", 0, help_message="Can enhance results by pre sharping before feeding it to the network.", add_info="0..100" ), 0, 200)
|
||||
|
||||
if self.is_morphable:
|
||||
self.morph_power = np.clip (io.input_int ("Choose morph_power for moprhable models", 100, add_info="0..100" ), 0, 100)
|
||||
|
||||
|
||||
self.output_face_scale = np.clip (io.input_int ("Choose output face scale modifier", 0, add_info="-50..50" ), -50, 50)
|
||||
|
@ -258,7 +269,9 @@ class MergerConfigMasked(MergerConfig):
|
|||
self.image_denoise_power == other.image_denoise_power and \
|
||||
self.bicubic_degrade_power == other.bicubic_degrade_power and \
|
||||
self.color_degrade_power == other.color_degrade_power and \
|
||||
self.pre_sharpen_power == other.pre_sharpen_power
|
||||
self.pre_sharpen_power == other.pre_sharpen_power and \
|
||||
self.morph_power == other.morph_power and \
|
||||
self.is_morphable == other.is_morphable
|
||||
|
||||
return False
|
||||
|
||||
|
@ -295,6 +308,8 @@ class MergerConfigMasked(MergerConfig):
|
|||
f"""color_degrade_power: {self.color_degrade_power}\n""")
|
||||
|
||||
r += f"""pre_sharpen_power: {self.pre_sharpen_power}\n"""
|
||||
r += f"""morph_power: {self.morph_power}\n"""
|
||||
r += f"""is_morphable: {self.is_morphable}\n"""
|
||||
|
||||
r += "================"
|
||||
|
||||
|
|
|
@ -798,13 +798,11 @@ class AMPModel(ModelBase):
|
|||
|
||||
#override
|
||||
def get_MergerConfig(self):
|
||||
morph_factor = np.clip ( io.input_number ("Morph factor", 1.0, add_info="0.0 .. 1.0"), 0.0, 1.0 )
|
||||
|
||||
def predictor_morph(face):
|
||||
return self.predictor_func(face, morph_factor)
|
||||
|
||||
|
||||
def predictor_morph(face, func_morph_factor=1.0):
|
||||
return self.predictor_func(face, func_morph_factor)
|
||||
|
||||
import merger
|
||||
return predictor_morph, (self.options['resolution'], self.options['resolution'], 3), merger.MergerConfigMasked(face_type=self.face_type, default_mode = 'overlay')
|
||||
|
||||
return predictor_morph, (self.options['resolution'], self.options['resolution'], 3), merger.MergerConfigMasked(face_type=self.face_type, default_mode = 'overlay', is_morphable=True)
|
||||
|
||||
Model = AMPModel
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue