|
import gradio as gr |
|
from PIL import Image |
|
import os |
|
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '7' |
|
|
|
from OmniGen import OmniGenPipeline |
|
|
|
pipe = OmniGenPipeline.from_pretrained("shitao/tmp-preview") |
|
|
|
|
|
def generate_image(text, img1, img2, img3, height, width, guidance_scale): |
|
input_images = [img1, img2, img3] |
|
|
|
input_images = [img for img in input_images if img is not None] |
|
if len(input_images) == 0: |
|
input_images = None |
|
|
|
output = pipe( |
|
prompt=text, |
|
input_images=input_images, |
|
height=height, |
|
width=width, |
|
guidance_scale=guidance_scale, |
|
img_guidance_scale=1.6, |
|
separate_cfg_infer=True, |
|
use_kv_cache=False |
|
) |
|
img = output[0] |
|
return img |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("## Text + Multiple Images to Image Generator") |
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
|
|
prompt_input = gr.Textbox(label="Enter your prompt", placeholder="Type your prompt here...") |
|
|
|
|
|
image_input_1 = gr.Image(label="<img><|image_1|></img>", type="filepath") |
|
image_input_2 = gr.Image(label="<img><|image_2|></img>", type="filepath") |
|
image_input_3 = gr.Image(label="<img><|image_3|></img>", type="filepath") |
|
|
|
|
|
height_input = gr.Slider(label="Height", minimum=256, maximum=2048, value=1024, step=16) |
|
width_input = gr.Slider(label="Width", minimum=256, maximum=2048, value=1024, step=16) |
|
|
|
|
|
guidance_scale_input = gr.Slider(label="Guidance Scale", minimum=1.0, maximum=10.0, value=3.0, step=0.1) |
|
|
|
|
|
generate_button = gr.Button("Generate Image") |
|
|
|
with gr.Column(): |
|
|
|
output_image = gr.Image(label="Output Image") |
|
|
|
|
|
generate_button.click( |
|
generate_image, |
|
inputs=[prompt_input, image_input_1, image_input_2, image_input_3, height_input, width_input, guidance_scale_input], |
|
outputs=output_image |
|
) |
|
|
|
|
|
demo.launch() |