added morp_factor as interactive option on key bing * ( -> shift + 8 / shift + 9

This commit is contained in:
Jan 2021-11-25 16:54:13 +01:00
commit e3c5dae195
4 changed files with 25 additions and 9 deletions

View file

@ -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())

View file

@ -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)

View file

@ -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 += "================"

View file

@ -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