Spaces:
Runtime error
Runtime error
import os | |
import time | |
import uuid | |
import gradio as gr | |
from gradio_client import Client | |
hf_token = os.environ.get('HF_TOKEN') | |
sdxl_client = Client("https://fffiloni-sdxl-dpo.hf.space/") | |
faceswap_client = Client("https://fffiloni-deepfakeai.hf.space/", hf_token=hf_token) | |
def get_sdxl(prompt_in): | |
sdxl_result = sdxl_client.predict( | |
prompt_in, | |
api_name="/infer" | |
) | |
return sdxl_result | |
def infer(portrait_in, prompt_in): | |
# Generate Image from SDXL | |
gr.Info("Generating SDXL image first ...") | |
# Keep trying the operation until it succeeds without raising an exception | |
while True: | |
try: | |
sdxl_result = get_sdxl(prompt_in) | |
break # Exit the while loop if the operation succeeded | |
except Exception as e: | |
print(f"Operation failed with error: {e}") | |
time.sleep(3) # Wait for 5 seconds before attempting again | |
unique_id = str(uuid.uuid4()) | |
# Face Swap | |
gr.Info("Face swap your face on result ...") | |
faceswap_result = faceswap_client.predict( | |
portrait_in, # str (filepath or URL to image) in 'SOURCE IMAGE' Image component | |
sdxl_result, # str (filepath or URL to image) in 'TARGET IMAGE' Image component | |
unique_id, # str in 'parameter_12' Textbox component | |
["face_swapper", "face_enhancer"], # List[str] in 'FRAME PROCESSORS' Checkboxgroup component | |
"left-right", # str (Option from: ['left-right', 'right-left', 'top-bottom', 'bottom-top', 'small-large', 'large-small']) in 'FACE ANALYSER DIRECTION' Dropdown component | |
"none", # str (Option from: ['none', 'reference', 'many']) in 'FACE RECOGNITION' Dropdown component | |
"none", # str (Option from: ['none', 'male', 'female']) in 'FACE ANALYSER GENDER' Dropdown component | |
fn_index=1 | |
) | |
return faceswap_result | |
css = """ | |
#col-container{ | |
margin: 0 auto; | |
max-width: 840px; | |
} | |
""" | |
with gr.Blocks(css=css) as demo: | |
with gr.Column(elem_id="col-container"): | |
gr.HTML(""" | |
<h2 style="text-align: center;">SDXL Auto FaceSwap</h2> | |
""") | |
with gr.Row(): | |
with gr.Group(): | |
with gr.Column(): | |
portrait_in = gr.Image(label="Your face portrait", type="filepath") | |
prompt_in = gr.Textbox(label="Prompt to desired portrait using your own face") | |
submit_btn = gr.Button("Submit") | |
with gr.Column(): | |
result = gr.Image(label="Result") | |
submit_btn.click( | |
fn = infer, | |
inputs = [ | |
portrait_in, | |
prompt_in | |
], | |
outputs = [ | |
result | |
] | |
) | |
demo.queue().launch() |