From 2209109c8f13872e25019a3957f28cf37a76d0ba Mon Sep 17 00:00:00 2001 From: henryruhs Date: Tue, 24 Oct 2023 11:41:36 +0200 Subject: [PATCH] Set the reference_frame_number in face_selector component --- facefusion/uis/components/face_selector.py | 19 ++++++++++++------- facefusion/uis/components/preview.py | 3 +-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/facefusion/uis/components/face_selector.py b/facefusion/uis/components/face_selector.py index 703d5d94..34adb511 100644 --- a/facefusion/uis/components/face_selector.py +++ b/facefusion/uis/components/face_selector.py @@ -59,7 +59,7 @@ def render() -> None: def listen() -> None: FACE_RECOGNITION_DROPDOWN.select(update_face_recognition, inputs = FACE_RECOGNITION_DROPDOWN, outputs = [ REFERENCE_FACE_POSITION_GALLERY, REFERENCE_FACE_DISTANCE_SLIDER ]) - REFERENCE_FACE_POSITION_GALLERY.select(clear_and_update_face_reference_position) + REFERENCE_FACE_POSITION_GALLERY.select(clear_and_update_reference_face_position) REFERENCE_FACE_DISTANCE_SLIDER.change(update_reference_face_distance, inputs = REFERENCE_FACE_DISTANCE_SLIDER) multi_component_names : List[ComponentName] =\ [ @@ -70,7 +70,7 @@ def listen() -> None: component = get_ui_component(component_name) if component: for method in [ 'upload', 'change', 'clear' ]: - getattr(component, method)(update_face_reference_position, outputs = REFERENCE_FACE_POSITION_GALLERY) + getattr(component, method)(update_reference_face_position, outputs = REFERENCE_FACE_POSITION_GALLERY) select_component_names : List[ComponentName] =\ [ 'face_analyser_direction_dropdown', @@ -80,10 +80,11 @@ def listen() -> None: for component_name in select_component_names: component = get_ui_component(component_name) if component: - component.select(update_face_reference_position, outputs = REFERENCE_FACE_POSITION_GALLERY) + component.select(update_reference_face_position, outputs = REFERENCE_FACE_POSITION_GALLERY) preview_frame_slider = get_ui_component('preview_frame_slider') if preview_frame_slider: - preview_frame_slider.release(update_face_reference_position, outputs = REFERENCE_FACE_POSITION_GALLERY) + preview_frame_slider.change(update_reference_frame_number, inputs = preview_frame_slider) + preview_frame_slider.release(update_reference_face_position, outputs = REFERENCE_FACE_POSITION_GALLERY) def update_face_recognition(face_recognition : FaceRecognition) -> Tuple[gradio.Gallery, gradio.Slider]: @@ -95,12 +96,12 @@ def update_face_recognition(face_recognition : FaceRecognition) -> Tuple[gradio. return gradio.Gallery(visible = False), gradio.Slider(visible = False) -def clear_and_update_face_reference_position(event: gradio.SelectData) -> gradio.Gallery: +def clear_and_update_reference_face_position(event : gradio.SelectData) -> gradio.Gallery: clear_face_reference() - return update_face_reference_position(event.index) + return update_reference_face_position(event.index) -def update_face_reference_position(reference_face_position : int = 0) -> gradio.Gallery: +def update_reference_face_position(reference_face_position : int = 0) -> gradio.Gallery: gallery_frames = [] facefusion.globals.reference_face_position = reference_face_position if is_image(facefusion.globals.target_path): @@ -118,6 +119,10 @@ def update_reference_face_distance(reference_face_distance : float) -> None: facefusion.globals.reference_face_distance = reference_face_distance +def update_reference_frame_number(reference_frame_number : int) -> None: + facefusion.globals.reference_frame_number = reference_frame_number + + def extract_gallery_frames(reference_frame : Frame) -> List[Frame]: crop_frames = [] faces = get_many_faces(reference_frame) diff --git a/facefusion/uis/components/preview.py b/facefusion/uis/components/preview.py index 2d72c97d..bba38271 100644 --- a/facefusion/uis/components/preview.py +++ b/facefusion/uis/components/preview.py @@ -123,8 +123,7 @@ def update_preview_image(frame_number : int = 0) -> gradio.Image: preview_frame = normalize_frame_color(preview_frame) return gradio.Image(value = preview_frame) if is_video(facefusion.globals.target_path): - facefusion.globals.reference_frame_number = frame_number - temp_frame = get_video_frame(facefusion.globals.target_path, facefusion.globals.reference_frame_number) + temp_frame = get_video_frame(facefusion.globals.target_path, frame_number) preview_frame = process_preview_frame(source_face, reference_face, temp_frame) preview_frame = normalize_frame_color(preview_frame) return gradio.Image(value = preview_frame)