Introduce matrix only face helper
This commit is contained in:
parent
b717201f9f
commit
f976b42174
@ -8,7 +8,7 @@ import onnxruntime
|
|||||||
import facefusion.globals
|
import facefusion.globals
|
||||||
from facefusion import process_manager
|
from facefusion import process_manager
|
||||||
from facefusion.common_helper import get_first
|
from facefusion.common_helper import get_first
|
||||||
from facefusion.face_helper import warp_face_by_face_landmark_5, warp_face_by_translation, create_static_anchors, distance_to_face_landmark_5, distance_to_bounding_box, convert_face_landmark_68_to_5, apply_nms, categorize_age, categorize_gender, WARP_TEMPLATES
|
from facefusion.face_helper import estimate_matrix_by_face_landmark_5, warp_face_by_face_landmark_5, warp_face_by_translation, create_static_anchors, distance_to_face_landmark_5, distance_to_bounding_box, convert_face_landmark_68_to_5, apply_nms, categorize_age, categorize_gender
|
||||||
from facefusion.face_store import get_static_faces, set_static_faces
|
from facefusion.face_store import get_static_faces, set_static_faces
|
||||||
from facefusion.execution import apply_execution_provider_options
|
from facefusion.execution import apply_execution_provider_options
|
||||||
from facefusion.download import conditional_download
|
from facefusion.download import conditional_download
|
||||||
@ -399,8 +399,7 @@ def detect_face_landmark_68(temp_vision_frame : VisionFrame, bounding_box : Boun
|
|||||||
|
|
||||||
def expand_face_landmark_68_from_5(face_landmark_5 : FaceLandmark5) -> FaceLandmark68:
|
def expand_face_landmark_68_from_5(face_landmark_5 : FaceLandmark5) -> FaceLandmark68:
|
||||||
face_landmarker = get_face_analyser().get('face_landmarkers').get('68_5')
|
face_landmarker = get_face_analyser().get('face_landmarkers').get('68_5')
|
||||||
normed_warp_template = WARP_TEMPLATES.get('ffhq_512') * 512
|
affine_matrix = estimate_matrix_by_face_landmark_5(face_landmark_5, 'ffhq_512', (512, 512))
|
||||||
affine_matrix = cv2.estimateAffinePartial2D(face_landmark_5, normed_warp_template, method = cv2.RANSAC, ransacReprojThreshold = 100)[0]
|
|
||||||
face_landmark_5 = cv2.transform(face_landmark_5.reshape(1, -1, 2), affine_matrix).reshape(-1, 2)
|
face_landmark_5 = cv2.transform(face_landmark_5.reshape(1, -1, 2), affine_matrix).reshape(-1, 2)
|
||||||
face_landmark_5 = face_landmark_5 / 512
|
face_landmark_5 = face_landmark_5 / 512
|
||||||
face_landmark_68_5 = face_landmarker.run(None,
|
face_landmark_68_5 = face_landmarker.run(None,
|
||||||
|
@ -43,9 +43,14 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def warp_face_by_face_landmark_5(temp_vision_frame : VisionFrame, face_landmark_5 : FaceLandmark5, warp_template : WarpTemplate, crop_size : Size) -> Tuple[VisionFrame, Matrix]:
|
def estimate_matrix_by_face_landmark_5(face_landmark_5 : FaceLandmark5, warp_template : WarpTemplate, crop_size : Size) -> Matrix:
|
||||||
normed_warp_template = WARP_TEMPLATES.get(warp_template) * crop_size
|
normed_warp_template = WARP_TEMPLATES.get(warp_template) * crop_size
|
||||||
affine_matrix = cv2.estimateAffinePartial2D(face_landmark_5, normed_warp_template, method = cv2.RANSAC, ransacReprojThreshold = 100)[0]
|
affine_matrix = cv2.estimateAffinePartial2D(face_landmark_5, normed_warp_template, method = cv2.RANSAC, ransacReprojThreshold = 100)[0]
|
||||||
|
return affine_matrix
|
||||||
|
|
||||||
|
|
||||||
|
def warp_face_by_face_landmark_5(temp_vision_frame : VisionFrame, face_landmark_5 : FaceLandmark5, warp_template : WarpTemplate, crop_size : Size) -> Tuple[VisionFrame, Matrix]:
|
||||||
|
affine_matrix = estimate_matrix_by_face_landmark_5(face_landmark_5, warp_template, crop_size)
|
||||||
crop_vision_frame = cv2.warpAffine(temp_vision_frame, affine_matrix, crop_size, borderMode = cv2.BORDER_REPLICATE, flags = cv2.INTER_AREA)
|
crop_vision_frame = cv2.warpAffine(temp_vision_frame, affine_matrix, crop_size, borderMode = cv2.BORDER_REPLICATE, flags = cv2.INTER_AREA)
|
||||||
return crop_vision_frame, affine_matrix
|
return crop_vision_frame, affine_matrix
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user