mirror of
https://github.com/iperov/DeepFaceLab.git
synced 2025-08-19 13:09:56 -07:00
bugfixing and added debug preview on key bind 7
This commit is contained in:
parent
e9f923b582
commit
c83113ddc4
4 changed files with 30 additions and 5 deletions
|
@ -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:
|
||||||
|
|
|
@ -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())
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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 += "================"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue