From 1c0ac89b543308900a98901fd8ddf587fe39deb6 Mon Sep 17 00:00:00 2001 From: henryruhs Date: Sat, 28 Oct 2023 10:34:43 +0200 Subject: [PATCH] Fix refresh of swapper model --- .../uis/components/frame_processors_options.py | 6 ------ facefusion/uis/components/preview.py | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/facefusion/uis/components/frame_processors_options.py b/facefusion/uis/components/frame_processors_options.py index 12dff6f9..7125ea21 100644 --- a/facefusion/uis/components/frame_processors_options.py +++ b/facefusion/uis/components/frame_processors_options.py @@ -3,9 +3,6 @@ import gradio import facefusion.globals from facefusion import wording -from facefusion.face_analyser import clear_face_analyser -from facefusion.face_cache import clear_faces_cache -from facefusion.face_reference import clear_face_reference from facefusion.processors.frame.core import load_frame_processor_module from facefusion.processors.frame import globals as frame_processors_globals, choices as frame_processors_choices from facefusion.uis.core import get_ui_component, register_ui_component @@ -81,9 +78,6 @@ def update_face_swapper_model(face_swapper_model : str) -> gradio.Dropdown: face_swapper_module = load_frame_processor_module('face_swapper') face_swapper_module.clear_frame_processor() face_swapper_module.set_options('model', face_swapper_module.MODELS[face_swapper_model]) - clear_face_analyser() - clear_face_reference() - clear_faces_cache() if not face_swapper_module.pre_check(): return gradio.Dropdown() return gradio.Dropdown(value = face_swapper_model) diff --git a/facefusion/uis/components/preview.py b/facefusion/uis/components/preview.py index d615b153..4f9a5f25 100644 --- a/facefusion/uis/components/preview.py +++ b/facefusion/uis/components/preview.py @@ -4,10 +4,11 @@ import gradio import facefusion.globals from facefusion import wording +from facefusion.face_cache import clear_faces_cache from facefusion.typing import Frame, Face from facefusion.vision import get_video_frame, count_video_frame_total, normalize_frame_color, resize_frame_dimension, read_static_image -from facefusion.face_analyser import get_one_face -from facefusion.face_reference import get_face_reference, set_face_reference +from facefusion.face_analyser import get_one_face, clear_face_analyser +from facefusion.face_reference import get_face_reference, set_face_reference, clear_face_reference from facefusion.predictor import predict_frame from facefusion.processors.frame.core import load_frame_processor_module from facefusion.utilities import is_video, is_image @@ -94,7 +95,6 @@ def listen() -> None: 'face_recognition_dropdown', 'reference_face_distance_slider', 'frame_processors_checkbox_group', - 'face_swapper_model_dropdown', 'face_enhancer_model_dropdown', 'face_enhancer_blend_slider', 'frame_enhancer_model_dropdown', @@ -104,6 +104,16 @@ def listen() -> None: component = get_ui_component(component_name) if component: component.change(update_preview_image, inputs = PREVIEW_FRAME_SLIDER, outputs = PREVIEW_IMAGE) + face_swapper_model_dropdown = get_ui_component('face_swapper_model_dropdown') + if face_swapper_model_dropdown: + face_swapper_model_dropdown.change(clear_and_update_preview_image, inputs = PREVIEW_FRAME_SLIDER, outputs = PREVIEW_IMAGE) + + +def clear_and_update_preview_image(frame_number : int = 0) -> gradio.Image: + clear_face_analyser() + clear_face_reference() + clear_faces_cache() + return update_preview_image(frame_number) def update_preview_image(frame_number : int = 0) -> gradio.Image: