Set inswapper according to execution provider

This commit is contained in:
henryruhs 2024-05-19 16:50:46 +02:00
parent 319e3f9652
commit cefd2fa41d
3 changed files with 12 additions and 4 deletions

View File

@ -18,6 +18,10 @@ def decode_execution_providers(execution_providers : List[str]) -> List[str]:
return [ execution_provider for execution_provider, encoded_execution_provider in zip(available_execution_providers, encoded_execution_providers) if any(execution_provider in encoded_execution_provider for execution_provider in execution_providers) ] return [ execution_provider for execution_provider, encoded_execution_provider in zip(available_execution_providers, encoded_execution_providers) if any(execution_provider in encoded_execution_provider for execution_provider in execution_providers) ]
def has_execution_provider(execution_provider : str) -> bool:
return execution_provider in onnxruntime.get_available_providers()
def apply_execution_provider_options(execution_device_id : str, execution_providers : List[str]) -> List[Any]: def apply_execution_provider_options(execution_device_id : str, execution_providers : List[str]) -> List[Any]:
execution_providers_with_options : List[Any] = [] execution_providers_with_options : List[Any] = []

View File

@ -9,8 +9,7 @@ from onnx import numpy_helper
import facefusion.globals import facefusion.globals
import facefusion.processors.frame.core as frame_processors import facefusion.processors.frame.core as frame_processors
from facefusion import config, process_manager, logger, wording from facefusion import config, process_manager, logger, wording
from facefusion.common_helper import is_macos from facefusion.execution import has_execution_provider, apply_execution_provider_options
from facefusion.execution import apply_execution_provider_options
from facefusion.face_analyser import get_one_face, get_average_face, get_many_faces, find_similar_faces, clear_face_analyser from facefusion.face_analyser import get_one_face, get_average_face, get_many_faces, find_similar_faces, clear_face_analyser
from facefusion.face_masker import create_static_box_mask, create_occlusion_mask, create_region_mask, clear_face_occluder, clear_face_parser from facefusion.face_masker import create_static_box_mask, create_occlusion_mask, create_region_mask, clear_face_occluder, clear_face_parser
from facefusion.face_helper import warp_face_by_face_landmark_5, paste_back from facefusion.face_helper import warp_face_by_face_landmark_5, paste_back
@ -150,7 +149,7 @@ def set_options(key : Literal['model'], value : Any) -> None:
def register_args(program : ArgumentParser) -> None: def register_args(program : ArgumentParser) -> None:
if is_macos(): if has_execution_provider('CoreMLExecutionProvider') or has_execution_provider('OpenVINOExecutionProvider'):
face_swapper_model_fallback = 'inswapper_128' face_swapper_model_fallback = 'inswapper_128'
else: else:
face_swapper_model_fallback = 'inswapper_128_fp16' face_swapper_model_fallback = 'inswapper_128_fp16'

View File

@ -1,4 +1,4 @@
from facefusion.execution import encode_execution_providers, decode_execution_providers, apply_execution_provider_options from facefusion.execution import encode_execution_providers, decode_execution_providers, has_execution_provider, apply_execution_provider_options
def test_encode_execution_providers() -> None: def test_encode_execution_providers() -> None:
@ -9,6 +9,11 @@ def test_decode_execution_providers() -> None:
assert decode_execution_providers([ 'cpu' ]) == [ 'CPUExecutionProvider' ] assert decode_execution_providers([ 'cpu' ]) == [ 'CPUExecutionProvider' ]
def test_has_execution_provider() -> None:
assert has_execution_provider('CPUExecutionProvider') is True
assert has_execution_provider('InvalidExecutionProvider') is False
def test_multiple_execution_providers() -> None: def test_multiple_execution_providers() -> None:
execution_provider_with_options =\ execution_provider_with_options =\
[ [