Spaces:
Running
Running
import gradio as gr | |
import os | |
from gradio_client import Client, handle_file | |
from huggingface_hub import login | |
from gradio_imageslider import ImageSlider | |
hf_tkn = os.environ.get("HF_TKN") | |
login(hf_tkn) | |
def get_flux_image(prompt): | |
client = Client("black-forest-labs/FLUX.1-schnell") | |
result = client.predict( | |
prompt=prompt, | |
seed=0, | |
randomize_seed=True, | |
width=1024, | |
height=1024, | |
num_inference_steps=4, | |
api_name="/infer" | |
) | |
print(result) | |
return result[0] | |
def get_upscale_finegrain(prompt, img_path, upscale_factor): | |
client = Client("finegrain/finegrain-image-enhancer") | |
result = client.predict( | |
input_image=handle_file(img_path), | |
prompt=prompt, | |
negative_prompt="", | |
seed=42, | |
upscale_factor=upscale_factor, | |
controlnet_scale=0.6, | |
controlnet_decay=1, | |
condition_scale=6, | |
tile_width=112, | |
tile_height=144, | |
denoise_strength=0.35, | |
num_inference_steps=18, | |
solver="DDIM", | |
api_name="/process" | |
) | |
print(result) | |
return result[1] | |
def get_clarity_upscale(prompt, img_path, upscale_factor): | |
client = Client("jbilcke-hf/clarity-upscaler") | |
result = client.predict( | |
img_path, # filepath in 'Image' Image component | |
prompt, # str in 'Prompt' Textbox component | |
"", # str in 'Negative Prompt' Textbox component | |
upscale_factor, # float in 'Scale Factor' Number component | |
1, # float (numeric value between 1 and 50) in 'Dynamic' Slider component | |
3, # float in 'Creativity' Number component | |
3, # float in 'Resemblance' Number component | |
"16", # Literal['16', '32', '48', '64', '80', '96', '112', '128', '144', '160', '176', '192', '208', '224', '240', '256'] in 'tiling_width' Dropdown component | |
"16", # Literal['16', '32', '48', '64', '80', '96', '112', '128', '144', '160', '176', '192', '208', '224', '240', '256'] in 'tiling_height' Dropdown component | |
"epicrealism_naturalSinRC1VAE.safetensors [84d76a0328]", # Literal['epicrealism_naturalSinRC1VAE.safetensors [84d76a0328]', 'juggernaut_reborn.safetensors [338b85bc4f]', 'flat2DAnimerge_v45Sharp.safetensors'] in 'sd_model' Dropdown component | |
"DPM++ 2M Karras", # Literal['DPM++ 2M Karras', 'DPM++ SDE Karras', 'DPM++ 2M SDE Exponential', 'DPM++ 2M SDE Karras', 'Euler a', 'Euler', 'LMS', 'Heun', 'DPM2', 'DPM2 a', 'DPM++ 2S a', 'DPM++ 2M', 'DPM++ SDE', 'DPM++ 2M SDE', 'DPM++ 2M SDE Heun', 'DPM++ 2M SDE Heun Karras', 'DPM++ 2M SDE Heun Exponential', 'DPM++ 3M SDE', 'DPM++ 3M SDE Karras', 'DPM++ 3M SDE Exponential', 'DPM fast', 'DPM adaptive', 'LMS Karras', 'DPM2 Karras', 'DPM2 a Karras', 'DPM++ 2S a Karras', 'Restart', 'DDIM', 'PLMS', 'UniPC'] in 'scheduler' Dropdown component | |
1, # float (numeric value between 1 and 100) in 'Num Inference Steps' Slider component | |
3, # float in 'Seed' Number component | |
True, # bool in 'Downscaling' Checkbox component | |
3, # float in 'Downscaling Resolution' Number component | |
"Hello!!", # str in 'Lora Links' Textbox component | |
"Hello!!", # str in 'Custom Sd Model' Textbox component | |
api_name="/predict" | |
) | |
print(result) | |
return result | |
def main(prompt, upscale_factor, upscale_provider): | |
step_one_flux = get_flux_image(prompt) | |
if upscale_provider == "finegrain image enhancer": | |
step_two_upscale = get_upscale_finegrain(prompt, step_one_flux, upscale_factor) | |
elif upscale_provider == "clarity upscale": | |
step_two_upscale = get_clarity_upscale(prompt, step_one_flux, upscale_factor) | |
return (step_one_flux, step_two_upscale) | |
def clean_previous(): | |
return gr.update(value=None) | |
css = """ | |
#col-container{ | |
margin: 0 auto; | |
max-width: 1024px; | |
} | |
""" | |
with gr.Blocks(css=css) as demo: | |
with gr.Column(elem_id="col-container"): | |
gr.Markdown("# Flux Upscaled") | |
gr.Markdown("Step 1: Generate image with FLUX schnell; Step 2: UpScale with Finegrain Image-Enhancer OR Clarity UpScale;") | |
with gr.Group(): | |
prompt_in = gr.Textbox(label="Prompt") | |
with gr.Row(): | |
upscale_factor = gr.Radio( | |
label = "UpScale Factor", | |
choices = [ | |
2, 3, 4 | |
], | |
value = 2, | |
scale=2 | |
) | |
upscale_provider = gr.Dropdown( | |
label = "UpScale Provider", | |
choices = ["finegrain image enhancer", "clarity upscale"], | |
value = "clarity upscale", | |
scale=2 | |
) | |
submit_btn = gr.Button("Submit", scale=1) | |
output_res = ImageSlider(label="Flux / Upscaled") | |
gr.Examples( | |
examples = [ | |
["a tiny astronaut hatching from an egg on the moon", 2, "clarity upscale"], | |
["a bright blue bird in the garden, natural photo cinematic, MM full HD", 2, "clarity upscale"] | |
], | |
fn = main, | |
inputs=[prompt_in, upscale_factor, upscale_provider], | |
outputs=[output_res], | |
cache_examples = "lazy" | |
) | |
submit_btn.click( | |
fn = clean_previous, | |
inputs = None, | |
outputs = [output_res], | |
queue=False | |
).then( | |
fn=main, | |
inputs=[prompt_in, upscale_factor, upscale_provider], | |
outputs=[output_res], | |
) | |
demo.queue().launch(show_api=False, show_error=True) | |