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(),
|
'n' : lambda cfg,shift_pressed: cfg.toggle_sharpen_mode(),
|
||||||
'9' : lambda cfg,shift_pressed: cfg.add_pre_sharpen_power(1),
|
'9' : lambda cfg,shift_pressed: cfg.add_pre_sharpen_power(1),
|
||||||
'8' : 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())
|
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) )
|
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_bgr = np.clip (predicted[0], 0, 1.0)
|
||||||
prd_face_mask_a_0 = np.clip (predicted[1], 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)
|
prd_face_dst_mask_a_0 = np.clip (predicted[2], 0, 1.0)
|
||||||
|
|
|
@ -115,6 +115,8 @@ class MergerConfigMasked(MergerConfig):
|
||||||
bicubic_degrade_power = 0,
|
bicubic_degrade_power = 0,
|
||||||
color_degrade_power = 0,
|
color_degrade_power = 0,
|
||||||
pre_sharpen_power = 0,
|
pre_sharpen_power = 0,
|
||||||
|
morph_power = 100,
|
||||||
|
is_morphable = False,
|
||||||
**kwargs
|
**kwargs
|
||||||
):
|
):
|
||||||
|
|
||||||
|
@ -144,6 +146,8 @@ class MergerConfigMasked(MergerConfig):
|
||||||
self.bicubic_degrade_power = bicubic_degrade_power
|
self.bicubic_degrade_power = bicubic_degrade_power
|
||||||
self.color_degrade_power = color_degrade_power
|
self.color_degrade_power = color_degrade_power
|
||||||
self.pre_sharpen_power = pre_sharpen_power
|
self.pre_sharpen_power = pre_sharpen_power
|
||||||
|
self.morph_power = morph_power
|
||||||
|
self.is_morphable = is_morphable
|
||||||
|
|
||||||
def copy(self):
|
def copy(self):
|
||||||
return copy.copy(self)
|
return copy.copy(self)
|
||||||
|
@ -192,6 +196,10 @@ class MergerConfigMasked(MergerConfig):
|
||||||
|
|
||||||
def add_pre_sharpen_power(self, diff):
|
def add_pre_sharpen_power(self, diff):
|
||||||
self.pre_sharpen_power = np.clip ( self.pre_sharpen_power+diff, 0, 200)
|
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):
|
def ask_settings(self):
|
||||||
s = """Choose mode: \n"""
|
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.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)
|
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)
|
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.image_denoise_power == other.image_denoise_power and \
|
||||||
self.bicubic_degrade_power == other.bicubic_degrade_power and \
|
self.bicubic_degrade_power == other.bicubic_degrade_power and \
|
||||||
self.color_degrade_power == other.color_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
|
return False
|
||||||
|
|
||||||
|
@ -295,6 +308,8 @@ class MergerConfigMasked(MergerConfig):
|
||||||
f"""color_degrade_power: {self.color_degrade_power}\n""")
|
f"""color_degrade_power: {self.color_degrade_power}\n""")
|
||||||
|
|
||||||
r += f"""pre_sharpen_power: {self.pre_sharpen_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 += "================"
|
r += "================"
|
||||||
|
|
||||||
|
|
|
@ -798,13 +798,11 @@ class AMPModel(ModelBase):
|
||||||
|
|
||||||
#override
|
#override
|
||||||
def get_MergerConfig(self):
|
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, func_morph_factor=1.0):
|
||||||
def predictor_morph(face):
|
return self.predictor_func(face, func_morph_factor)
|
||||||
return self.predictor_func(face, morph_factor)
|
|
||||||
|
|
||||||
|
|
||||||
import merger
|
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
|
Model = AMPModel
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue