Spaces:
Runtime error
Runtime error
File size: 4,362 Bytes
0cfb4a5 d4fba6d 0dec378 de6051a 0dec378 0a67e9a a484b84 d4fba6d 2fc432b 1a52ee5 e3be785 219d097 0dec378 219d097 20ffdd2 0dec378 79f1585 e3be785 219d097 e3be785 219d097 2fc432b 219d097 e3be785 219d097 e3be785 219d097 1a52ee5 e3be785 219d097 e3be785 79024bb 2fc432b e3be785 de6051a 219d097 2fc432b e3be785 219d097 e3be785 79f1585 e3be785 79f1585 e3be785 2fc432b e3be785 219d097 |
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 |
import os
import gradio as gr
import numpy as np
import random
from huggingface_hub import AsyncInferenceClient
from translatepy import Translator
import requests
import re
import asyncio
from PIL import Image
from gradio_client import Client, handle_file
from huggingface_hub import login
from gradio_imageslider import ImageSlider
# Configuraci贸n inicial
translator = Translator()
HF_TOKEN = os.environ.get("HF_TOKEN")
basemodel = "black-forest-labs/FLUX.1-schnell"
MAX_SEED = np.iinfo(np.int32).max
CSS = "footer { visibility: hidden; }"
JS = "function () { gradioURL = window.location.href; if (!gradioURL.endsWith('?__theme=dark')) { window.location.replace(gradioURL + '?__theme=dark'); } }"
# Funci贸n para habilitar LoRA
def enable_lora(lora_add):
return basemodel if not lora_add else lora_add
# Funci贸n as铆ncrona para generar im谩genes
async def generate_image(prompt, model, lora_word, width, height, scales, steps, seed):
try:
if seed == -1:
seed = random.randint(0, MAX_SEED)
seed = int(seed)
text = str(translator.translate(prompt, 'English')) + "," + lora_word
client = AsyncInferenceClient()
image = await client.text_to_image(prompt=text, height=height, width=width, guidance_scale=scales, num_inference_steps=steps, model=model)
return image, seed
except Exception as e:
raise gr.Error(f"Error en {e}")
# Funci贸n as铆ncrona para generar im谩genes y aplicar upscale
async def gen(prompt, lora_add, lora_word, width, height, scales, steps, seed, upscale_factor, process_upscale):
model = enable_lora(lora_add)
image, seed = await generate_image(prompt, model, lora_word, width, height, scales, steps, seed)
image_path = "temp_image.png"
image.save(image_path)
if process_upscale:
upscale_image = get_upscale_finegrain(prompt, image_path, upscale_factor)
else:
upscale_image = image_path
return [image_path, upscale_image]
# Funci贸n para aplicar upscale con Finegrain
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")
return result[1]
# Configuraci贸n de CSS
css = """
#col-container{
margin: 0 auto;
max-width: 1024px;
}
"""
with gr.Blocks(css=CSS, js=JS, theme="Nymbo/Nymbo_Theme") 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")
with gr.Group():
prompt = gr.Textbox(label="Prompt")
with gr.Row():
lora_add = gr.Textbox(label="Add Flux LoRA", info="Modelo Lora", lines=1, value="XLabs-AI/flux-RealismLora")
lora_word = gr.Textbox(label="Add Flux LoRA Trigger Word", info="Add the Trigger Word", lines=1, value="")
width = gr.Slider(label="Width", minimum=512, maximum=1280, step=8, value=768)
height = gr.Slider(label="Height", minimum=512, maximum=1280, step=8, value=1024)
scales = gr.Slider(label="Guidance", minimum=3.5, maximum=7, step=0.1, value=3.5)
steps = gr.Slider(label="Steps", minimum=1, maximum=100, step=1, value=24)
seed = gr.Slider(label="Seeds", minimum=-1, maximum=MAX_SEED, step=1, value=-1)
upscale_factor = gr.Radio(label="UpScale Factor", choices=[2, 3, 4], value=2, scale=2)
process_upscale = gr.Checkbox(label="Process Upscale", value=True)
submit_btn = gr.Button("Submit", scale=1)
output_res = ImageSlider(label="Flux / Upscaled")
submit_btn.click(
fn=lambda: None,
inputs=None,
outputs=[output_res],
queue=False
).then(
fn=gen,
inputs=[prompt, lora_add, lora_word, width, height, scales, steps, seed, upscale_factor, process_upscale],
outputs=[output_res]
)
# Iniciar la aplicaci贸n
demo.launch() |