bugfixing and added debug preview on key bind 7

This commit is contained in:
Jan 2021-11-27 18:51:13 +01:00
commit c83113ddc4
4 changed files with 30 additions and 5 deletions

View file

@ -22,6 +22,8 @@ def blursharpen (img, sharpen_mode=0, kernel_size=3, amount=100):
blur = cv2.GaussianBlur(img, (kernel_size, kernel_size) , 0) blur = cv2.GaussianBlur(img, (kernel_size, kernel_size) , 0)
img = cv2.addWeighted(img, 1.0 + (0.5 * amount), blur, -(0.5 * amount), 0) img = cv2.addWeighted(img, 1.0 + (0.5 * amount), blur, -(0.5 * amount), 0)
return img return img
elif sharpen_mode == 3: #unsharpen_mask
img = unsharpen_mask(img, amount=amount)
elif amount < 0: elif amount < 0:
n = -amount n = -amount
while n > 0: while n > 0:

View file

@ -336,6 +336,7 @@ class InteractiveMergerSubprocessor(Subprocessor):
'(' : lambda cfg,shift_pressed: cfg.add_morph_power(1), '(' : lambda cfg,shift_pressed: cfg.add_morph_power(1),
'*' : lambda cfg,shift_pressed: cfg.add_morph_power(-1), '*' : lambda cfg,shift_pressed: cfg.add_morph_power(-1),
'b' : lambda cfg,shift_pressed: cfg.toggle_two_pass(), 'b' : lambda cfg,shift_pressed: cfg.toggle_two_pass(),
'7' : lambda cfg,shift_pressed: cfg.toggle_debug_mode(),
} }
self.masked_keys = list(self.masked_keys_funcs.keys()) self.masked_keys = list(self.masked_keys_funcs.keys())

View file

