diff --git a/facefusion/processors/modules/face_swapper.py b/facefusion/processors/modules/face_swapper.py index 884c12a2..902e0dc7 100755 --- a/facefusion/processors/modules/face_swapper.py +++ b/facefusion/processors/modules/face_swapper.py @@ -20,7 +20,7 @@ from facefusion.inference_manager import get_static_model_initializer from facefusion.processors import choices as processors_choices from facefusion.processors.pixel_boost import explode_pixel_boost, implode_pixel_boost from facefusion.processors.typing import FaceSwapperInputs -from facefusion.program_helper import find_argument_group, suggest_face_swapper_pixel_boost_choices +from facefusion.program_helper import find_argument_group from facefusion.thread_helper import conditional_thread_semaphore from facefusion.typing import ApplyStateItem, Args, Embedding, Face, InferencePool, ModelOptions, ModelSet, ProcessMode, QueuePayload, UpdateProgress, VisionFrame from facefusion.vision import read_image, read_static_image, read_static_images, unpack_resolution, write_image @@ -351,7 +351,8 @@ def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: group_processors.add_argument('--face-swapper-model', help = wording.get('help.face_swapper_model'), default = config.get_str_value('processors.face_swapper_model', 'inswapper_128_fp16'), choices = processors_choices.face_swapper_set.keys()) - face_swapper_pixel_boost_choices = suggest_face_swapper_pixel_boost_choices(program) + known_args, _ = program.parse_known_args() + face_swapper_pixel_boost_choices = processors_choices.face_swapper_set.get(known_args.face_swapper_model) group_processors.add_argument('--face-swapper-pixel-boost', help = wording.get('help.face_swapper_pixel_boost'), default = config.get_str_value('processors.face_swapper_pixel_boost', get_first(face_swapper_pixel_boost_choices)), choices = face_swapper_pixel_boost_choices) facefusion.jobs.job_store.register_step_keys([ 'face_swapper_model', 'face_swapper_pixel_boost' ]) diff --git a/facefusion/program.py b/facefusion/program.py index af3b52d7..8212498a 100755 --- a/facefusion/program.py +++ b/facefusion/program.py @@ -3,12 +3,11 @@ from argparse import ArgumentParser, HelpFormatter import facefusion.choices from facefusion import config, metadata, state_manager, wording -from facefusion.common_helper import create_float_metavar, create_int_metavar +from facefusion.common_helper import create_float_metavar, create_int_metavar, get_last from facefusion.execution import get_execution_provider_choices from facefusion.filesystem import list_directory from facefusion.jobs import job_store from facefusion.processors.core import get_processors_modules -from facefusion.program_helper import suggest_face_detector_choices def create_help_formatter_small(prog : str) -> HelpFormatter: @@ -72,7 +71,9 @@ def create_face_detector_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_face_detector = program.add_argument_group('face detector') group_face_detector.add_argument('--face-detector-model', help = wording.get('help.face_detector_model'), default = config.get_str_value('face_detector.face_detector_model', 'yoloface'), choices = facefusion.choices.face_detector_set.keys()) - group_face_detector.add_argument('--face-detector-size', help = wording.get('help.face_detector_size'), default = config.get_str_value('face_detector.face_detector_size', '640x640'), choices = suggest_face_detector_choices(program)) + known_args, _ = program.parse_known_args() + face_detector_size_choices = facefusion.choices.face_detector_set.get(known_args.face_detector_model) + group_face_detector.add_argument('--face-detector-size', help = wording.get('help.face_detector_size'), default = config.get_str_value('face_detector.face_detector_size', get_last(face_detector_size_choices)), choices = face_detector_size_choices) group_face_detector.add_argument('--face-detector-angles', help = wording.get('help.face_detector_angles'), type = int, default = config.get_int_list('face_detector.face_detector_angles', '0'), choices = facefusion.choices.face_detector_angles, nargs = '+', metavar = 'FACE_DETECTOR_ANGLES') group_face_detector.add_argument('--face-detector-score', help = wording.get('help.face_detector_score'), type = float, default = config.get_float_value('face_detector.face_detector_score', '0.5'), choices = facefusion.choices.face_detector_score_range, metavar = create_float_metavar(facefusion.choices.face_detector_score_range)) job_store.register_step_keys([ 'face_detector_model', 'face_detector_angles', 'face_detector_size', 'face_detector_score' ]) diff --git a/facefusion/program_helper.py b/facefusion/program_helper.py index aea0a3a4..bec9bf1e 100644 --- a/facefusion/program_helper.py +++ b/facefusion/program_helper.py @@ -1,8 +1,5 @@ from argparse import ArgumentParser, _ArgumentGroup, _SubParsersAction -from typing import List, Optional - -import facefusion.choices -from facefusion.processors import choices as processors_choices +from typing import Optional def find_argument_group(program : ArgumentParser, group_name : str) -> Optional[_ArgumentGroup]: @@ -32,13 +29,3 @@ def validate_actions(program : ArgumentParser) -> bool: elif action.default not in action.choices: return False return True - - -def suggest_face_detector_choices(program : ArgumentParser) -> List[str]: - known_args, _ = program.parse_known_args() - return facefusion.choices.face_detector_set.get(known_args.face_detector_model) #type:ignore[call-overload] - - -def suggest_face_swapper_pixel_boost_choices(program : ArgumentParser) -> List[str]: - known_args, _ = program.parse_known_args() - return processors_choices.face_swapper_set.get(known_args.face_swapper_model) #type:ignore[call-overload]