From b82fdc3f31a91e9b92f5344057048ffecacedb85 Mon Sep 17 00:00:00 2001 From: Kenneth Estanislao Date: Tue, 28 Oct 2025 19:16:40 +0800 Subject: [PATCH] Update face_swapper.py Optimization based on @SanderGi (experimental) to improve mac FPS --- modules/processors/frame/face_swapper.py | 26 ++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/modules/processors/frame/face_swapper.py b/modules/processors/frame/face_swapper.py index 7c4a98f..a35de27 100644 --- a/modules/processors/frame/face_swapper.py +++ b/modules/processors/frame/face_swapper.py @@ -63,14 +63,32 @@ def get_face_swapper() -> Any: with THREAD_LOCK: if FACE_SWAPPER is None: - model_path = os.path.join(models_dir, "inswapper_128_fp16.onnx") + model_name = "inswapper_128.onnx" + if "CUDAExecutionProvider" in modules.globals.execution_providers: + model_name = "inswapper_128_fp16.onnx" + model_path = os.path.join(models_dir, model_name) update_status(f"Loading face swapper model from: {model_path}", NAME) try: # Ensure the providers list is correctly passed - providers = modules.globals.execution_providers - # print(f"Attempting to load model with providers: {providers}") # Debug print + # Apply CoreML optimization for Mac systems FACE_SWAPPER = insightface.model_zoo.get_model( - model_path, providers=providers + model_path, + providers=[ + ( + ( + "CoreMLExecutionProvider", + { + "ModelFormat": "MLProgram", + "MLComputeUnits": "CPUAndGPU", + "SpecializationStrategy": "FastPrediction", + "AllowLowPrecisionAccumulationOnGPU": 1, + }, + ) + if p == "CoreMLExecutionProvider" + else p + ) + for p in modules.globals.execution_providers + ], ) update_status("Face swapper model loaded successfully.", NAME) except Exception as e: