hardcode
This commit is contained in:
parent
5137ee6551
commit
ae1ab4609e
@ -52,7 +52,6 @@ skip_audio =
|
|||||||
processors =
|
processors =
|
||||||
age_modifier_model =
|
age_modifier_model =
|
||||||
age_modifier_direction =
|
age_modifier_direction =
|
||||||
age_modifier_scale =
|
|
||||||
expression_restorer_model =
|
expression_restorer_model =
|
||||||
expression_restorer_factor =
|
expression_restorer_factor =
|
||||||
face_debugger_items =
|
face_debugger_items =
|
||||||
|
@ -49,14 +49,6 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
|||||||
[ 0.39032951, 0.77598822 ],
|
[ 0.39032951, 0.77598822 ],
|
||||||
[ 0.61178945, 0.77476328 ]
|
[ 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(
|
'styleganex_512': numpy.array(
|
||||||
[
|
[
|
||||||
[ 0.43907768, 0.54098284 ],
|
[ 0.43907768, 0.54098284 ],
|
||||||
|
@ -10,7 +10,7 @@ import facefusion.jobs.job_manager
|
|||||||
import facefusion.jobs.job_store
|
import facefusion.jobs.job_store
|
||||||
import facefusion.processors.core as processors
|
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 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.download import conditional_download_hashes, conditional_download_sources
|
||||||
from facefusion.face_analyser import get_many_faces, get_one_face
|
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
|
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:
|
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-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-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' ])
|
facefusion.jobs.job_store.register_step_keys([ 'age_modifier_model', 'age_modifier_direction' ])
|
||||||
|
|
||||||
|
|
||||||
def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None:
|
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_model', args.get('age_modifier_model'))
|
||||||
apply_state_item('age_modifier_direction', args.get('age_modifier_direction'))
|
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:
|
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_template = get_model_options().get('templates').get('target_with_background')
|
||||||
extend_crop_size = get_model_options().get('sizes').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()
|
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)
|
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, 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()
|
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)
|
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:
|
def prepare_vision_frame(vision_frame : VisionFrame) -> VisionFrame:
|
||||||
vision_frame = vision_frame[:, :, ::-1] / 255.0
|
vision_frame = vision_frame[:, :, ::-1] / 255.0
|
||||||
vision_frame = (vision_frame - 0.5) / 0.5
|
vision_frame = (vision_frame - 0.5) / 0.5
|
||||||
|
@ -67,7 +67,6 @@ ProcessorStateKey = Literal\
|
|||||||
[
|
[
|
||||||
'age_modifier_model',
|
'age_modifier_model',
|
||||||
'age_modifier_direction',
|
'age_modifier_direction',
|
||||||
'age_modifier_scale',
|
|
||||||
'expression_restorer_model',
|
'expression_restorer_model',
|
||||||
'expression_restorer_factor',
|
'expression_restorer_factor',
|
||||||
'face_debugger_items',
|
'face_debugger_items',
|
||||||
@ -101,7 +100,6 @@ ProcessorState = TypedDict('ProcessorState',
|
|||||||
{
|
{
|
||||||
'age_modifier_model' : AgeModifierModel,
|
'age_modifier_model' : AgeModifierModel,
|
||||||
'age_modifier_direction' : int,
|
'age_modifier_direction' : int,
|
||||||
'age_modifier_scale' : float,
|
|
||||||
'expression_restorer_model' : ExpressionRestorerModel,
|
'expression_restorer_model' : ExpressionRestorerModel,
|
||||||
'expression_restorer_factor' : int,
|
'expression_restorer_factor' : int,
|
||||||
'face_debugger_items' : List[FaceDebuggerItem],
|
'face_debugger_items' : List[FaceDebuggerItem],
|
||||||
|
@ -85,7 +85,7 @@ ProcessStep = Callable[[str, int, Args], bool]
|
|||||||
|
|
||||||
Content = Dict[str, Any]
|
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]]
|
WarpTemplateSet = Dict[WarpTemplate, NDArray[Any]]
|
||||||
ProcessMode = Literal['output', 'preview', 'stream']
|
ProcessMode = Literal['output', 'preview', 'stream']
|
||||||
|
|
||||||
|
@ -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_MODEL_DROPDOWN : Optional[gradio.Dropdown] = None
|
||||||
AGE_MODIFIER_DIRECTION_SLIDER : Optional[gradio.Slider] = None
|
AGE_MODIFIER_DIRECTION_SLIDER : Optional[gradio.Slider] = None
|
||||||
AGE_MODIFIER_SCALE_SLIDER : Optional[gradio.Slider] = None
|
|
||||||
|
|
||||||
|
|
||||||
def render() -> None:
|
def render() -> None:
|
||||||
global AGE_MODIFIER_MODEL_DROPDOWN
|
global AGE_MODIFIER_MODEL_DROPDOWN
|
||||||
global AGE_MODIFIER_DIRECTION_SLIDER
|
global AGE_MODIFIER_DIRECTION_SLIDER
|
||||||
global AGE_MODIFIER_SCALE_SLIDER
|
|
||||||
|
|
||||||
AGE_MODIFIER_MODEL_DROPDOWN = gradio.Dropdown(
|
AGE_MODIFIER_MODEL_DROPDOWN = gradio.Dropdown(
|
||||||
label = wording.get('uis.age_modifier_model_dropdown'),
|
label = wording.get('uis.age_modifier_model_dropdown'),
|
||||||
@ -33,32 +31,22 @@ def render() -> None:
|
|||||||
maximum = processors_choices.age_modifier_direction_range[-1],
|
maximum = processors_choices.age_modifier_direction_range[-1],
|
||||||
visible = 'age_modifier' in state_manager.get_item('processors')
|
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_model_dropdown', AGE_MODIFIER_MODEL_DROPDOWN)
|
||||||
register_ui_component('age_modifier_direction_slider', AGE_MODIFIER_DIRECTION_SLIDER)
|
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:
|
def listen() -> None:
|
||||||
AGE_MODIFIER_MODEL_DROPDOWN.change(update_age_modifier_model, inputs = AGE_MODIFIER_MODEL_DROPDOWN, outputs = AGE_MODIFIER_MODEL_DROPDOWN)
|
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_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')
|
processors_checkbox_group = get_ui_component('processors_checkbox_group')
|
||||||
if 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
|
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:
|
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:
|
def update_age_modifier_direction(age_modifier_direction : float) -> None:
|
||||||
state_manager.set_item('age_modifier_direction', int(age_modifier_direction))
|
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)
|
|
||||||
|
@ -110,7 +110,6 @@ def listen() -> None:
|
|||||||
for ui_component in get_ui_components(
|
for ui_component in get_ui_components(
|
||||||
[
|
[
|
||||||
'age_modifier_direction_slider',
|
'age_modifier_direction_slider',
|
||||||
'age_modifier_scale_slider',
|
|
||||||
'expression_restorer_factor_slider',
|
'expression_restorer_factor_slider',
|
||||||
'face_editor_eyebrow_direction_slider',
|
'face_editor_eyebrow_direction_slider',
|
||||||
'face_editor_eye_gaze_horizontal_slider',
|
'face_editor_eye_gaze_horizontal_slider',
|
||||||
|
@ -142,7 +142,6 @@ WORDING : Dict[str, Any] =\
|
|||||||
'processors': 'load a single or multiple processors (choices: {choices}, ...)',
|
'processors': 'load a single or multiple processors (choices: {choices}, ...)',
|
||||||
'age_modifier_model': 'choose the model responsible for aging the face',
|
'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_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_model': 'choose the model responsible for restoring the expression',
|
||||||
'expression_restorer_factor': 'restore factor of expression from the target face',
|
'expression_restorer_factor': 'restore factor of expression from the target face',
|
||||||
'face_debugger_items': 'load a single or multiple processors (choices: {choices})',
|
'face_debugger_items': 'load a single or multiple processors (choices: {choices})',
|
||||||
@ -220,7 +219,6 @@ WORDING : Dict[str, Any] =\
|
|||||||
'uis':
|
'uis':
|
||||||
{
|
{
|
||||||
'age_modifier_direction_slider': 'AGE MODIFIER DIRECTION',
|
'age_modifier_direction_slider': 'AGE MODIFIER DIRECTION',
|
||||||
'age_modifier_scale_slider': 'AGE MODIFIER SCALE',
|
|
||||||
'age_modifier_model_dropdown': 'AGE MODIFIER MODEL',
|
'age_modifier_model_dropdown': 'AGE MODIFIER MODEL',
|
||||||
'apply_button': 'APPLY',
|
'apply_button': 'APPLY',
|
||||||
'benchmark_cycles_slider': 'BENCHMARK CYCLES',
|
'benchmark_cycles_slider': 'BENCHMARK CYCLES',
|
||||||
|
Loading…
Reference in New Issue
Block a user