mirror of
https://github.com/iperov/DeepFaceLab.git
synced 2025-07-07 05:22:06 -07:00
Merger: added mask mode ‘learned-prd + learned-dst’ – produces largest area of both dst and predicted masks
This commit is contained in:
parent
d1af3b51cd
commit
2cc0e64572
2 changed files with 14 additions and 11 deletions
|
@ -66,27 +66,29 @@ def MergeMaskedFace (predictor_func, predictor_input_shape,
|
||||||
wrk_face_mask_a_0 = prd_face_dst_mask_a_0
|
wrk_face_mask_a_0 = prd_face_dst_mask_a_0
|
||||||
elif cfg.mask_mode == 4: #learned-prd*learned-dst
|
elif cfg.mask_mode == 4: #learned-prd*learned-dst
|
||||||
wrk_face_mask_a_0 = prd_face_mask_a_0*prd_face_dst_mask_a_0
|
wrk_face_mask_a_0 = prd_face_mask_a_0*prd_face_dst_mask_a_0
|
||||||
elif cfg.mask_mode >= 5 and cfg.mask_mode <= 8: #XSeg modes
|
elif cfg.mask_mode == 5: #learned-prd+learned-dst
|
||||||
if cfg.mask_mode == 5 or cfg.mask_mode == 7 or cfg.mask_mode == 8:
|
wrk_face_mask_a_0 = np.clip( prd_face_mask_a_0+prd_face_dst_mask_a_0, 0, 1)
|
||||||
|
elif cfg.mask_mode >= 6 and cfg.mask_mode <= 9: #XSeg modes
|
||||||
|
if cfg.mask_mode == 6 or cfg.mask_mode == 8 or cfg.mask_mode == 9:
|
||||||
# obtain XSeg-prd
|
# obtain XSeg-prd
|
||||||
prd_face_xseg_bgr = cv2.resize (prd_face_bgr, (xseg_input_size,)*2, cv2.INTER_CUBIC)
|
prd_face_xseg_bgr = cv2.resize (prd_face_bgr, (xseg_input_size,)*2, cv2.INTER_CUBIC)
|
||||||
prd_face_xseg_mask = xseg_256_extract_func(prd_face_xseg_bgr)
|
prd_face_xseg_mask = xseg_256_extract_func(prd_face_xseg_bgr)
|
||||||
X_prd_face_mask_a_0 = cv2.resize ( prd_face_xseg_mask, (output_size, output_size), cv2.INTER_CUBIC)
|
X_prd_face_mask_a_0 = cv2.resize ( prd_face_xseg_mask, (output_size, output_size), cv2.INTER_CUBIC)
|
||||||
|
|
||||||
if cfg.mask_mode >= 6 and cfg.mask_mode <= 8:
|
if cfg.mask_mode >= 7 and cfg.mask_mode <= 9:
|
||||||
# obtain XSeg-dst
|
# obtain XSeg-dst
|
||||||
xseg_mat = LandmarksProcessor.get_transform_mat (img_face_landmarks, xseg_input_size, face_type=cfg.face_type)
|
xseg_mat = LandmarksProcessor.get_transform_mat (img_face_landmarks, xseg_input_size, face_type=cfg.face_type)
|
||||||
dst_face_xseg_bgr = cv2.warpAffine(img_bgr, xseg_mat, (xseg_input_size,)*2, flags=cv2.INTER_CUBIC )
|
dst_face_xseg_bgr = cv2.warpAffine(img_bgr, xseg_mat, (xseg_input_size,)*2, flags=cv2.INTER_CUBIC )
|
||||||
dst_face_xseg_mask = xseg_256_extract_func(dst_face_xseg_bgr)
|
dst_face_xseg_mask = xseg_256_extract_func(dst_face_xseg_bgr)
|
||||||
X_dst_face_mask_a_0 = cv2.resize (dst_face_xseg_mask, (output_size,output_size), cv2.INTER_CUBIC)
|
X_dst_face_mask_a_0 = cv2.resize (dst_face_xseg_mask, (output_size,output_size), cv2.INTER_CUBIC)
|
||||||
|
|
||||||
if cfg.mask_mode == 5: #'XSeg-prd'
|
if cfg.mask_mode == 6: #'XSeg-prd'
|
||||||
wrk_face_mask_a_0 = X_prd_face_mask_a_0
|
wrk_face_mask_a_0 = X_prd_face_mask_a_0
|
||||||
elif cfg.mask_mode == 6: #'XSeg-dst'
|
elif cfg.mask_mode == 7: #'XSeg-dst'
|
||||||
wrk_face_mask_a_0 = X_dst_face_mask_a_0
|
wrk_face_mask_a_0 = X_dst_face_mask_a_0
|
||||||
elif cfg.mask_mode == 7: #'XSeg-prd*XSeg-dst'
|
elif cfg.mask_mode == 8: #'XSeg-prd*XSeg-dst'
|
||||||
wrk_face_mask_a_0 = X_prd_face_mask_a_0 * X_dst_face_mask_a_0
|
wrk_face_mask_a_0 = X_prd_face_mask_a_0 * X_dst_face_mask_a_0
|
||||||
elif cfg.mask_mode == 8: #learned-prd*learned-dst*XSeg-prd*XSeg-dst
|
elif cfg.mask_mode == 9: #learned-prd*learned-dst*XSeg-prd*XSeg-dst
|
||||||
wrk_face_mask_a_0 = prd_face_mask_a_0 * prd_face_dst_mask_a_0 * X_prd_face_mask_a_0 * X_dst_face_mask_a_0
|
wrk_face_mask_a_0 = prd_face_mask_a_0 * prd_face_dst_mask_a_0 * X_prd_face_mask_a_0 * X_dst_face_mask_a_0
|
||||||
|
|
||||||
wrk_face_mask_a_0[ wrk_face_mask_a_0 < (1.0/255.0) ] = 0.0 # get rid of noise
|
wrk_face_mask_a_0[ wrk_face_mask_a_0 < (1.0/255.0) ] = 0.0 # get rid of noise
|
||||||
|
|
|
@ -85,10 +85,11 @@ mask_mode_dict = {1:'dst',
|
||||||
2:'learned-prd',
|
2:'learned-prd',
|
||||||
3:'learned-dst',
|
3:'learned-dst',
|
||||||
4:'learned-prd*learned-dst',
|
4:'learned-prd*learned-dst',
|
||||||
5:'XSeg-prd',
|
5:'learned-prd+learned-dst',
|
||||||
6:'XSeg-dst',
|
6:'XSeg-prd',
|
||||||
7:'XSeg-prd*XSeg-dst',
|
7:'XSeg-dst',
|
||||||
8:'learned-prd*learned-dst*XSeg-prd*XSeg-dst'
|
8:'XSeg-prd*XSeg-dst',
|
||||||
|
9:'learned-prd*learned-dst*XSeg-prd*XSeg-dst'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue