|
from turtle import width |
|
import gradio as gr |
|
import random |
|
import os |
|
import io, base64 |
|
from PIL import Image |
|
import numpy |
|
import shortuuid |
|
|
|
latent = gr.Interface.load("spaces/multimodalart/latentdiffusion") |
|
rudalle = gr.Interface.load("spaces/multimodalart/rudalle") |
|
|
|
|
|
|
|
|
|
def text2image_latent(text,steps,width,height,images,diversity): |
|
results = latent(text, steps, width, height, images, diversity) |
|
image_paths = [] |
|
image_arrays = [] |
|
for image in results[1]: |
|
image_str = image[0] |
|
image_str = image_str.replace("data:image/png;base64,","") |
|
decoded_bytes = base64.decodebytes(bytes(image_str, "utf-8")) |
|
img = Image.open(io.BytesIO(decoded_bytes)) |
|
image_arrays.append(numpy.asarray(img)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return(results[0],image_arrays) |
|
|
|
def text2image_rudalle(text,aspect,model): |
|
image = rudalle(text,aspect,model)[0] |
|
return(image) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
css_mt = {"margin-top": "1em"} |
|
|
|
empty = gr.outputs.HTML() |
|
|
|
with gr.Blocks() as mindseye: |
|
gr.Markdown("# MindsEye Lite") |
|
gr.Markdown("### Run multiple text-to-image models in one place") |
|
gr.Markdown("<style>.mx-auto.container .gr-form-gap {flex-direction: row; gap: calc(1rem * calc(1 - var(--tw-space-y-reverse)));} .mx-auto.container .gr-form-gap .flex-col, .mx-auto.container .gr-form-gap .gr-box{width: 100%}</style>") |
|
text = gr.inputs.Textbox(placeholder="Try writing something..", label="Prompt") |
|
with gr.Column(): |
|
with gr.Row(): |
|
with gr.Tabs(): |
|
with gr.TabItem("Latent Diffusion"): |
|
steps = gr.inputs.Slider(label="Steps - more steps can increase quality but will take longer to generate",default=45,maximum=50,minimum=1,step=1) |
|
width = gr.inputs.Slider(label="Width", default=256, step=32, maximum=256, minimum=32) |
|
height = gr.inputs.Slider(label="Height", default=256, step=32, maximum = 256, minimum=32) |
|
images = gr.inputs.Slider(label="Images - How many images you wish to generate", default=2, step=1, minimum=1, maximum=4) |
|
diversity = gr.inputs.Slider(label="Diversity scale - How different from one another you wish the images to be",default=5.0, minimum=1.0, maximum=15.0) |
|
get_image_latent = gr.Button("Generate Image",css=css_mt) |
|
|
|
with gr.TabItem("ruDALLE"): |
|
aspect = gr.inputs.Radio(label="Aspect Ratio", choices=["Square", "Horizontal", "Vertical"],default="Square") |
|
model = gr.inputs.Dropdown(label="Model", choices=["Surrealism","Realism", "Emoji"], default="Surrealism") |
|
get_image_rudalle = gr.Button("Generate Image",css=css_mt) |
|
with gr.Row(): |
|
with gr.Tabs(): |
|
with gr.TabItem("Image output"): |
|
image = gr.outputs.Image() |
|
with gr.TabItem("Gallery output"): |
|
gallery = gr.outputs.Carousel(label="Individual images",components=["image"]) |
|
|
|
get_image_latent.click(text2image_latent, inputs=[text,steps,width,height,images,diversity], outputs=[image,gallery]) |
|
get_image_rudalle.click(text2image_rudalle, inputs=[text,aspect,model], outputs=image) |
|
mindseye.launch(enable_queue=True) |
|
|