@ -16,7 +16,7 @@ def MergeMaskedFace (predictor_func, predictor_input_shape,
face_enhancer_func, face_enhancer_func,
xseg_256_extract_func, xseg_256_extract_func,
cfg, frame_info, img_bgr_uint8, img_bgr, img_face_landmarks, dfl_img): cfg, frame_info, img_bgr_uint8, img_bgr, img_face_landmarks, dfl_img):
img_size = img_bgr.shape[1], img_bgr.shape[0] img_size = img_bgr.shape[1], img_bgr.shape[0]
img_face_mask_a = LandmarksProcessor.get_image_hull_mask (img_bgr.shape, img_face_landmarks) img_face_mask_a = LandmarksProcessor.get_image_hull_mask (img_bgr.shape, img_face_landmarks)
@ -61,12 +61,13 @@ def MergeMaskedFace (predictor_func, predictor_input_shape,
dst_face_mask_a_0 = cv2.warpAffine( img_face_mask_a, face_mat, (output_size, output_size), flags=cv2.INTER_CUBIC ) dst_face_mask_a_0 = cv2.warpAffine( img_face_mask_a, face_mat, (output_size, output_size), flags=cv2.INTER_CUBIC )
dst_face_mask_a_0 = np.clip(dst_face_mask_a_0, 0, 1) dst_face_mask_a_0 = np.clip(dst_face_mask_a_0, 0, 1)
if cfg.pre_sharpen_mode > 0 and cfg.pre_sharpen_power != 0: if cfg.pre_sharpen_mode > 0 and cfg.pre_sharpen_power != 0:
if cfg.pre_sharpen_mode==1: if cfg.pre_sharpen_mode==1:
dst_face_bgr = imagelib.gaussian_sharpen(dst_face_bgr, amount=cfg.pre_sharpen_power) dst_face_bgr = imagelib.gaussian_sharpen(dst_face_bgr, amount=cfg.pre_sharpen_power)
elif cfg.pre_sharpen_mode==2: elif cfg.pre_sharpen_mode==2:
dst_face_bgr = imagelib.unsharpen_mask(dst_face_bgr, amount=cfg.pre_sharpen_power) dst_face_bgr = imagelib.unsharpen_mask(dst_face_bgr, amount=cfg.pre_sharpen_power)
dst_face_bgr = np.clip(dst_face_bgr, 0, 1, out=dst_face_bgr) dst_face_bgr = np.clip(dst_face_bgr, 0, 1, out=dst_face_bgr)
predictor_input_bgr = cv2.resize (dst_face_bgr, (input_size,input_size) ) predictor_input_bgr = cv2.resize (dst_face_bgr, (input_size,input_size) )
@ -79,11 +80,16 @@ def MergeMaskedFace (predictor_func, predictor_input_shape,
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)
if cfg.two_pass: if cfg.two_pass:
predicted_2 = predictor_func (prd_face_bgr, func_morph_factor = 1.0) if cfg.is_morphable else predictor_func (prd_face_bgr) predicted_2 = predictor_func (prd_face_bgr, func_morph_factor = 1) if cfg.is_morphable else predictor_func (prd_face_bgr)
prd_face_bgr = np.clip (predicted_2[0], 0, 1.0) prd_face_bgr = np.clip (predicted_2[0], 0, 1.0)
prd_face_mask_a_0 = np.clip (predicted_2[1], 0, 1.0) prd_face_mask_a_0 = np.clip (predicted_2[1], 0, 1.0)
prd_face_dst_mask_a_0 = np.clip (predicted_2[2], 0, 1.0) prd_face_dst_mask_a_0 = np.clip (predicted_2[2], 0, 1.0)
if cfg.debug_mode:
prd_face_bgr_unchanged = prd_face_bgr.copy()
if cfg.super_resolution_power != 0: if cfg.super_resolution_power != 0:
prd_face_bgr_enhanced = face_enhancer_func(prd_face_bgr, is_tanh=True, preserve_size=False) prd_face_bgr_enhanced = face_enhancer_func(prd_face_bgr, is_tanh=True, preserve_size=False)
@ -350,6 +356,15 @@ def MergeMaskedFace (predictor_func, predictor_input_shape,
if out_img is None: if out_img is None:
out_img = img_bgr.copy() out_img = img_bgr.copy()
if 'raw' not in cfg.mode and cfg.debug_mode:
ph, pw = predictor_input_bgr.shape[:2]
oh, ow = out_img.shape[:2]
out_img[oh-ph:,ow-pw:] = predictor_input_bgr
ph, pw = prd_face_bgr_unchanged.shape[:2]
out_img[oh-ph:,0:pw] = prd_face_bgr_unchanged
return out_img, out_merging_mask_a return out_img, out_merging_mask_a

View file

@ -21,7 +21,7 @@ class MergerConfig(object):
): ):
self.type = type self.type = type
self.sharpen_dict = {0:"None", 1:'box', 2:'gaussian'} self.sharpen_dict = {0:"None", 1:'box', 2:'gaussian', 3:'unsharpen'}
#default changeable params #default changeable params
self.sharpen_mode = sharpen_mode self.sharpen_mode = sharpen_mode
@ -122,6 +122,7 @@ class MergerConfigMasked(MergerConfig):
two_pass = False, two_pass = False,
morph_power = 100, morph_power = 100,
is_morphable = False, is_morphable = False,
debug_mode = False,
**kwargs **kwargs
): ):
@ -155,6 +156,7 @@ class MergerConfigMasked(MergerConfig):
self.pre_sharpen_mode = pre_sharpen_mode self.pre_sharpen_mode = pre_sharpen_mode
self.morph_power = morph_power self.morph_power = morph_power
self.is_morphable = is_morphable self.is_morphable = is_morphable
self.debug_mode = debug_mode
def copy(self): def copy(self):
return copy.copy(self) return copy.copy(self)
@ -169,6 +171,9 @@ class MergerConfigMasked(MergerConfig):
def toggle_two_pass(self): def toggle_two_pass(self):
self.two_pass = not self.two_pass self.two_pass = not self.two_pass
def toggle_debug_mode(self):
self.debug_mode = not self.debug_mode
def toggle_sharpen_mode_multi(self, pre_sharpen=False): def toggle_sharpen_mode_multi(self, pre_sharpen=False):
if pre_sharpen: if pre_sharpen:
@ -296,7 +301,8 @@ class MergerConfigMasked(MergerConfig):
self.pre_sharpen_mode == other.pre_sharpen_mode and \ self.pre_sharpen_mode == other.pre_sharpen_mode and \
self.two_pass == other.two_pass and \ self.two_pass == other.two_pass and \
self.morph_power == other.morph_power and \ self.morph_power == other.morph_power and \
self.is_morphable == other.is_morphable self.is_morphable == other.is_morphable and \
self.debug_mode == other.debug_mode
return False return False
@ -337,6 +343,7 @@ class MergerConfigMasked(MergerConfig):
r += f"""two_pass: {self.two_pass}\n""" r += f"""two_pass: {self.two_pass}\n"""
r += f"""morph_power: {self.morph_power}\n""" r += f"""morph_power: {self.morph_power}\n"""
#r += f"""is_morphable: {self.is_morphable}\n""" #r += f"""is_morphable: {self.is_morphable}\n"""
r += f"""debug_mode: {self.debug_mode}\n"""
r += "================" r += "================"