This commit is contained in:
harisreedhar 2024-10-17 20:30:12 +05:30
parent 5137ee6551
commit ae1ab4609e
8 changed files with 6 additions and 43 deletions

View File

@ -52,7 +52,6 @@ skip_audio =
processors =
age_modifier_model =
age_modifier_direction =
age_modifier_scale =
expression_restorer_model =
expression_restorer_factor =
face_debugger_items =

View File

@ -49,14 +49,6 @@ WARP_TEMPLATES : WarpTemplateSet =\
[ 0.39032951, 0.77598822 ],
[ 0.61178945, 0.77476328 ]
]),
'styleganex_384': numpy.array(
[
[ 0.42353745, 0.52289879 ],
[ 0.57725008, 0.52319972 ],
[ 0.50123859, 0.61331904 ],
[ 0.43364461, 0.68337652 ],
[ 0.57015325, 0.68306005 ]
]),
'styleganex_512': numpy.array(
[
[ 0.43907768, 0.54098284 ],

View File

@ -10,7 +10,7 @@ import facefusion.jobs.job_manager
import facefusion.jobs.job_store
import facefusion.processors.core as processors
from facefusion import config, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, inference_manager, logger, process_manager, state_manager, wording
from facefusion.common_helper import create_float_metavar, create_int_metavar
from facefusion.common_helper import create_int_metavar
from facefusion.download import conditional_download_hashes, conditional_download_sources
from facefusion.face_analyser import get_many_faces, get_one_face
from facefusion.face_helper import merge_matrix, paste_back, scale_face_landmark_5, warp_face_by_face_landmark_5
@ -81,14 +81,12 @@ def register_args(program : ArgumentParser) -> None:
if group_processors:
group_processors.add_argument('--age-modifier-model', help = wording.get('help.age_modifier_model'), default = config.get_str_value('processors.age_modifier_model', 'styleganex_age'), choices = processors_choices.age_modifier_models)
group_processors.add_argument('--age-modifier-direction', help = wording.get('help.age_modifier_direction'), type = int, default = config.get_int_value('processors.age_modifier_direction', '0'), choices = processors_choices.age_modifier_direction_range, metavar = create_int_metavar(processors_choices.age_modifier_direction_range))
group_processors.add_argument('--age-modifier-scale', help = wording.get('help.age_modifier_scale'), type = float, default = config.get_float_value('processors.age_modifier_scale', '0'), choices = processors_choices.age_modifier_scale_range, metavar = create_float_metavar(processors_choices.age_modifier_scale_range))
facefusion.jobs.job_store.register_step_keys([ 'age_modifier_model', 'age_modifier_direction' ])
def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None:
apply_state_item('age_modifier_model', args.get('age_modifier_model'))
apply_state_item('age_modifier_direction', args.get('age_modifier_direction'))
apply_state_item('age_modifier_scale', args.get('age_modifier_scale'))
def pre_check() -> bool:
@ -131,7 +129,7 @@ def modify_age(target_face : Face, temp_vision_frame : VisionFrame) -> VisionFra
extend_crop_template = get_model_options().get('templates').get('target_with_background')
extend_crop_size = get_model_options().get('sizes').get('target_with_background')
face_landmark_5 = target_face.landmark_set.get('5/68').copy()
extend_face_landmark_5 = scale_face_landmark_5(face_landmark_5, prepare_scale(state_manager.get_item('age_modifier_scale')))
extend_face_landmark_5 = scale_face_landmark_5(face_landmark_5, 0.875)
crop_vision_frame, affine_matrix = warp_face_by_face_landmark_5(temp_vision_frame, face_landmark_5, model_template, model_size)
extend_vision_frame, extend_affine_matrix = warp_face_by_face_landmark_5(temp_vision_frame, extend_face_landmark_5, extend_crop_template, extend_crop_size)
extend_vision_frame_raw = extend_vision_frame.copy()
@ -208,11 +206,6 @@ def prepare_direction(direction : int) -> NDArray[Any]:
return numpy.array(direction).astype(numpy.float32)
def prepare_scale(scale : float) -> float:
scale = 1 + float(numpy.interp(scale, [ -1.0, 1.0 ], [ -0.3, 0.3 ]))
return scale
def prepare_vision_frame(vision_frame : VisionFrame) -> VisionFrame:
vision_frame = vision_frame[:, :, ::-1] / 255.0
vision_frame = (vision_frame - 0.5) / 0.5

View File

@ -67,7 +67,6 @@ ProcessorStateKey = Literal\
[
'age_modifier_model',
'age_modifier_direction',
'age_modifier_scale',
'expression_restorer_model',
'expression_restorer_factor',
'face_debugger_items',
@ -101,7 +100,6 @@ ProcessorState = TypedDict('ProcessorState',
{
'age_modifier_model' : AgeModifierModel,
'age_modifier_direction' : int,
'age_modifier_scale' : float,
'expression_restorer_model' : ExpressionRestorerModel,
'expression_restorer_factor' : int,
'face_debugger_items' : List[FaceDebuggerItem],

View File

@ -85,7 +85,7 @@ ProcessStep = Callable[[str, int, Args], bool]
Content = Dict[str, Any]
WarpTemplate = Literal['arcface_112_v1', 'arcface_112_v2', 'arcface_128_v2', 'ffhq_512', 'mtcnn_512', 'styleganex_384', 'styleganex_512']
WarpTemplate = Literal['arcface_112_v1', 'arcface_112_v2', 'arcface_128_v2', 'ffhq_512', 'mtcnn_512', 'styleganex_512']
WarpTemplateSet = Dict[WarpTemplate, NDArray[Any]]
ProcessMode = Literal['output', 'preview', 'stream']

View File

@ -11,13 +11,11 @@ from facefusion.uis.core import get_ui_component, register_ui_component
AGE_MODIFIER_MODEL_DROPDOWN : Optional[gradio.Dropdown] = None
AGE_MODIFIER_DIRECTION_SLIDER : Optional[gradio.Slider] = None
AGE_MODIFIER_SCALE_SLIDER : Optional[gradio.Slider] = None
def render() -> None:
global AGE_MODIFIER_MODEL_DROPDOWN
global AGE_MODIFIER_DIRECTION_SLIDER
global AGE_MODIFIER_SCALE_SLIDER
AGE_MODIFIER_MODEL_DROPDOWN = gradio.Dropdown(
label = wording.get('uis.age_modifier_model_dropdown'),
@ -33,32 +31,22 @@ def render() -> None:
maximum = processors_choices.age_modifier_direction_range[-1],
visible = 'age_modifier' in state_manager.get_item('processors')
)
AGE_MODIFIER_SCALE_SLIDER = gradio.Slider(
label = wording.get('uis.age_modifier_scale_slider'),
value = state_manager.get_item('age_modifier_scale'),
step = calc_float_step(processors_choices.age_modifier_scale_range),
minimum = processors_choices.age_modifier_scale_range[0],
maximum = processors_choices.age_modifier_scale_range[-1],
visible = 'age_modifier' in state_manager.get_item('processors')
)
register_ui_component('age_modifier_model_dropdown', AGE_MODIFIER_MODEL_DROPDOWN)
register_ui_component('age_modifier_direction_slider', AGE_MODIFIER_DIRECTION_SLIDER)
register_ui_component('age_modifier_scale_slider', AGE_MODIFIER_SCALE_SLIDER)
def listen() -> None:
AGE_MODIFIER_MODEL_DROPDOWN.change(update_age_modifier_model, inputs = AGE_MODIFIER_MODEL_DROPDOWN, outputs = AGE_MODIFIER_MODEL_DROPDOWN)
AGE_MODIFIER_DIRECTION_SLIDER.release(update_age_modifier_direction, inputs = AGE_MODIFIER_DIRECTION_SLIDER)
AGE_MODIFIER_SCALE_SLIDER.release(update_age_modifier_scale, inputs = AGE_MODIFIER_SCALE_SLIDER)
processors_checkbox_group = get_ui_component('processors_checkbox_group')
if processors_checkbox_group:
processors_checkbox_group.change(remote_update, inputs = processors_checkbox_group, outputs = [ AGE_MODIFIER_MODEL_DROPDOWN, AGE_MODIFIER_DIRECTION_SLIDER, AGE_MODIFIER_SCALE_SLIDER ])
processors_checkbox_group.change(remote_update, inputs = processors_checkbox_group, outputs = [ AGE_MODIFIER_MODEL_DROPDOWN, AGE_MODIFIER_DIRECTION_SLIDER ])
def remote_update(processors : List[str]) -> Tuple[gradio.Dropdown, gradio.Slider, gradio.Slider]:
def remote_update(processors : List[str]) -> Tuple[gradio.Dropdown, gradio.Slider]:
has_age_modifier = 'age_modifier' in processors
return gradio.Dropdown(visible = has_age_modifier), gradio.Slider(visible = has_age_modifier), gradio.Slider(visible = has_age_modifier)
return gradio.Dropdown(visible = has_age_modifier), gradio.Slider(visible = has_age_modifier)
def update_age_modifier_model(age_modifier_model : AgeModifierModel) -> gradio.Dropdown:
@ -73,7 +61,3 @@ def update_age_modifier_model(age_modifier_model : AgeModifierModel) -> gradio.D
def update_age_modifier_direction(age_modifier_direction : float) -> None:
state_manager.set_item('age_modifier_direction', int(age_modifier_direction))
def update_age_modifier_scale(age_modifier_scale : float) -> None:
state_manager.set_item('age_modifier_scale', age_modifier_scale)

View File

@ -110,7 +110,6 @@ def listen() -> None:
for ui_component in get_ui_components(
[
'age_modifier_direction_slider',
'age_modifier_scale_slider',
'expression_restorer_factor_slider',
'face_editor_eyebrow_direction_slider',
'face_editor_eye_gaze_horizontal_slider',

View File

@ -142,7 +142,6 @@ WORDING : Dict[str, Any] =\
'processors': 'load a single or multiple processors (choices: {choices}, ...)',
'age_modifier_model': 'choose the model responsible for aging the face',
'age_modifier_direction': 'specify the direction in which the age should be modified',
'age_modifier_scale': 'specify the scale in which the age should be modified',
'expression_restorer_model': 'choose the model responsible for restoring the expression',
'expression_restorer_factor': 'restore factor of expression from the target face',
'face_debugger_items': 'load a single or multiple processors (choices: {choices})',
@ -220,7 +219,6 @@ WORDING : Dict[str, Any] =\
'uis':
{
'age_modifier_direction_slider': 'AGE MODIFIER DIRECTION',
'age_modifier_scale_slider': 'AGE MODIFIER SCALE',
'age_modifier_model_dropdown': 'AGE MODIFIER MODEL',
'apply_button': 'APPLY',
'benchmark_cycles_slider': 'BENCHMARK CYCLES',