Spaces:
Runtime error
Runtime error
File size: 3,244 Bytes
c4f1a34 f1c2d0d c4f1a34 9604814 c4f1a34 9604814 f1c2d0d c4f1a34 52256ac c4f1a34 f1c2d0d c4f1a34 f1c2d0d c4f1a34 f1c2d0d c51b87c c4f1a34 49c7285 c4f1a34 49c7285 c4f1a34 49c7285 c4f1a34 49c7285 c4f1a34 49c7285 c4f1a34 88baf91 c4f1a34 88baf91 c4f1a34 b47708a c4f1a34 f1c2d0d c4f1a34 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
import numpy as np
import gradio as gr
import roop.globals
from roop.core import (
start,
decode_execution_providers,
suggest_max_memory,
suggest_execution_threads,
)
from roop.processors.frame.core import get_frame_processors_modules
from roop.utilities import normalize_output_path
import os
from PIL import Image
import uuid
# Global variable to store history
history = []
def swap_face(source_file, target_files, doFaceEnhancer):
global history
output_paths = []
source_path = f"input_{uuid.uuid4()}.jpg"
source_image = Image.fromarray(source_file)
source_image.save(source_path)
for target_file in target_files:
target_path = target_file.name
print(f"Processing image: {target_path}")
print("source_path: ", source_path)
print("target_path: ", target_path)
roop.globals.source_path = source_path
roop.globals.target_path = target_path
output_path = f"output_{uuid.uuid4()}.jpg"
roop.globals.output_path = normalize_output_path(
roop.globals.source_path, roop.globals.target_path, output_path
)
if doFaceEnhancer:
roop.globals.frame_processors = ["face_swapper", "face_enhancer"]
else:
roop.globals.frame_processors = ["face_swapper"]
roop.globals.headless = True
roop.globals.keep_fps = True
roop.globals.keep_audio = True
roop.globals.keep_frames = False
roop.globals.many_faces = False
roop.globals.video_encoder = "libx264"
roop.globals.video_quality = 18
roop.globals.max_memory = suggest_max_memory()
roop.globals.execution_providers = decode_execution_providers(["cuda"])
roop.globals.execution_threads = suggest_execution_threads()
print(
"start process",
roop.globals.source_path,
roop.globals.target_path,
roop.globals.output_path,
)
for frame_processor in get_frame_processors_modules(
roop.globals.frame_processors
):
if not frame_processor.pre_check():
return
start()
output_paths.append(output_path)
# Add to history
history.extend(output_paths)
return output_paths, gr.update(value=history)
def get_history():
return history
with gr.Blocks() as app:
with gr.Tab("Face Swap"):
with gr.Row():
source_input = gr.Image(label="Source Image")
target_input = gr.File(label="Target Image(s)", file_count="multiple")
enhance_checkbox = gr.Checkbox(label="Use Face Enhancer", info="Apply face enhancement")
swap_button = gr.Button("Swap Faces")
output_gallery = gr.Gallery(label="Output Images")
with gr.Tab("History"):
history_gallery = gr.Gallery(label="Previous Outputs")
refresh_button = gr.Button("Refresh History")
swap_button.click(
fn=swap_face,
inputs=[source_input, target_input, enhance_checkbox],
outputs=[output_gallery, history_gallery]
)
refresh_button.click(
fn=get_history,
inputs=[],
outputs=[history_gallery]
)
app.launch()
|