mirror of
https://github.com/s0md3v/roop.git
synced 2025-12-06 18:08:29 +00:00
Start with reference component
This commit is contained in:
parent
aaf50a74eb
commit
b0b3608b94
@ -29,12 +29,12 @@ def render() -> None:
|
|||||||
if is_image(roop.globals.target_path):
|
if is_image(roop.globals.target_path):
|
||||||
temp_frame = cv2.imread(roop.globals.target_path)
|
temp_frame = cv2.imread(roop.globals.target_path)
|
||||||
preview_frame = get_preview_frame(temp_frame)
|
preview_frame = get_preview_frame(temp_frame)
|
||||||
preview_image_args['value'] = normalize_preview_frame(preview_frame)
|
preview_image_args['value'] = ui.normalize_frame(preview_frame)
|
||||||
preview_image_args['visible'] = True
|
preview_image_args['visible'] = True
|
||||||
if is_video(roop.globals.target_path):
|
if is_video(roop.globals.target_path):
|
||||||
temp_frame = get_video_frame(roop.globals.target_path, roop.globals.reference_frame_number)
|
temp_frame = get_video_frame(roop.globals.target_path, roop.globals.reference_frame_number)
|
||||||
preview_frame = get_preview_frame(temp_frame)
|
preview_frame = get_preview_frame(temp_frame)
|
||||||
preview_image_args['value'] = normalize_preview_frame(preview_frame)
|
preview_image_args['value'] = ui.normalize_frame(preview_frame)
|
||||||
preview_image_args['visible'] = True
|
preview_image_args['visible'] = True
|
||||||
preview_slider_args['value'] = roop.globals.reference_frame_number
|
preview_slider_args['value'] = roop.globals.reference_frame_number
|
||||||
preview_slider_args['maximum'] = get_video_frame_total(roop.globals.target_path)
|
preview_slider_args['maximum'] = get_video_frame_total(roop.globals.target_path)
|
||||||
@ -54,12 +54,12 @@ def update(frame_number: int = 0) -> Tuple[Dict[Any, Any], Dict[Any, Any]]:
|
|||||||
if is_image(roop.globals.target_path):
|
if is_image(roop.globals.target_path):
|
||||||
temp_frame = cv2.imread(roop.globals.target_path)
|
temp_frame = cv2.imread(roop.globals.target_path)
|
||||||
preview_frame = get_preview_frame(temp_frame)
|
preview_frame = get_preview_frame(temp_frame)
|
||||||
return gradio.update(value=normalize_preview_frame(preview_frame), visible=True), gradio.update(value=0, maximum=1, visible=False)
|
return gradio.update(value=ui.normalize_frame(preview_frame), visible=True), gradio.update(value=0, maximum=1, visible=False)
|
||||||
if is_video(roop.globals.target_path):
|
if is_video(roop.globals.target_path):
|
||||||
video_frame_total = get_video_frame_total(roop.globals.target_path)
|
video_frame_total = get_video_frame_total(roop.globals.target_path)
|
||||||
temp_frame = get_video_frame(roop.globals.target_path, frame_number)
|
temp_frame = get_video_frame(roop.globals.target_path, frame_number)
|
||||||
preview_frame = get_preview_frame(temp_frame)
|
preview_frame = get_preview_frame(temp_frame)
|
||||||
return gradio.update(value=normalize_preview_frame(preview_frame), visible=True), gradio.update(value=frame_number, maximum=video_frame_total, visible=True)
|
return gradio.update(value=ui.normalize_frame(preview_frame), visible=True), gradio.update(value=frame_number, maximum=video_frame_total, visible=True)
|
||||||
return gradio.update(value=None, visible=False), gradio.update(value=0, maximum=1, visible=False)
|
return gradio.update(value=None, visible=False), gradio.update(value=0, maximum=1, visible=False)
|
||||||
|
|
||||||
|
|
||||||
@ -83,5 +83,3 @@ def get_preview_frame(temp_frame: Frame) -> Frame:
|
|||||||
return temp_frame
|
return temp_frame
|
||||||
|
|
||||||
|
|
||||||
def normalize_preview_frame(preview_frame: Frame) -> Frame:
|
|
||||||
return cv2.cvtColor(preview_frame, cv2.COLOR_BGR2RGB)
|
|
||||||
|
|||||||
42
roop/uis/__components__/reference.py
Normal file
42
roop/uis/__components__/reference.py
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
from time import sleep
|
||||||
|
from typing import Dict, Any
|
||||||
|
|
||||||
|
import gradio
|
||||||
|
|
||||||
|
import roop.globals
|
||||||
|
from roop.capturer import get_video_frame
|
||||||
|
from roop.face_analyser import get_many_faces
|
||||||
|
from roop.uis import core as ui
|
||||||
|
from roop.utilities import is_video
|
||||||
|
|
||||||
|
|
||||||
|
def render() -> None:
|
||||||
|
with gradio.Box():
|
||||||
|
reference_face_gallery_args: Dict[str, Any] = {
|
||||||
|
'label': 'reference_faces',
|
||||||
|
'columns': 6,
|
||||||
|
'height': 200,
|
||||||
|
'allow_preview': False,
|
||||||
|
'visible': True
|
||||||
|
}
|
||||||
|
if is_video(roop.globals.target_path):
|
||||||
|
target_frame = get_video_frame(roop.globals.target_path, roop.globals.reference_frame_number)
|
||||||
|
faces = get_many_faces(target_frame)
|
||||||
|
if faces:
|
||||||
|
value = []
|
||||||
|
for face in faces:
|
||||||
|
start_x, start_y, end_x, end_y = map(int, face['bbox'])
|
||||||
|
crop_frame = target_frame[start_y:end_y, start_x:end_x]
|
||||||
|
value.append(ui.normalize_frame(crop_frame))
|
||||||
|
reference_face_gallery_args['value'] = value
|
||||||
|
else:
|
||||||
|
reference_face_gallery_args['value'] = []
|
||||||
|
reference_face_gallery = gradio.Gallery(**reference_face_gallery_args)
|
||||||
|
similar_face_distance_slider = gradio.Slider(
|
||||||
|
label='similar_face_distance',
|
||||||
|
value=roop.globals.similar_face_distance,
|
||||||
|
minimum=0,
|
||||||
|
maximum=2,
|
||||||
|
step=0.05
|
||||||
|
)
|
||||||
|
ui.register_component('reference_face_gallery', reference_face_gallery)
|
||||||
@ -1,4 +1,4 @@
|
|||||||
from typing import Any, Dict, List, Literal
|
from typing import Any, Dict, List
|
||||||
import gradio
|
import gradio
|
||||||
import onnxruntime
|
import onnxruntime
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import gradio
|
import gradio
|
||||||
|
|
||||||
from roop.uis.__components__ import settings, source, target, preview, output
|
from roop.uis.__components__ import settings, source, target, preview, reference, output
|
||||||
|
|
||||||
|
|
||||||
def render() -> gradio.Blocks:
|
def render() -> gradio.Blocks:
|
||||||
@ -13,6 +13,7 @@ def render() -> gradio.Blocks:
|
|||||||
target.render()
|
target.render()
|
||||||
with gradio.Column(scale=2):
|
with gradio.Column(scale=2):
|
||||||
preview.render()
|
preview.render()
|
||||||
|
reference.render()
|
||||||
with gradio.Row():
|
with gradio.Row():
|
||||||
output.render()
|
output.render()
|
||||||
return layout
|
return layout
|
||||||
|
|||||||
@ -1,8 +1,11 @@
|
|||||||
import importlib
|
import importlib
|
||||||
from typing import Dict, Optional, List
|
from typing import Dict, Optional, List
|
||||||
|
|
||||||
|
import cv2
|
||||||
import gradio
|
import gradio
|
||||||
|
|
||||||
import roop.globals
|
import roop.globals
|
||||||
|
from roop.typing import Frame
|
||||||
from roop.uis.typing import Component, ComponentName
|
from roop.uis.typing import Component, ComponentName
|
||||||
from roop.utilities import list_module_names
|
from roop.utilities import list_module_names
|
||||||
|
|
||||||
@ -34,3 +37,7 @@ def register_component(name: ComponentName, component: Component) -> None:
|
|||||||
|
|
||||||
def list_ui_layouts_names() -> Optional[List[str]]:
|
def list_ui_layouts_names() -> Optional[List[str]]:
|
||||||
return list_module_names('roop/uis/__layouts__')
|
return list_module_names('roop/uis/__layouts__')
|
||||||
|
|
||||||
|
|
||||||
|
def normalize_frame(frame: Frame) -> Frame:
|
||||||
|
return cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
||||||
|
|||||||
@ -5,6 +5,7 @@ Component = gradio.File or gradio.Image or gradio.Video
|
|||||||
ComponentName = Literal[
|
ComponentName = Literal[
|
||||||
'source_file',
|
'source_file',
|
||||||
'target_file',
|
'target_file',
|
||||||
|
'reference_face_gallery',
|
||||||
'frame_processors_checkbox_group',
|
'frame_processors_checkbox_group',
|
||||||
'many_faces_checkbox'
|
'many_faces_checkbox'
|
||||||
]
|
]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user