From 43e1e4bf44bc061fa34ab804b43df4310aeef3cb Mon Sep 17 00:00:00 2001 From: henryruhs Date: Fri, 20 Jun 2025 15:34:21 +0200 Subject: [PATCH] Prepare HyperSwap models --- facefusion/processors/choices.py | 4 +- facefusion/processors/modules/face_swapper.py | 58 +++++++++++++++++-- facefusion/processors/types.py | 2 +- 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/facefusion/processors/choices.py b/facefusion/processors/choices.py index cafb439..e33a2b1 100755 --- a/facefusion/processors/choices.py +++ b/facefusion/processors/choices.py @@ -185,7 +185,9 @@ face_swapper_set : FaceSwapperSet =\ 'ghost_2_256': [ '256x256', '512x512', '768x768', '1024x1024' ], 'ghost_3_256': [ '256x256', '512x512', '768x768', '1024x1024' ], 'hififace_unofficial_256': [ '256x256', '512x512', '768x768', '1024x1024' ], - 'hyperswap_256': [ '256x256', '512x512', '768x768', '1024x1024' ], + 'hyperswap_1a_256': [ '256x256', '512x512', '768x768', '1024x1024' ], + 'hyperswap_1b_256': [ '256x256', '512x512', '768x768', '1024x1024' ], + 'hyperswap_1c_256': [ '256x256', '512x512', '768x768', '1024x1024' ], 'inswapper_128': [ '128x128', '256x256', '384x384', '512x512', '768x768', '1024x1024' ], 'inswapper_128_fp16': [ '128x128', '256x256', '384x384', '512x512', '768x768', '1024x1024' ], 'simswap_256': [ '256x256', '512x512', '768x768', '1024x1024' ], diff --git a/facefusion/processors/modules/face_swapper.py b/facefusion/processors/modules/face_swapper.py index 2582f24..98ef40b 100755 --- a/facefusion/processors/modules/face_swapper.py +++ b/facefusion/processors/modules/face_swapper.py @@ -193,22 +193,70 @@ def create_static_model_set(download_scope : DownloadScope) -> ModelSet: 'mean': [ 0.5, 0.5, 0.5 ], 'standard_deviation': [ 0.5, 0.5, 0.5 ] }, - 'hyperswap_256': + 'hyperswap_1a_256': { 'hashes': { 'face_swapper': { - 'url': resolve_download_url('models-3.3.0', 'hyperswap_256.hash'), - 'path': resolve_relative_path('../.assets/models/hyperswap_256.hash') + 'url': resolve_download_url('models-3.3.0', 'hyperswap_1a_256.hash'), + 'path': resolve_relative_path('../.assets/models/hyperswap_1a_256.hash') } }, 'sources': { 'face_swapper': { - 'url': resolve_download_url('models-3.3.0', 'hyperswap_256.onnx'), - 'path': resolve_relative_path('../.assets/models/hyperswap_256.onnx') + 'url': resolve_download_url('models-3.3.0', 'hyperswap_1a_256.onnx'), + 'path': resolve_relative_path('../.assets/models/hyperswap_1a_256.onnx') + } + }, + 'type': 'hyperswap', + 'template': 'arcface_128', + 'size': (256, 256), + 'mean': [ 0.5, 0.5, 0.5 ], + 'standard_deviation': [ 0.5, 0.5, 0.5 ] + }, + 'hyperswap_1b_256': + { + 'hashes': + { + 'face_swapper': + { + 'url': resolve_download_url('models-3.3.0', 'hyperswap_1b_256.hash'), + 'path': resolve_relative_path('../.assets/models/hyperswap_1b_256.hash') + } + }, + 'sources': + { + 'face_swapper': + { + 'url': resolve_download_url('models-3.3.0', 'hyperswap_1b_256.onnx'), + 'path': resolve_relative_path('../.assets/models/hyperswap_1b_256.onnx') + } + }, + 'type': 'hyperswap', + 'template': 'arcface_128', + 'size': (256, 256), + 'mean': [ 0.5, 0.5, 0.5 ], + 'standard_deviation': [ 0.5, 0.5, 0.5 ] + }, + 'hyperswap_1c_256': + { + 'hashes': + { + 'face_swapper': + { + 'url': resolve_download_url('models-3.3.0', 'hyperswap_1c_256.hash'), + 'path': resolve_relative_path('../.assets/models/hyperswap_1c_256.hash') + } + }, + 'sources': + { + 'face_swapper': + { + 'url': resolve_download_url('models-3.3.0', 'hyperswap_1c_256.onnx'), + 'path': resolve_relative_path('../.assets/models/hyperswap_1c_256.onnx') } }, 'type': 'hyperswap', diff --git a/facefusion/processors/types.py b/facefusion/processors/types.py index b9b0171..bf9b9f6 100644 --- a/facefusion/processors/types.py +++ b/facefusion/processors/types.py @@ -10,7 +10,7 @@ ExpressionRestorerModel = Literal['live_portrait'] FaceDebuggerItem = Literal['bounding-box', 'face-landmark-5', 'face-landmark-5/68', 'face-landmark-68', 'face-landmark-68/5', 'face-mask', 'face-detector-score', 'face-landmarker-score', 'age', 'gender', 'race'] FaceEditorModel = Literal['live_portrait'] FaceEnhancerModel = Literal['codeformer', 'gfpgan_1.2', 'gfpgan_1.3', 'gfpgan_1.4', 'gpen_bfr_256', 'gpen_bfr_512', 'gpen_bfr_1024', 'gpen_bfr_2048', 'restoreformer_plus_plus'] -FaceSwapperModel = Literal['blendswap_256', 'ghost_1_256', 'ghost_2_256', 'ghost_3_256', 'hififace_unofficial_256', 'hyperswap_256', 'inswapper_128', 'inswapper_128_fp16', 'simswap_256', 'simswap_unofficial_512', 'uniface_256'] +FaceSwapperModel = Literal['blendswap_256', 'ghost_1_256', 'ghost_2_256', 'ghost_3_256', 'hififace_unofficial_256', 'hyperswap_1a_256', 'hyperswap_1b_256', 'hyperswap_1c_256', 'inswapper_128', 'inswapper_128_fp16', 'simswap_256', 'simswap_unofficial_512', 'uniface_256'] FrameColorizerModel = Literal['ddcolor', 'ddcolor_artistic', 'deoldify', 'deoldify_artistic', 'deoldify_stable'] FrameEnhancerModel = Literal['clear_reality_x4', 'lsdir_x4', 'nomos8k_sc_x4', 'real_esrgan_x2', 'real_esrgan_x2_fp16', 'real_esrgan_x4', 'real_esrgan_x4_fp16', 'real_esrgan_x8', 'real_esrgan_x8_fp16', 'real_hatgan_x4', 'real_web_photo_x4', 'realistic_rescaler_x4', 'remacri_x4', 'siax_x4', 'span_kendata_x4', 'swin2_sr_x4', 'ultra_sharp_x4', 'ultra_sharp_2_x4'] LipSyncerModel = Literal['edtalk_256', 'wav2lip_96', 'wav2lip_gan_96']