|
import gradio as gr |
|
import subprocess |
|
import shutil |
|
import os |
|
from PIL import Image |
|
import numpy as np |
|
|
|
|
|
output_dir = "output" |
|
if not os.path.exists(output_dir): |
|
os.makedirs(output_dir) |
|
|
|
|
|
def custom_auth(username, password): |
|
return password == "aitutor" |
|
|
|
def run_scripts(target, source, use_face_enhancer): |
|
if target is None or (not use_face_enhancer and source is None): |
|
return None |
|
|
|
target_extension = os.path.splitext(target.name)[-1] |
|
output_path1 = os.path.join(output_dir, "output1" + target_extension) |
|
output_path2 = os.path.join(output_dir, "output2" + target_extension) |
|
|
|
if not use_face_enhancer: |
|
cmd1 = ["python3", "run.py", "-s", source.name, "-t", target.name, "-o", output_path1, "--frame-processor", "face_swapper"] |
|
subprocess.run(cmd1) |
|
|
|
cmd2 = ["python3", "run.py", "-t", target.name if use_face_enhancer else output_path1, "-o", output_path2, "--frame-processor", "face_enhancer"] |
|
subprocess.run(cmd2) |
|
|
|
if not use_face_enhancer: |
|
os.remove(source.name) |
|
os.remove(target.name) |
|
|
|
|
|
with Image.open(output_path2) as img: |
|
img_array = np.array(img) |
|
|
|
return img_array |
|
|
|
iface = gr.Interface( |
|
fn=run_scripts, |
|
inputs=[ |
|
"file", |
|
"file", |
|
gr.inputs.Checkbox(default=False, label="Use only Face Enhancer") |
|
], |
|
outputs="image", |
|
title="Pixio Swap", |
|
description="Upload a target image/video and a source image to swap faces.", |
|
live=True |
|
) |
|
|
|
iface.launch(debug=True, auth=custom_auth) |
|
|