File size: 2,381 Bytes
69c5ed3 |
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 |
import numpy as np
import gradio as gr
from pipeline_onnx_stable_diffusion_instruct_pix2pix import OnnxStableDiffusionInstructPix2PixPipeline
from diffusers import DDIMScheduler, EulerAncestralDiscreteScheduler, LMSDiscreteScheduler
def pix2pix(input_img, prompt, guide, iguide, steps, seed):
if seed == -1:
generator=None
else:
generator=np.random
generator.seed(seed)
img = pipe(
prompt=prompt,
image=input_img,
num_inference_steps=steps,
guidance_scale=guide,
image_guidance_scale=iguide,
generator=generator).images[0]
return img
if __name__ == "__main__":
model="./model/ip2p-base-fp16-vae_ft_mse-autoslicing"
pipe = OnnxStableDiffusionInstructPix2PixPipeline.from_pretrained(model, provider="DmlExecutionProvider", safety_checker=None)
pipe.scheduler=EulerAncestralDiscreteScheduler.from_pretrained(model, subfolder="scheduler")
demo=gr.Interface(pix2pix, gr.Image(shape=(512,512)), "image")
title="ONNX Instruct Pix 2 Pix"
css = "#imgbox img {max-width: 100% !important; }\n#imgbox div {height: auto;}"
with gr.Blocks(title=title, css=css) as demo:
with gr.Row():
with gr.Column(scale=1):
seed = gr.Number(value=-1, label="seed", precision=0)
with gr.Column(scale=14):
prompt = gr.Textbox(value="", lines=2, label="prompt")
with gr.Row():
with gr.Column(scale=1):
guide = gr.Slider(1.1, 10, value=3, step=0.1, label="Text guidance")
with gr.Column(scale=1):
iguide = gr.Slider(1, 10, value=1.1, step=0.1, label="Image guidance")
with gr.Column(scale=1):
steps = gr.Slider(10,100, value=30, step=1, label="Steps")
with gr.Row():
with gr.Column(scale=1):
input_img = gr.Image(label="Input Image", type="pil", elem_id="imgbox").style(width=600,height=600)
with gr.Column(scale=1):
image_out = gr.Image(value=None, label="Output Image", elem_id="imgbox").style(width=600,height=600)
gen_btn = gr.Button("Generate", variant="primary", elem_id="gen_button")
inputs=[input_img, prompt, guide, iguide, steps, seed]
gen_btn.click(fn=pix2pix, inputs=inputs, outputs=[image_out])
demo.launch()
|