File size: 4,192 Bytes
0dec378 0cfb4a5 0dec378 0a67e9a a484b84 3373fee 0cfb4a5 3373fee 0dec378 b206729 0dec378 79024bb b206729 b37d7c8 79024bb 3d2ee8a 0cfb4a5 0dec378 ac36fcc 0cfb4a5 ac36fcc b20c582 ac36fcc b20c582 ac36fcc b20c582 ac36fcc b20c582 0cfb4a5 a484b84 1c144e4 b20c582 79024bb 6c31c17 1c144e4 6c31c17 0cfb4a5 0a67e9a 79024bb 7f2fa6c 8221a06 b0241f6 b20c582 e201fee 289d5f1 b5806de 0dec378 b206729 b20c582 0dec378 b20c582 0dec378 b20c582 0dec378 0cfb4a5 |
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 126 127 128 129 130 131 132 133 134 135 136 137 |
import gradio as gr
import os
from gradio_client import Client, handle_file
from huggingface_hub import login
from PIL import Image
import numpy as np
import random
from translatepy import Translator
import requests
import re
import asyncio
from gradio_imageslider import ImageSlider
hf_tkn = os.environ.get("HF_TKN")
login(hf_tkn)
translator = Translator()
basemodel = "black-forest-labs/FLUX.1-dev"
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');
}
}"""
def enable_lora(lora_add):
if not lora_add:
return basemodel
else:
return lora_add
def handle_file(img_path):
return Image.open(img_path)
def get_upscale_finegrain(prompt, img_path, upscale_factor):
if upscale_factor == 0:
return handle_file(img_path)
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]
async def upscale_image(image, upscale_factor):
try:
result = get_upscale_finegrain(
prompt="",
img_path=image,
upscale_factor=upscale_factor
)
except Exception as e:
raise gr.Error(f"Error in {e}")
return result
async def generate_image(
prompt:str,
model:str,
lora_word:str,
width:int=768,
height:int=1024,
scales:float=3.5,
steps:int=24,
seed:int=-1
):
if seed == -1:
seed = random.randint(0, MAX_SEED)
seed = int(seed)
print(f'prompt:{prompt}')
text = str(translator.translate(prompt, 'English')) + "," + lora_word
try:
image = gr.Image(type="pil", image=gr.processing_utils.encode_pil_image(text_to_image(text, height=height, width=width, guidance_scale=scales, num_inference_steps=steps, model=model)))
except Exception as e:
raise gr.Error(f"Error in {e}")
return image, seed
async def gen(
prompt:str,
lora_add:str="XLabs-AI/flux-RealismLora",
lora_word:str="",
width:int=768,
height:int=1024,
scales:float=3.5,
steps:int=24,
seed:int=-1,
upscale_factor:int=0
):
model = enable_lora(lora_add)
image, seed = await generate_image(prompt,model,lora_word,width,height,scales,steps,seed)
upscaled_image = await upscale_image(image, upscale_factor)
return upscaled_image, seed
with gr.Blocks(css=CSS, js=JS, theme="Nymbo/Nymbo_Theme") as demo:
gr.HTML("<h1><center>Flux Lab Light</center></h1>")
with gr.Row():
with gr.Column(scale=4):
with gr.Row():
img = gr.Image(type="filepath", label='Imagen generada por Flux', height=600)
with gr.Row():
prompt = gr.Textbox(label='Ingresa tu prompt (Multi-Idiomas)', placeholder="Ingresa prompt...", scale=6)
sendBtn = gr.Button(scale=1, variant='primary')
with gr.Accordion("Opciones avanzadas", open=True):
with gr.Column(scale=1):
width = gr.Slider(label="Ancho", minimum=512, maximum=1280, step=8, value=768)
height = gr.Slider(label="Alto", minimum=512, maximum=1280, step=8, value=1024)
scales = gr.Slider(label="Guía", minimum=3.5, maximum=7, step=0.1, value=3.5)
steps = gr.Slider(label="Pasos", minimum=1, maximum=50, step=1)
upscale_factor = gr.Slider(label="Factor de escala", minimum=0, maximum=4, step=1, value=0)
seed = gr.Number(label="Semilla", value=-1)
sendBtn.click(gen, inputs=[prompt, lora_add, lora_word, width, height, scales, steps, seed, upscale_factor], outputs=[img])
demo.launch() |