Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,634 Bytes
c32783f 417ab93 02077b2 417ab93 1110322 417ab93 b9c7e81 417ab93 12acefe 417ab93 e09ea8e 417ab93 23c7c7d 417ab93 12acefe 417ab93 12acefe 417ab93 02077b2 e0f1f35 02077b2 417ab93 02077b2 417ab93 e0f1f35 417ab93 12acefe 417ab93 46088e2 |
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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
import spaces
import os
import time
import shutil
import gradio as gr
ROOP_DEFAULT_PATH = "media/roop_default.png"
ROOP_OUTPUT_PATH = "media/roop_output.png"
def _handle_roop_solve(
video_path: str,
img_path: str
):
if video_path is None:
raise gr.Error("Please upload source video!")
if img_path is None:
raise gr.Error("Please upload target image!")
if not os.path.exists("media"):
os.mkdir("media")
start_time = time.time()
command = f"python run.py -t {video_path} -s {img_path} -o {ROOP_OUTPUT_PATH} --execution-threads 64 --frame-processor face_swapper --output-video-quality 95"
os.system(command)
solved_time = time.time() - start_time
message = "Successfully solve the GED problem, using time ({:.3f}s).".format(solved_time)
return message, ROOP_OUTPUT_PATH
@spaces.GPU
def handle_roop(
video_path: str,
img_path: str
):
try:
message = _handle_roop_solve(
video_path=video_path,
img_path=img_path
)
return message
except Exception as e:
message = str(e)
return message, ROOP_OUTPUT_PATH
def handle_roop_clear():
shutil.copy(
src=ROOP_DEFAULT_PATH,
dst=ROOP_OUTPUT_PATH
)
message = "successfully clear the files!"
return message, ROOP_OUTPUT_PATH
with gr.Blocks() as ged_page:
gr.Markdown(
'''
This space displays how to perform face swapping.
## How to use this Space?
- Upload a video, preferably with a duration of less than 5 seconds.
- Upload a photo of the person you wish to swap with.
- You will receive the result of the face swap after 5-10 minutes.
- Click the 'clear' button to clear all the files.
## Examples
- You can get the test examples from our [Roop Dataset Repo.](https://huggingface.co/datasets/SJTU-TES/Roop)
'''
)
with gr.Row(variant="panel"):
with gr.Column(scale=2):
with gr.Row():
upload_video = gr.Image(
label="Gambar Tujuan",
type="filepath",
min_width=40,
)
#gr.Video(
# label="Upload .mp4 Vide0",
# format="mp4",
#)
upload_img = gr.Image(
label="Wajah Orang",
type="filepath",
min_width=40,
)
info = gr.Textbox(
value="",
label="Log",
scale=4,
)
with gr.Row():
with gr.Column(scale=1, min_width=100):
solve_button = gr.Button(
value="Solve",
variant="primary",
scale=1
)
with gr.Column(scale=1, min_width=100):
clear_button = gr.Button(
"Clear",
variant="secondary",
scale=1
)
with gr.Column(scale=8):
pass
with gr.Column(scale=2):
output_video = gr.Image()
solve_button.click(
handle_roop,
[upload_video, upload_img],
outputs=[info, output_video]
)
clear_button.click(
handle_roop_clear,
inputs=None,
outputs=[info, output_video]
)
if __name__ == "__main__":
ged_page.launch(debug = True) |