From e3c5dae195e5c0c55a8a67f29797527d4e030c59 Mon Sep 17 00:00:00 2001 From: Jan Date: Thu, 25 Nov 2021 16:54:13 +0100 Subject: [PATCH] added morp_factor as interactive option on key bing * ( -> shift + 8 / shift + 9 --- merger/InteractiveMergerSubprocessor.py | 2 ++ merger/MergeMasked.py | 3 ++- merger/MergerConfig.py | 17 ++++++++++++++++- models/Model_AMP/Model.py | 12 +++++------- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/merger/InteractiveMergerSubprocessor.py b/merger/InteractiveMergerSubprocessor.py index 0bbb259..d31349f 100644 --- a/merger/InteractiveMergerSubprocessor.py +++ b/merger/InteractiveMergerSubprocessor.py @@ -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()) diff --git a/merger/MergeMasked.py b/merger/MergeMasked.py index 4464c35..8101e02 100644 --- a/merger/MergeMasked.py +++ b/merger/MergeMasked.py @@ -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) diff --git a/merger/MergerConfig.py b/merger/MergerConfig.py index 989dfe0..7719a92 100644 --- a/merger/MergerConfig.py +++ b/merger/MergerConfig.py @@ -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 += "================" diff --git a/models/Model_AMP/Model.py b/models/Model_AMP/Model.py index da49054..f57b7b8 100644 --- a/models/Model_AMP/Model.py +++ b/models/Model_AMP/Model.py @@ -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