Joyloyman's picture
Upload 2 files
c976d97
import gradio as gr
import numpy as np
from kandinsky2 import get_kandinsky2
import torch
def text2img(text,heig,widt,num,sampler,numsteps,batchsize):
torch.cuda.empty_cache()
images =[]
model = get_kandinsky2('cuda', task_type='text2img', cache_dir='/tmp/kandinsky2', model_version='2.1', use_flash_attention=False)
for i in range(num):
outputs = model.generate_text2img(
text,
num_steps=numsteps,
batch_size=batchsize,
guidance_scale=4,
h=heig, w=widt,
sampler=sampler,
prior_cf_scale=4,
prior_steps="5"
)
images.append(outputs[0])
return images
def mixing(image1,image2,sampler,num_steps,batch_size,num):
torch.cuda.empty_cache()
images =[]
model = get_kandinsky2('cuda', task_type='text2img', model_version='2.1', use_flash_attention=False)
for i in range(num):
weights = [0.5, 0.5]
output_mixing = model.mix_images(
[image1,image2],
weights,
num_steps,
batch_size,
guidance_scale=5,
h=300, w=300,
sampler=sampler,
prior_cf_scale=4,
prior_steps="5"
)
images.append(output_mixing[0])
return images
with gr.Blocks()as demo:
gr.Markdown("Генерация изображения")
with gr.Tab("Генерация изображения по текстовому запросу"):
with gr.Blocks():
with gr.Row().style(equal_height=True):
with gr.Column():
text_input=gr.Textbox()
sampler = gr.Radio(
["ddim_sampler", "p_sampler", "plms_sampler"],
value="p_sampler",
label="Sampler",)
size_h=gr.Slider(216,864,step=100,label="Высота")
size_w=gr.Slider(216,864,step=100,label="Ширина")
num_steps=gr.Slider(50,250,step=25,label="Количество шагов")
batch_size=gr.Slider(2,20,step=1,label="Размер батча")
num=gr.Slider(1,8,step=1,label="Количество")
with gr.Column():
image_output=gr.Gallery()
image_button = gr.Button("Сгенерировать")
image_button.click(text2img,inputs=[text_input,size_h,size_w,num,sampler,num_steps,batch_size],outputs=image_output)
with gr.Tab("Объеденение двух изображений"):
with gr.Row():
with gr.Column():
image_input1=gr.Image(type="pil")
image_input2=gr.Image(type="pil")
sampler = gr.Radio(
["ddim_sampler", "p_sampler", "plms_sampler"],
value="p_sampler",
label="Sampler",)
num_steps=gr.Slider(50,250,step=25,label="Количество шагов")
batch_size=gr.Slider(2,20,step=1,label="Размер батча")
num=gr.Slider(1,8,step=1,label="Количество")
with gr.Column():
image_mixing_output=gr.Gallery(type="pil")
image_mixing_output_button=gr.Button("Сгенерировать")
image_mixing_output_button.click(mixing,inputs=[image_input1,image_input2,sampler,num_steps,batch_size,num],outputs=image_mixing_output)
demo.launch(share=True)