diff --git a/facefusion/processors/frame/modules/face_enhancer.py b/facefusion/processors/frame/modules/face_enhancer.py index 792b8bbb..2e32973d 100644 --- a/facefusion/processors/frame/modules/face_enhancer.py +++ b/facefusion/processors/frame/modules/face_enhancer.py @@ -26,27 +26,37 @@ MODELS : Dict[str, ModelValue] =\ 'codeformer': { 'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/codeformer.onnx', - 'path': resolve_relative_path('../.assets/models/codeformer.onnx') + 'path': resolve_relative_path('../.assets/models/codeformer.onnx'), + 'template': 'ffhq', + 'size': (512, 512) }, 'gfpgan_1.2': { 'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/GFPGANv1.2.onnx', - 'path': resolve_relative_path('../.assets/models/GFPGANv1.2.onnx') + 'path': resolve_relative_path('../.assets/models/GFPGANv1.2.onnx'), + 'template': 'ffhq', + 'size': (512, 512) }, 'gfpgan_1.3': { 'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/GFPGANv1.3.onnx', - 'path': resolve_relative_path('../.assets/models/GFPGANv1.3.onnx') + 'path': resolve_relative_path('../.assets/models/GFPGANv1.3.onnx'), + 'template': 'ffhq', + 'size': (512, 512) }, 'gfpgan_1.4': { 'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/GFPGANv1.4.onnx', - 'path': resolve_relative_path('../.assets/models/GFPGANv1.4.onnx') + 'path': resolve_relative_path('../.assets/models/GFPGANv1.4.onnx'), + 'template': 'ffhq', + 'size': (512, 512) }, 'gpen_bfr_512': { 'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/GPEN-BFR-512.onnx', - 'path': resolve_relative_path('../.assets/models/GPEN-BFR-512.onnx') + 'path': resolve_relative_path('../.assets/models/GPEN-BFR-512.onnx'), + 'template': 'ffhq', + 'size': (512, 512) } } OPTIONS : Optional[OptionsWithModel] = None @@ -131,7 +141,9 @@ def post_process() -> None: def enhance_face(target_face: Face, temp_frame: Frame) -> Frame: frame_processor = get_frame_processor() - crop_frame, affine_matrix = warp_face(target_face, temp_frame, 'ffhq', (512, 512)) + model_template = get_options('model').get('template') + model_size = get_options('model').get('size') + crop_frame, affine_matrix = warp_face(target_face, temp_frame, model_template, model_size) crop_frame = prepare_crop_frame(crop_frame) frame_processor_inputs = {} for frame_processor_input in frame_processor.get_inputs(): diff --git a/facefusion/processors/frame/modules/face_swapper.py b/facefusion/processors/frame/modules/face_swapper.py index d830afb0..a109153c 100644 --- a/facefusion/processors/frame/modules/face_swapper.py +++ b/facefusion/processors/frame/modules/face_swapper.py @@ -29,12 +29,16 @@ MODELS : Dict[str, ModelValue] =\ 'inswapper_128': { 'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128.onnx', - 'path': resolve_relative_path('../.assets/models/inswapper_128.onnx') + 'path': resolve_relative_path('../.assets/models/inswapper_128.onnx'), + 'template': 'arcface', + 'size': (128, 128) }, 'inswapper_128_fp16': { 'url': 'https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128_fp16.onnx', - 'path': resolve_relative_path('../.assets/models/inswapper_128_fp16.onnx') + 'path': resolve_relative_path('../.assets/models/inswapper_128_fp16.onnx'), + 'template': 'arcface', + 'size': (128, 128) } } OPTIONS : Optional[OptionsWithModel] = None @@ -141,8 +145,10 @@ def post_process() -> None: def swap_face(source_face : Face, target_face : Face, temp_frame : Frame) -> Frame: frame_processor = get_frame_processor() + model_template = get_options('model').get('template') + model_size = get_options('model').get('size') source_face = prepare_source_face(source_face) - crop_frame, affine_matrix = warp_face(target_face, temp_frame, 'arcface', (128, 128)) + crop_frame, affine_matrix = warp_face(target_face, temp_frame, model_template, model_size) crop_frame = prepare_crop_frame(crop_frame) frame_processor_inputs = {} for frame_processor_input in frame_processor.get_inputs():